Merge "aarch32: stop speculative execution past exception returns" into integration
This commit is contained in:
commit
efe30cb1b4
|
@ -80,7 +80,7 @@ debug_loop:
|
|||
|
||||
add r8, r8, #ENTRY_POINT_INFO_ARGS_OFFSET
|
||||
ldm r8, {r0, r1, r2, r3}
|
||||
eret
|
||||
exception_return
|
||||
endfunc bl1_aarch32_smc_handler
|
||||
|
||||
/* -----------------------------------------------------
|
||||
|
|
|
@ -87,5 +87,5 @@ func bl2_run_next_image
|
|||
|
||||
add r8, r8, #ENTRY_POINT_INFO_ARGS_OFFSET
|
||||
ldm r8, {r0, r1, r2, r3}
|
||||
eret
|
||||
exception_return
|
||||
endfunc bl2_run_next_image
|
||||
|
|
|
@ -95,11 +95,24 @@
|
|||
|
||||
#if ARM_ARCH_MAJOR == 7 && !defined(ARMV7_SUPPORTS_VIRTUALIZATION)
|
||||
/*
|
||||
* Macro for mitigating against speculative execution.
|
||||
* ARMv7 cores without Virtualization extension do not support the
|
||||
* eret instruction.
|
||||
*/
|
||||
.macro eret
|
||||
.macro exception_return
|
||||
movs pc, lr
|
||||
dsb nsh
|
||||
isb
|
||||
.endm
|
||||
|
||||
#else
|
||||
/*
|
||||
* Macro for mitigating against speculative execution beyond ERET.
|
||||
*/
|
||||
.macro exception_return
|
||||
eret
|
||||
dsb nsh
|
||||
isb
|
||||
.endm
|
||||
#endif
|
||||
|
||||
|
|
|
@ -235,7 +235,7 @@
|
|||
|
||||
/* Restore the rest of the general purpose registers */
|
||||
ldm r0, {r0-r12}
|
||||
eret
|
||||
exception_return
|
||||
.endm
|
||||
|
||||
#endif /* SMCCC_MACROS_S */
|
||||
|
|
Loading…
Reference in New Issue