Index: kernel/arch/amd64/Makefile.inc
===================================================================
--- kernel/arch/amd64/Makefile.inc	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
+++ kernel/arch/amd64/Makefile.inc	(revision 2ff98768296a05bba68ab5773c5686fef52b51cb)
@@ -32,5 +32,5 @@
 
 FPU_NO_CFLAGS = -mno-sse -mno-sse2
-CMN1 = -m64 -mcmodel=large -mno-red-zone -fno-unwind-tables -fno-omit-frame-pointer
+CMN1 = -m64 -mcmodel=kernel -mno-red-zone -fno-unwind-tables -fno-omit-frame-pointer
 GCC_CFLAGS += $(CMN1)
 ICC_CFLAGS += $(CMN1)
Index: kernel/arch/amd64/include/arch/mm/km.h
===================================================================
--- kernel/arch/amd64/include/arch/mm/km.h	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
+++ kernel/arch/amd64/include/arch/mm/km.h	(revision 2ff98768296a05bba68ab5773c5686fef52b51cb)
@@ -38,9 +38,9 @@
 #include <typedefs.h>
 
-#define KM_AMD64_IDENTITY_START		UINT64_C(0xffff800000000000)
-#define KM_AMD64_IDENTITY_SIZE		UINT64_C(0x0000400000000000)
+#define KM_AMD64_IDENTITY_START		UINT64_C(0xffffffff80000000)
+#define KM_AMD64_IDENTITY_SIZE		UINT64_C(0x0000000080000000)
 
-#define KM_AMD64_NON_IDENTITY_START	UINT64_C(0xffffc00000000000)
-#define KM_AMD64_NON_IDENTITY_SIZE	UINT64_C(0x0000400000000000)
+#define KM_AMD64_NON_IDENTITY_START	UINT64_C(0xffff800000000000)
+#define KM_AMD64_NON_IDENTITY_SIZE	UINT64_C(0x00007fff80000000)
 
 extern void km_identity_arch_init(void);
Index: kernel/arch/amd64/include/arch/mm/page.h
===================================================================
--- kernel/arch/amd64/include/arch/mm/page.h	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
+++ kernel/arch/amd64/include/arch/mm/page.h	(revision 2ff98768296a05bba68ab5773c5686fef52b51cb)
@@ -44,11 +44,11 @@
 #ifndef __ASM__
 
-#define KA2PA(x)  (((uintptr_t) (x)) - UINT64_C(0xffff800000000000))
-#define PA2KA(x)  (((uintptr_t) (x)) + UINT64_C(0xffff800000000000))
+#define KA2PA(x)  (((uintptr_t) (x)) - UINT64_C(0xffffffff80000000))
+#define PA2KA(x)  (((uintptr_t) (x)) + UINT64_C(0xffffffff80000000))
 
 #else /* __ASM__ */
 
-#define KA2PA(x)  ((x) - 0xffff800000000000)
-#define PA2KA(x)  ((x) + 0xffff800000000000)
+#define KA2PA(x)  ((x) - 0xffffffff80000000)
+#define PA2KA(x)  ((x) + 0xffffffff80000000)
 
 #endif /* __ASM__ */
Index: kernel/arch/amd64/src/boot/multiboot.S
===================================================================
--- kernel/arch/amd64/src/boot/multiboot.S	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
+++ kernel/arch/amd64/src/boot/multiboot.S	(revision 2ff98768296a05bba68ab5773c5686fef52b51cb)
@@ -428,17 +428,12 @@
 	
 	/* Call arch_pre_main(multiboot_eax, multiboot_ebx) */
-	xorq %rdi, %rdi
 	movl multiboot_eax, %edi
-	xorq %rsi, %rsi
 	movl multiboot_ebx, %esi
-	
-	movabsq $arch_pre_main, %rax
-	callq *%rax
-	
+	callq arch_pre_main
+
 	long_status $status_main
 	
 	/* Call main_bsp() */
-	movabsq $main_bsp, %rax
-	call *%rax
+	callq main_bsp 
 	
 	/* Not reached */
@@ -638,5 +633,9 @@
 	.quad ptl_2_6g + (PTL_WRITABLE | PTL_PRESENT)
 	.quad ptl_2_7g + (PTL_WRITABLE | PTL_PRESENT)
-	.fill 504, 8, 0
+	.fill 502, 8, 0
+	/* Mapping of [0; 2G) at -2G */
+	.quad ptl_2_0g + (PTL_WRITABLE | PTL_PRESENT)
+	.quad ptl_2_1g + (PTL_WRITABLE | PTL_PRESENT)
+
 
 .align 4096
@@ -644,7 +643,6 @@
 ptl_0:
 	.quad ptl_1 + (PTL_WRITABLE | PTL_PRESENT)
-	.fill 255, 8, 0
+	.fill 510, 8, 0
 	.quad ptl_1 + (PTL_WRITABLE | PTL_PRESENT)
-	.fill 255, 8, 0
 
 .section K_DATA_START, "aw", @progbits
Index: kernel/arch/amd64/src/boot/multiboot2.S
===================================================================
--- kernel/arch/amd64/src/boot/multiboot2.S	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
+++ kernel/arch/amd64/src/boot/multiboot2.S	(revision 2ff98768296a05bba68ab5773c5686fef52b51cb)
@@ -244,15 +244,10 @@
 	
 	/* Call arch_pre_main(multiboot_eax, multiboot_ebx) */
-	xorq %rdi, %rdi
 	movl multiboot_eax, %edi
-	xorq %rsi, %rsi
 	movl multiboot_ebx, %esi
-	
-	movabsq $arch_pre_main, %rax
-	callq *%rax
+	callq arch_pre_main 
 	
 	/* Call main_bsp() */
-	movabsq $main_bsp, %rax
-	call *%rax
+	callq main_bsp 
 	
 	/* Not reached */
Index: kernel/arch/amd64/src/mm/km.c
===================================================================
--- kernel/arch/amd64/src/mm/km.c	(revision b2fa1204c76e1eaec329888181d281aac04ed61e)
+++ kernel/arch/amd64/src/mm/km.c	(revision 2ff98768296a05bba68ab5773c5686fef52b51cb)
@@ -40,5 +40,5 @@
 {
 	config.identity_base = KM_AMD64_IDENTITY_START;
-	config.identity_size = KM_AMD64_IDENTITY_SIZE;	
+	config.identity_size = KM_AMD64_IDENTITY_SIZE;
 }
 
