#ifdef CONFIG_ARM_TZ
+.macro ISB_OP reg
+#ifdef CONFIG_ARM_V7
+ isb
+#else
+ mcr p15, 0, lr, c7, c5, 4 @ cp15isb
+#endif
+.endm
+
/**********************************************************************
* Secure and Nonsecure switching stuff
*
// switch to non-secure world
mov r1, #1
mcr p15, 0, r1, c1, c1, 0
- isb
+ ISB_OP r1
mrc p15, 0, r1, c2, c0, 0 @ read CP15_TTB0
stmia r0!, {r1}
// switch to secure world
mov r1, #0
mcr p15, 0, r1, c1, c1, 0
- isb
+ ISB_OP r1
mrc p15, 0, r1, c5, c0, 0 @ read CP15_DFSR
stmia r0!, {r1}
// switch to non-secure world
mov r1, #1
mcr p15, 0, r1, c1, c1, 0
- isb
+ ISB_OP r1
ldmia r0!, {r1}
mcr p15, 0, r1, c2, c0, 0 @ write CP15_TTB0
// switch to secure world
mov r1, #0
mcr p15, 0, r1, c1, c1, 0
- isb
+ ISB_OP r1
xxx
#endif
.macro SWITCH_TO_NONSECURE_MODE
mov lr, #0xf
mcr p15, 0, lr, c1, c1, 0
- isb
+ ISB_OP lr
.endm
.macro SWITCH_TO_SECURE_MODE
mov lr, #0x0
mcr p15, 0, lr, c1, c1, 0
- isb
+ ISB_OP lr
.endm