summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Drivers/CpuDxe/Arm/ExceptionSupport.S
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPkg/Drivers/CpuDxe/Arm/ExceptionSupport.S')
-rw-r--r--ArmPkg/Drivers/CpuDxe/Arm/ExceptionSupport.S9
1 files changed, 5 insertions, 4 deletions
diff --git a/ArmPkg/Drivers/CpuDxe/Arm/ExceptionSupport.S b/ArmPkg/Drivers/CpuDxe/Arm/ExceptionSupport.S
index 3433b99cd4..673b931297 100644
--- a/ArmPkg/Drivers/CpuDxe/Arm/ExceptionSupport.S
+++ b/ArmPkg/Drivers/CpuDxe/Arm/ExceptionSupport.S
@@ -60,6 +60,7 @@ GCC_ASM_EXPORT(AsmCommonExceptionEntry)
GCC_ASM_EXPORT(CommonCExceptionHandler)
.text
+.syntax unified
#if !defined(__APPLE__)
.fpu neon @ makes vpush/vpop assemble
#endif
@@ -223,9 +224,9 @@ ASM_PFX(AsmCommonExceptionEntry):
and R3, R1, #0x1f @ Check CPSR to see if User or System Mode
cmp R3, #0x1f @ if ((CPSR == 0x10) || (CPSR == 0x1f))
cmpne R3, #0x10 @
- stmeqed R2, {lr}^ @ save unbanked lr
+ stmdaeq R2, {lr}^ @ save unbanked lr
@ else
- stmneed R2, {lr} @ save SVC lr
+ stmdane R2, {lr} @ save SVC lr
ldr R5, [SP, #0x58] @ PC is the LR pushed by srsfd
@@ -290,9 +291,9 @@ CommonCExceptionHandler (
and R1, R1, #0x1f @ Check to see if User or System Mode
cmp R1, #0x1f @ if ((CPSR == 0x10) || (CPSR == 0x1f))
cmpne R1, #0x10 @
- ldmeqed R2, {lr}^ @ restore unbanked lr
+ ldmibeq R2, {lr}^ @ restore unbanked lr
@ else
- ldmneed R3, {lr} @ restore SVC lr, via ldmfd SP!, {LR}
+ ldmibne R3, {lr} @ restore SVC lr, via ldmfd SP!, {LR}
ldmfd SP!,{R0-R12} @ Restore general purpose registers
@ Exception handler can not change SP