.type PalCallStatic, @function\r
.regstk 5, 0, 0, 0\r
PalCallStatic::\r
- cmp.eq p6 = r0, in0\r
+ cmp.eq p15 = in0, r0\r
mov r31 = in4\r
mov r8 = ip\r
-(p6) mov in0 = ar.k5\r
- add r8 = (PalProcReturn - PalCallStatic), r8\r
- mov in4 = b0\r
+\r
+(p15) mov in0 = ar.k5\r
+ add r8 = (_PalProcReturn - PalCallStatic), r8\r
mov r30 = in3\r
- mov r29 = in2\r
+\r
+ mov in4 = psr\r
+ mov in3 = b0\r
mov b7 = in0\r
- mov in3 = psr\r
+\r
rsm 1 << 14 // Disable interrupts\r
+ mov r29 = in2\r
mov r28 = in1\r
- mov in0 = 256\r
+\r
mov b0 = r8\r
- br.cond.sptk b7\r
-PalProcReturn:\r
- mov psr.l = in3\r
- cmp.eq p6 = in0, in1 // in1 == PAL_COPY_PAL?\r
-(p6) cmp.eq p6 = r0, r8 // Status == Success?\r
-(p6) add in2 = r9, in2\r
-(p6) mov ar.k5 = in2\r
- mov b0 = in4\r
+ br.cond.sptk.many b7\r
+\r
+_PalProcReturn:\r
+ mov psr.l = in4\r
+ mov b0 = in3\r
br.ret.sptk.many b0\r
.endp PalCallStatic\r
-<?xml version="1.0" encoding="UTF-8"?>\r
+<?xml version="1.0" encoding="UTF-8"?>\r
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0">\r
<MsaHeader>\r
<ModuleName>BaseLib</ModuleName>\r
<Filename SupArchList="IPF">Ipf/Synchronization.c</Filename>\r
<Filename SupArchList="IPF">Ipf/CpuPause.s</Filename>\r
<Filename SupArchList="IPF">Ipf/CpuFlushTlb.s</Filename>\r
+ <Filename SupArchList="IPF">Ipf/GetInterruptState.s</Filename>\r
<Filename SupArchList="EBC">Math64.c</Filename>\r
<Filename SupArchList="EBC">Unaligned.c</Filename>\r
<Filename SupArchList="EBC">Ebc/SwitchStack.c</Filename>\r
_enable ();\r
}\r
\r
-/**\r
- Retrieves the current CPU interrupt state.\r
-\r
- Retrieves the current CPU interrupt state. Returns TRUE is interrupts are\r
- currently enabled. Otherwise returns FALSE.\r
-\r
- @retval TRUE CPU interrupts are enabled.\r
- @retval FALSE CPU interrupts are disabled.\r
-\r
-**/\r
-BOOLEAN\r
-EFIAPI\r
-GetInterruptState (\r
- VOID\r
- )\r
-{\r
- return FALSE;\r
-}\r
-\r
/**\r
Enables CPU interrupts for the smallest window required to capture any\r
pending interrupts.\r
--- /dev/null
+/// @file\r
+/// Retrieve of the interrupt state of the running processor for the Itanium\r
+/// architecture.\r
+///\r
+/// Copyright (c) 2006, Intel Corporation\r
+/// All rights reserved. This program and the accompanying materials\r
+/// are licensed and made available under the terms and conditions of the BSD License\r
+/// which accompanies this distribution. The full text of the license may be found at\r
+/// http://opensource.org/licenses/bsd-license.php\r
+///\r
+/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+///\r
+/// Module Name: GetInterruptState.s\r
+///\r
+///\r
+\r
+.auto\r
+.text\r
+\r
+.proc GetInterruptState\r
+.type GetInterruptState, @function\r
+GetInterruptState::\r
+ mov r8 = psr\r
+ dep.z r8 = r8, 14, 1\r
+ br.ret.sptk.many b0\r
+.endp GetInterruptState\r
.type PalCallStatic, @function\r
.regstk 5, 0, 0, 0\r
PalCallStatic::\r
- cmp.eq p6 = r0, in0\r
+ cmp.eq p15 = in0, r0\r
mov r31 = in4\r
mov r8 = ip\r
-(p6) mov in0 = ar.k5\r
- add r8 = (PalProcReturn - PalCallStatic), r8\r
- mov in4 = b0\r
+\r
+(p15) mov in0 = ar.k5\r
+ add r8 = (_PalProcReturn - PalCallStatic), r8\r
mov r30 = in3\r
- mov r29 = in2\r
+\r
+ mov in4 = psr\r
+ mov in3 = b0\r
mov b7 = in0\r
- mov in3 = psr\r
+\r
rsm 1 << 14 // Disable interrupts\r
+ mov r29 = in2\r
mov r28 = in1\r
- mov in0 = 256\r
+\r
mov b0 = r8\r
- br.cond.sptk b7\r
-PalProcReturn:\r
- mov psr.l = in3\r
- cmp.eq p6 = in0, in1 // in1 == PAL_COPY_PAL?\r
-(p6) cmp.eq p6 = r0, r8 // Status == Success?\r
-(p6) add in2 = r9, in2\r
-(p6) mov ar.k5 = in2\r
- mov b0 = in4\r
+ br.cond.sptk.many b7\r
+\r
+_PalProcReturn:\r
+ mov psr.l = in4\r
+ mov b0 = in3\r
br.ret.sptk.many b0\r
.endp PalCallStatic\r
\r
do {\r
OriginalValue = *Value;\r
- } while (OriginalValue == InternalSyncCompareExchange32 (\r
+ } while (OriginalValue != InternalSyncCompareExchange32 (\r
Value,\r
OriginalValue,\r
OriginalValue + 1\r
\r
do {\r
OriginalValue = *Value;\r
- } while (OriginalValue == InternalSyncCompareExchange32 (\r
+ } while (OriginalValue != InternalSyncCompareExchange32 (\r
Value,\r
OriginalValue,\r
OriginalValue - 1\r
.type PalCallStatic, @function\r
.regstk 5, 0, 0, 0\r
PalCallStatic::\r
- cmp.eq p6 = r0, in0\r
+ cmp.eq p15 = in0, r0\r
mov r31 = in4\r
mov r8 = ip\r
-(p6) mov in0 = ar.k5\r
- add r8 = (PalProcReturn - PalCallStatic), r8\r
- mov in4 = b0\r
+\r
+(p15) mov in0 = ar.k5\r
+ add r8 = (_PalProcReturn - PalCallStatic), r8\r
mov r30 = in3\r
- mov r29 = in2\r
+\r
+ mov in4 = psr\r
+ mov in3 = b0\r
mov b7 = in0\r
- mov in3 = psr\r
+\r
rsm 1 << 14 // Disable interrupts\r
+ mov r29 = in2\r
mov r28 = in1\r
- mov in0 = 256\r
+\r
mov b0 = r8\r
- br.cond.sptk b7\r
-PalProcReturn:\r
- mov psr.l = in3\r
- cmp.eq p6 = in0, in1 // in1 == PAL_COPY_PAL?\r
-(p6) cmp.eq p6 = r0, r8 // Status == Success?\r
-(p6) add in2 = r9, in2\r
-(p6) mov ar.k5 = in2\r
- mov b0 = in4\r
+ br.cond.sptk.many b7\r
+\r
+_PalProcReturn:\r
+ mov psr.l = in4\r
+ mov b0 = in3\r
br.ret.sptk.many b0\r
.endp PalCallStatic\r