prom_unmap_name:
        .asciz  "unmap"
 prom_sun4v_name:
-       .asciz  "SUNW,sun4v"
+       .asciz  "sun4v"
        .align  4
 prom_root_compatible:
        .skip   64
        or      %g1, %lo(prom_root_compatible), %g1
        sethi   %hi(prom_sun4v_name), %g7
        or      %g7, %lo(prom_sun4v_name), %g7
-       mov     10, %g3
+       mov     5, %g3
 1:     ldub    [%g7], %g2
        ldub    [%g1], %g4
        cmp     %g2, %g4
         nop
 
 sun4u_init:
+       BRANCH_IF_SUN4V(g1, sun4v_init)
+
        /* Set ctx 0 */
        mov             PRIMARY_CONTEXT, %g7
-
-661:   stxa            %g0, [%g7] ASI_DMMU
-       .section        .sun4v_1insn_patch, "ax"
-       .word           661b
-       stxa            %g0, [%g7] ASI_MMU
-       .previous
-
+       stxa            %g0, [%g7] ASI_DMMU
        membar          #Sync
 
        mov             SECONDARY_CONTEXT, %g7
+       stxa            %g0, [%g7] ASI_DMMU
+       membar  #Sync
 
-661:   stxa            %g0, [%g7] ASI_DMMU
-       .section        .sun4v_1insn_patch, "ax"
-       .word           661b
+       ba,pt           %xcc, sun4u_continue
+        nop
+
+sun4v_init:
+       /* Set ctx 0 */
+       mov             PRIMARY_CONTEXT, %g7
        stxa            %g0, [%g7] ASI_MMU
-       .previous
+       membar          #Sync
 
-       membar  #Sync
+       mov             SECONDARY_CONTEXT, %g7
+       stxa            %g0, [%g7] ASI_MMU
+       membar          #Sync
+       ba,pt           %xcc, niagara_tlb_fixup
+        nop
 
-       BRANCH_IF_SUN4V(g1, niagara_tlb_fixup)
+sun4u_continue:
        BRANCH_IF_ANY_CHEETAH(g1, g7, cheetah_tlb_fixup)
 
        ba,pt   %xcc, spitfire_tlb_fixup