]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/Ipf/CpuFlushTlb.s
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2589 6f19259b...
[mirror_edk2.git] / MdePkg / Library / BaseLib / Ipf / CpuFlushTlb.s
index 608830496c99674aa801f4735eddb91327e52066..520c51f6ba7063d1bb6d07bc8c9f3df3ab34b910 100644 (file)
 .auto\r
 .text\r
 \r
-.global PalCallStatic\r
+.globl PalCallStatic\r
 .type   PalCallStatic, @function\r
 \r
 .proc   CpuFlushTlb\r
 .type   CpuFlushTlb, @function\r
 CpuFlushTlb::\r
-        alloc               loc0 = ar.pfs, 0, 2, 5, 0\r
+        alloc               loc0 = ar.pfs, 0, 3, 5, 0\r
         mov                 out0 = 0\r
         mov                 out1 = 6\r
         mov                 out2 = 0\r
         mov                 out3 = 0\r
-        mov                 out4 = 0\r
         mov                 loc1 = b0\r
-        br.call.sptk        b0  = PalCallStatic\r
-        rsm                 1 << 14                 // Disable interrupts\r
+        mov                 out4 = 0\r
+        brl.call.sptk       b0  = PalCallStatic\r
+        mov                 loc2 = psr              // save PSR\r
         mov                 ar.pfs = loc0\r
         extr.u              r14 = r10, 32, 32       // r14 <- count1\r
+        rsm                 1 << 14                 // Disable interrupts\r
         extr.u              r15 = r11, 32, 32       // r15 <- stride1\r
         extr.u              r10 = r10, 0, 32        // r10 <- count2\r
-        mov                 loc0 = psr\r
+        add                 r10 = -1, r10\r
         extr.u              r11 = r11, 0, 32        // r11 <- stride2\r
         br.cond.sptk        LoopPredicate\r
 LoopOuter:\r
@@ -48,10 +49,10 @@ Loop:
         br.ctop.sptk        Loop\r
         add                 r9 = r15, r9            // r9 += stride1\r
 LoopPredicate:\r
-        cmp.ne              p6, p7 = r0, r14        // count1 == 0?\r
+        cmp.ne              p6 = r0, r14            // count1 == 0?\r
         add                 r14 = -1, r14\r
 (p6)    br.cond.sptk        LoopOuter\r
-        mov                 psr.l = loc0\r
+        mov                 psr.l = loc2\r
         mov                 b0  = loc1\r
         br.ret.sptk.many    b0\r
 .endp\r