summaryrefslogtreecommitdiff
path: root/ArmPkg/Include
diff options
context:
space:
mode:
authorOlivier Martin <olivier.martin@arm.com>2014-03-01 10:57:55 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2014-03-01 10:57:55 +0000
commiteaa84fd553eb2288f1e192430a1800bf45e51c56 (patch)
tree397b52fb27dcd110b755ff4ccc62e9b42667d031 /ArmPkg/Include
parent0ff0e414d13afd3cad5017a98bc1e257f64ed6d4 (diff)
downloadedk2-platforms-eaa84fd553eb2288f1e192430a1800bf45e51c56.tar.xz
ArmPkg: Replace single dead loop.
Several assembler macros use a loop at the label "dead" to trap an error. This is difficult to debug as there is no indication of how one arrived at the loop. This change replaces dead with distinct loops locally in the macro, which means the cause of the hang is detectable to the debugger. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15273 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Include')
-rw-r--r--ArmPkg/Include/AsmMacroIoLibV8.h24
1 files changed, 12 insertions, 12 deletions
diff --git a/ArmPkg/Include/AsmMacroIoLibV8.h b/ArmPkg/Include/AsmMacroIoLibV8.h
index 78a033cb4f..5ab1b5723e 100644
--- a/ArmPkg/Include/AsmMacroIoLibV8.h
+++ b/ArmPkg/Include/AsmMacroIoLibV8.h
@@ -106,24 +106,24 @@ _InitializePrimaryStackEnd:
// Provide the Macro with a safe temp xreg to use.
#define EL1_OR_EL2(SAFE_XREG) \
mrs SAFE_XREG, CurrentEL ;\
- cmp SAFE_XREG, #0x4 ;\
- b.eq 1f ;\
- cmp SAFE_XREG, #0x8 ;\
- b.eq 2f ;\
- b dead ;// We should never get here.
+ cmp SAFE_XREG, #0x8 ;\
+ b.eq 2f ;\
+ cmp SAFE_XREG, #0x4 ;\
+ b.ne . ;// We should never get here
+// EL1 code starts here
// CurrentEL : 0xC = EL3; 8 = EL2; 4 = EL1
// This only selects between EL1 and EL2 and EL3, else we die.
// Provide the Macro with a safe temp xreg to use.
-#define EL1_OR_EL2_OR_EL3(SAFE_XREG) \
+#define EL1_OR_EL2_OR_EL3(SAFE_XREG) \
mrs SAFE_XREG, CurrentEL ;\
+ cmp SAFE_XREG, #0xC ;\
+ b.eq 3f ;\
+ cmp SAFE_XREG, #0x8 ;\
+ b.eq 2f ;\
cmp SAFE_XREG, #0x4 ;\
- b.eq 1f ;\
- cmp SAFE_XREG, #0x8 ;\
- b.eq 2f ;\
- cmp SAFE_XREG, #0xC ;\
- b.eq 3f ;\
- b dead ;// We should never get here.
+ b.ne . ;// We should never get here
+// EL1 code starts here
#else