Index: kernel/arch/sparc64/src/mm/sun4u/tlb.c
===================================================================
--- kernel/arch/sparc64/src/mm/sun4u/tlb.c	(revision 1f5714e5345e349ecb06ffbe3ed854e2db5db9ac)
+++ kernel/arch/sparc64/src/mm/sun4u/tlb.c	(revision 0e783940f8c24e4197821e3691f722c9d01c5cc3)
@@ -247,4 +247,5 @@
 	size_t index;
 	pte_t *t;
+	as_t *as = AS;
 
 	page_8k = (uint64_t) tag.vpn << MMU_PAGE_WIDTH;
@@ -258,5 +259,6 @@
 			    "Dereferencing NULL pointer.");
 		} else if (page_8k >= end_of_identity) {
-			/* Kernel non-identity, fall through. */
+			/* Kernel non-identity. */
+			as = AS_KERNEL;
 		} else {
 			do_fast_data_access_mmu_miss_fault(istate, tag,
@@ -265,5 +267,5 @@
 	}
 
-	t = page_mapping_find(AS, page_16k, true);
+	t = page_mapping_find(as, page_16k, true);
 	if (t) {
 		/*
@@ -280,5 +282,5 @@
 		 * Forward the page fault to the address space page fault
 		 * handler.
-		 */		
+		 */
 		if (as_page_fault(page_16k, PF_ACCESS_READ, istate) ==
 		    AS_PF_FAULT) {
@@ -302,9 +304,13 @@
 	size_t index;
 	pte_t *t;
+	as_t *as = AS;
 
 	page_16k = ALIGN_DOWN((uint64_t) tag.vpn << MMU_PAGE_WIDTH, PAGE_SIZE);
 	index = tag.vpn % MMU_PAGES_PER_PAGE;	/* 16K-page emulation */
 
-	t = page_mapping_find(AS, page_16k, true);
+	if (tag.context == ASID_KERNEL)
+		as = AS_KERNEL;
+
+	t = page_mapping_find(as, page_16k, true);
 	if (t && PTE_WRITABLE(t)) {
 		/*
