Skip to content

Commit

Permalink
arm64: kernel: Adopt new alternative assembler macros
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Daniel Thompson authored and Will Deacon committed Jul 27, 2015
1 parent 271d35e commit e28cabf
Showing 1 changed file with 13 additions and 16 deletions.
29 changes: 13 additions & 16 deletions arch/arm64/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -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:"

nop
#endif
alternative_else
tbz x22, #4, 1f
#ifdef CONFIG_PID_IN_CONTEXTIDR
mrs x29, contextidr_el1
msr contextidr_el1, x29
#else

#define SEQUENCE_ORG "nop ; nop"
#define SEQUENCE_ALT "tbz x22, #4, 1f ; msr contextidr_el1, xzr; 1:"

msr contextidr_el1, xzr
#endif

alternative_insn SEQUENCE_ORG, SEQUENCE_ALT, ARM64_WORKAROUND_845719

1:
alternative_endif
#endif
.endif
msr elr_el1, x21 // set up the return data
Expand Down

0 comments on commit e28cabf

Please sign in to comment.