summaryrefslogtreecommitdiff
path: root/ArmPkg/Library/ArmLib/Common/ArmLibSupport.asm
diff options
context:
space:
mode:
authorandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-03-05 02:15:41 +0000
committerandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-03-05 02:15:41 +0000
commit0416278cfdd3d657a828fbb977bcd736dd4962a8 (patch)
tree9a4e888725bcce06c64678f02794bf4142c8c4ec /ArmPkg/Library/ArmLib/Common/ArmLibSupport.asm
parent41d478023f9fcc9a27bfc006cbc16b94d85ff98c (diff)
downloadedk2-platforms-0416278cfdd3d657a828fbb977bcd736dd4962a8.tar.xz
Added FIQ interrupt primatives. Update exception handler to disable/reenable FIQ when updating in case debug agent library is using FIQ.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10197 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Library/ArmLib/Common/ArmLibSupport.asm')
-rw-r--r--ArmPkg/Library/ArmLib/Common/ArmLibSupport.asm25
1 files changed, 25 insertions, 0 deletions
diff --git a/ArmPkg/Library/ArmLib/Common/ArmLibSupport.asm b/ArmPkg/Library/ArmLib/Common/ArmLibSupport.asm
index 630c72fdee..ca8d980b0d 100644
--- a/ArmPkg/Library/ArmLib/Common/ArmLibSupport.asm
+++ b/ArmPkg/Library/ArmLib/Common/ArmLibSupport.asm
@@ -18,6 +18,9 @@
EXPORT ArmEnableInterrupts
EXPORT ArmDisableInterrupts
EXPORT ArmGetInterruptState
+ EXPORT ArmEnableFiq
+ EXPORT ArmDisableFiq
+ EXPORT ArmGetFiqState
EXPORT ArmInvalidateTlb
EXPORT ArmSetTranslationTableBaseAddress
EXPORT ArmGetTranslationTableBaseAddress
@@ -56,6 +59,28 @@ ArmGetInterruptState
moveq R0,#1
movne R0,#0
bx LR
+
+ArmEnableFiq
+ mrs R0,CPSR
+ bic R0,R0,#0x40 ;Enable IRQ interrupts
+ msr CPSR_c,R0
+ bx LR
+
+ArmDisableFiq
+ mrs R0,CPSR
+ orr R1,R0,#0x40 ;Disable IRQ interrupts
+ msr CPSR_c,R1
+ tst R0,#0x40
+ moveq R0,#1
+ movne R0,#0
+ bx LR
+
+ArmGetFiqState
+ mrs R0,CPSR
+ tst R0,#0x40 ;Check if IRQ is enabled.
+ moveq R0,#1
+ movne R0,#0
+ bx LR
ArmInvalidateTlb
mov r0,#0