]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/Ipf/CpuFlushTlb.s
1. Updated SetJump() and LongJump() for IPF
[mirror_edk2.git] / MdePkg / Library / BaseLib / Ipf / CpuFlushTlb.s
index 608830496c99674aa801f4735eddb91327e52066..c50eeb89f3378c809f95cf76bab896ab4e979cc7 100644 (file)
 .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