]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/BaseLib/Ipf/CpuFlushTlb.s
1.Fix .global issue in GAS (EdkT207).
[mirror_edk2.git] / MdePkg / Library / BaseLib / Ipf / CpuFlushTlb.s
CommitLineData
baa1b55e 1/// @file\r
2/// CpuFlushTlb() function for Itanium-based architecture.\r
3///\r
4/// Copyright (c) 2006, Intel Corporation\r
5/// All rights reserved. This program and the accompanying materials\r
6/// are licensed and made available under the terms and conditions of the BSD License\r
7/// which accompanies this distribution. The full text of the license may be found at\r
8/// http://opensource.org/licenses/bsd-license.php\r
9///\r
10/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12///\r
13/// Module Name: CpuFlushTlb.s\r
14///\r
15///\r
16\r
17.auto\r
18.text\r
19\r
b7089db1 20.globl PalCallStatic\r
18c319ae 21.type PalCallStatic, @function\r
22\r
baa1b55e 23.proc CpuFlushTlb\r
24.type CpuFlushTlb, @function\r
25CpuFlushTlb::\r
4cbd2175 26 alloc loc0 = ar.pfs, 0, 3, 5, 0\r
18c319ae 27 mov out0 = 0\r
28 mov out1 = 6\r
29 mov out2 = 0\r
30 mov out3 = 0\r
18c319ae 31 mov loc1 = b0\r
4cbd2175 32 mov out4 = 0\r
33 brl.call.sptk b0 = PalCallStatic\r
34 mov loc2 = psr // save PSR\r
18c319ae 35 mov ar.pfs = loc0\r
36 extr.u r14 = r10, 32, 32 // r14 <- count1\r
4cbd2175 37 rsm 1 << 14 // Disable interrupts\r
18c319ae 38 extr.u r15 = r11, 32, 32 // r15 <- stride1\r
39 extr.u r10 = r10, 0, 32 // r10 <- count2\r
4cbd2175 40 add r10 = -1, r10\r
18c319ae 41 extr.u r11 = r11, 0, 32 // r11 <- stride2\r
42 br.cond.sptk LoopPredicate\r
43LoopOuter:\r
44 mov ar.lc = r10 // LC <- count2\r
45 mov ar.ec = r0 // EC <- 0\r
46Loop:\r
47 ptc.e r9\r
48 add r9 = r11, r9 // r9 += stride2\r
49 br.ctop.sptk Loop\r
50 add r9 = r15, r9 // r9 += stride1\r
51LoopPredicate:\r
4cbd2175 52 cmp.ne p6 = r0, r14 // count1 == 0?\r
18c319ae 53 add r14 = -1, r14\r
54(p6) br.cond.sptk LoopOuter\r
4cbd2175 55 mov psr.l = loc2\r
18c319ae 56 mov b0 = loc1\r
baa1b55e 57 br.ret.sptk.many b0\r
58.endp\r