arm64: kernel: Adopt new alternative assembler macros
Convert the dynamic patching for ARM64_WORKAROUND_845719 over to the newly added alternative assembler macros. Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
This commit is contained in:
parent
271d35eb77
commit
e28cabf123
|
@ -122,26 +122,23 @@
|
|||
ct_user_enter
|
||||
ldr x23, [sp, #S_SP] // load return stack pointer
|
||||
msr sp_el0, x23
|
||||
|
||||
#ifdef CONFIG_ARM64_ERRATUM_845719
|
||||
|
||||
#undef SEQUENCE_ORG
|
||||
#undef SEQUENCE_ALT
|
||||
|
||||
alternative_if_not ARM64_WORKAROUND_845719
|
||||
nop
|
||||
nop
|
||||
#ifdef CONFIG_PID_IN_CONTEXTIDR
|
||||
|
||||
#define SEQUENCE_ORG "nop ; nop ; nop"
|
||||
#define SEQUENCE_ALT "tbz x22, #4, 1f ; mrs x29, contextidr_el1; msr contextidr_el1, x29; 1:"
|
||||
|
||||
#else
|
||||
|
||||
#define SEQUENCE_ORG "nop ; nop"
|
||||
#define SEQUENCE_ALT "tbz x22, #4, 1f ; msr contextidr_el1, xzr; 1:"
|
||||
|
||||
nop
|
||||
#endif
|
||||
|
||||
alternative_insn SEQUENCE_ORG, SEQUENCE_ALT, ARM64_WORKAROUND_845719
|
||||
|
||||
alternative_else
|
||||
tbz x22, #4, 1f
|
||||
#ifdef CONFIG_PID_IN_CONTEXTIDR
|
||||
mrs x29, contextidr_el1
|
||||
msr contextidr_el1, x29
|
||||
#else
|
||||
msr contextidr_el1, xzr
|
||||
#endif
|
||||
1:
|
||||
alternative_endif
|
||||
#endif
|
||||
.endif
|
||||
msr elr_el1, x21 // set up the return data
|
||||
|
|
Loading…
Reference in New Issue