Index: kernel/arch/sparc64/src/mm/sun4v/tlb.c
===================================================================
--- kernel/arch/sparc64/src/mm/sun4v/tlb.c	(revision 18baf9c0c35a8ee98eda033f039299251c422462)
+++ kernel/arch/sparc64/src/mm/sun4v/tlb.c	(revision 3da11f37e6b8b0d64576fbe67ae8bf361a41793d)
@@ -1,4 +1,5 @@
 /*
  * Copyright (c) 2005 Jakub Jermar
+ * Copyright (c) 2008 Pavel Rimsky
  * All rights reserved.
  *
@@ -52,4 +53,6 @@
 #include <panic.h>
 #include <arch/asm.h>
+#include <arch/cpu.h>
+#include <arch/mm/pagesize.h>
 
 #ifdef CONFIG_TSB
@@ -518,18 +521,9 @@
 void tlb_invalidate_asid(asid_t asid)
 {
-	tlb_context_reg_t pc_save, ctx;
-	
 	/* switch to nucleus because we are mapped by the primary context */
 	nucleus_enter();
-	
-	ctx.v = pc_save.v = mmu_primary_context_read();
-	ctx.context = asid;
-	mmu_primary_context_write(ctx.v);
-	
-	itlb_demap(TLB_DEMAP_CONTEXT, TLB_DEMAP_PRIMARY, 0);
-	dtlb_demap(TLB_DEMAP_CONTEXT, TLB_DEMAP_PRIMARY, 0);
-	
-	mmu_primary_context_write(pc_save.v);
-	
+	__hypercall_fast4(MMU_DEMAP_CTX, 0, 0, asid,
+		MMU_FLAG_ITLB | MMU_FLAG_DTLB);
+
 	nucleus_leave();
 }
@@ -545,22 +539,13 @@
 {
 	unsigned int i;
-	tlb_context_reg_t pc_save, ctx;
 	
 	/* switch to nucleus because we are mapped by the primary context */
 	nucleus_enter();
-	
-	ctx.v = pc_save.v = mmu_primary_context_read();
-	ctx.context = asid;
-	mmu_primary_context_write(ctx.v);
-	
-	for (i = 0; i < cnt * MMU_PAGES_PER_PAGE; i++) {
-		itlb_demap(TLB_DEMAP_PAGE, TLB_DEMAP_PRIMARY,
-		    page + i * MMU_PAGE_SIZE);
-		dtlb_demap(TLB_DEMAP_PAGE, TLB_DEMAP_PRIMARY,
-		    page + i * MMU_PAGE_SIZE);
-	}
-	
-	mmu_primary_context_write(pc_save.v);
-	
+
+	for (i = 0; i < cnt; i++) {
+		__hypercall_fast5(MMU_DEMAP_PAGE, 0, 0, page, asid,
+			MMU_FLAG_DTLB | MMU_FLAG_ITLB);
+	}
+
 	nucleus_leave();
 }
Index: kernel/arch/sparc64/src/sun4v/asm.S
===================================================================
--- kernel/arch/sparc64/src/sun4v/asm.S	(revision 18baf9c0c35a8ee98eda033f039299251c422462)
+++ kernel/arch/sparc64/src/sun4v/asm.S	(revision 3da11f37e6b8b0d64576fbe67ae8bf361a41793d)
@@ -75,4 +75,3 @@
 	 */
 	wrpr %g0, WSTATE_OTHER(0) | WSTATE_NORMAL(1), %wstate
-
 	done				! jump to userspace
Index: kernel/arch/sparc64/src/trap/sun4v/trap_table.S
===================================================================
--- kernel/arch/sparc64/src/trap/sun4v/trap_table.S	(revision 18baf9c0c35a8ee98eda033f039299251c422462)
+++ kernel/arch/sparc64/src/trap/sun4v/trap_table.S	(revision 3da11f37e6b8b0d64576fbe67ae8bf361a41793d)
@@ -281,5 +281,5 @@
 .global fast_instruction_access_mmu_miss_handler_tl0
 fast_instruction_access_mmu_miss_handler_tl0:
-	/*FAST_INSTRUCTION_ACCESS_MMU_MISS_HANDLER*/
+	FAST_INSTRUCTION_ACCESS_MMU_MISS_HANDLER
 
 /* TT = 0x68, TL = 0, fast_data_access_MMU_miss */
@@ -390,7 +390,7 @@
 .global data_access_exception_tl1
 data_access_exception_tl1:
-	/*wrpr %g0, 1, %tl
+	wrpr %g0, 1, %tl
 	wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate
-	PREEMPTIBLE_HANDLER data_access_exception*/
+	PREEMPTIBLE_HANDLER data_access_exception
 
 /* TT = 0x32, TL > 0, data_access_error */
Index: kernel/generic/src/main/kinit.c
===================================================================
--- kernel/generic/src/main/kinit.c	(revision 18baf9c0c35a8ee98eda033f039299251c422462)
+++ kernel/generic/src/main/kinit.c	(revision 3da11f37e6b8b0d64576fbe67ae8bf361a41793d)
@@ -165,6 +165,4 @@
 	interrupts_enable();
 	
-//MH
-#if defined (SUN4U)
 	/*
 	 * Create user tasks, load RAM disk images.
@@ -218,5 +216,5 @@
 		}
 	}
-	
+
 	/*
 	 * Run user tasks.
@@ -226,6 +224,5 @@
 			program_ready(&programs[i]);
 	}
-	
-#endif
+
 #ifdef CONFIG_KCONSOLE
 	if (!stdin) {
