sethi   %hi(sparc64_kern_pri_context), %g2
                ldx     [%g2 + %lo(sparc64_kern_pri_context)], %g3
                stxa    %g3, [%l4] ASI_DMMU
-               flush   %l6
+               sethi   %hi(KERNBASE), %l4
+               flush   %l4
                wr      %g0, ASI_AIUS, %asi
 2:             wrpr    %g0, 0x0, %tl
                mov     %g4, %l4
                sethi   %hi(sparc64_kern_pri_context), %g2
                ldx     [%g2 + %lo(sparc64_kern_pri_context)], %g3
                stxa    %g3, [%l4] ASI_DMMU
-               flush   %l6
+               sethi   %hi(KERNBASE), %l4
+               flush   %l4
 
                mov     ASI_AIUS, %l7
 2:             mov     %g4, %l4
 
 #include <asm/page.h>
 #include <asm/pgtable.h>
 #include <asm/spitfire.h>
+#include <asm/head.h>
 
        /* What we used to do was lock a TLB entry into a specific
         * TLB slot, clear the page with interrupts disabled, then
        wrpr            %o4, PSTATE_IE, %pstate
        stxa            %o0, [%g3] ASI_DMMU
        stxa            %g1, [%g0] ASI_DTLB_DATA_IN
-       flush           %g6
+       sethi           %hi(KERNBASE), %g1
+       flush           %g1
        wrpr            %o4, 0x0, %pstate
 
        mov             1, %o4
 
         mov            0x50, %g3
        stxa            %g0, [%g3] ASI_DMMU_DEMAP
        stxa            %g0, [%g3] ASI_IMMU_DEMAP
+       sethi           %hi(KERNBASE), %g3
+       flush           %g3
        retl
-        flush          %g6
-       nop
+        nop
        nop
        nop
        nop
        brnz,pt         %o1, 1b
         nop
        stxa            %g2, [%o4] ASI_DMMU
-       flush           %g6
+       sethi           %hi(KERNBASE), %o4
+       flush           %o4
        retl
         wrpr           %g7, 0x0, %pstate
        nop
        membar          #Sync
        brnz,pt         %o3, 1b
         sub            %o3, %o4, %o3
-2:     retl
-        flush          %g6
+2:     sethi           %hi(KERNBASE), %o3
+       flush           %o3
+       retl
+        nop
 
 __spitfire_flush_tlb_mm_slow:
        rdpr            %pstate, %g1
        stxa            %g0, [%g3] ASI_IMMU_DEMAP
        flush           %g6
        stxa            %g2, [%o1] ASI_DMMU
-       flush           %g6
+       sethi           %hi(KERNBASE), %o1
+       flush           %o1
        retl
         wrpr           %g1, 0, %pstate
 
        .previous
 
        /* Cheetah specific versions, patched at boot time. */
-__cheetah_flush_tlb_mm: /* 18 insns */
+__cheetah_flush_tlb_mm: /* 19 insns */
        rdpr            %pstate, %g7
        andn            %g7, PSTATE_IE, %g2
        wrpr            %g2, 0x0, %pstate
        stxa            %g0, [%g3] ASI_DMMU_DEMAP
        stxa            %g0, [%g3] ASI_IMMU_DEMAP
        stxa            %g2, [%o2] ASI_DMMU
-       flush           %g6
+       sethi           %hi(KERNBASE), %o2
+       flush           %o2
        wrpr            %g0, 0, %tl
        retl
         wrpr           %g7, 0x0, %pstate
 
-__cheetah_flush_tlb_pending:   /* 26 insns */
+__cheetah_flush_tlb_pending:   /* 27 insns */
        /* %o0 = context, %o1 = nr, %o2 = vaddrs[] */
        rdpr            %pstate, %g7
        sllx            %o1, 3, %o1
        brnz,pt         %o1, 1b
         nop
        stxa            %g2, [%o4] ASI_DMMU
-       flush           %g6
+       sethi           %hi(KERNBASE), %o4
+       flush           %o4
        wrpr            %g0, 0, %tl
        retl
         wrpr           %g7, 0x0, %pstate
        sethi           %hi(__cheetah_flush_tlb_mm), %o1
        or              %o1, %lo(__cheetah_flush_tlb_mm), %o1
        call            cheetah_patch_one
-        mov            18, %o2
+        mov            19, %o2
 
        sethi           %hi(__flush_tlb_pending), %o0
        or              %o0, %lo(__flush_tlb_pending), %o0
        sethi           %hi(__cheetah_flush_tlb_pending), %o1
        or              %o1, %lo(__cheetah_flush_tlb_pending), %o1
        call            cheetah_patch_one
-        mov            26, %o2
+        mov            27, %o2
 
 #ifdef DCACHE_ALIASING_POSSIBLE
        sethi           %hi(__flush_dcache_page), %o0