Index: kernel/arch/sparc64/include/boot/boot.h
===================================================================
--- kernel/arch/sparc64/include/boot/boot.h	(revision f0f05add8ff9556055682fa6275acad5afad8e81)
+++ kernel/arch/sparc64/include/boot/boot.h	(revision 79f119b9e03afca087e6fef2c56a7fabb01c8cc1)
@@ -76,4 +76,5 @@
  */
 typedef struct {
+	uintptr_t physmem_start;
 	taskmap_t taskmap;
 	memmap_t memmap;
Index: kernel/arch/sparc64/include/mm/page.h
===================================================================
--- kernel/arch/sparc64/include/mm/page.h	(revision f0f05add8ff9556055682fa6275acad5afad8e81)
+++ kernel/arch/sparc64/include/mm/page.h	(revision 79f119b9e03afca087e6fef2c56a7fabb01c8cc1)
@@ -49,6 +49,8 @@
 #include <genarch/mm/page_ht.h>
 
-#define KA2PA(x)	((uintptr_t) (x))
-#define PA2KA(x)	((uintptr_t) (x))
+extern uintptr_t physmem_base;
+
+#define KA2PA(x)	(((uintptr_t) (x)) + physmem_base)
+#define PA2KA(x)	(((uintptr_t) (x)) - physmem_base)
 
 union page_address {
Index: kernel/arch/sparc64/include/trap/mmu.h
===================================================================
--- kernel/arch/sparc64/include/trap/mmu.h	(revision f0f05add8ff9556055682fa6275acad5afad8e81)
+++ kernel/arch/sparc64/include/trap/mmu.h	(revision 79f119b9e03afca087e6fef2c56a7fabb01c8cc1)
@@ -112,8 +112,7 @@
 	bz 0f						! page address is zero
 
-	or %g3, (TTE_CV|TTE_CP|TTE_P|TTE_W), %g2	! 8K pages are the default (encoded as 0)
-	mov 1, %g3
-	sllx %g3, TTE_V_SHIFT, %g3
-	or %g2, %g3, %g2
+	sethi %hi(kernel_8k_tlb_data_template), %g2
+	ldx [%g2 + %lo(kernel_8k_tlb_data_template)], %g2
+	or %g3, %g2, %g2
 	stxa %g2, [%g0] ASI_DTLB_DATA_IN_REG		! identity map the kernel page
 	retry
