#define EL1_OR_EL2(SAFE_XREG) \\r
mrs SAFE_XREG, CurrentEL ;\\r
cmp SAFE_XREG, #0x8 ;\\r
+ b.gt . ;\\r
b.eq 2f ;\\r
- cmp SAFE_XREG, #0x4 ;\\r
- b.ne . ;// We should never get here\r
-// EL1 code starts here\r
+ cbnz SAFE_XREG, 1f ;\\r
+ b . ;// We should never get here\r
+\r
\r
// CurrentEL : 0xC = EL3; 8 = EL2; 4 = EL1\r
// This only selects between EL1 and EL2 and EL3, else we die.\r
// Provide the Macro with a safe temp xreg to use.\r
#define EL1_OR_EL2_OR_EL3(SAFE_XREG) \\r
mrs SAFE_XREG, CurrentEL ;\\r
- cmp SAFE_XREG, #0xC ;\\r
- b.eq 3f ;\\r
cmp SAFE_XREG, #0x8 ;\\r
+ b.gt 3f ;\\r
b.eq 2f ;\\r
- cmp SAFE_XREG, #0x4 ;\\r
- b.ne . ;// We should never get here\r
-// EL1 code starts here\r
+ cbnz SAFE_XREG, 1f ;\\r
+ b . ;// We should never get here\r
+\r
#if defined(__clang__)\r
\r
// load x0 with _Data\r