aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/entry.S
diff options
context:
space:
mode:
authorDaniel Thompson <daniel.thompson@linaro.org>2015-07-22 07:21:03 -0400
committerWill Deacon <will.deacon@arm.com>2015-07-27 06:08:40 -0400
commite28cabf12304717b1054d0a02f0850f91e8a2074 (patch)
treeb90cb45f5cf89f0e2af820062cecd9ae295a442b /arch/arm64/kernel/entry.S
parent271d35eb77d0f53177b44968417b630d1fee8b99 (diff)
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>
Diffstat (limited to 'arch/arm64/kernel/entry.S')
-rw-r--r--arch/arm64/kernel/entry.S29
1 files changed, 13 insertions, 16 deletions
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index e16351819fed..d8a523600a4c 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -122,26 +122,23 @@
122 ct_user_enter 122 ct_user_enter
123 ldr x23, [sp, #S_SP] // load return stack pointer 123 ldr x23, [sp, #S_SP] // load return stack pointer
124 msr sp_el0, x23 124 msr sp_el0, x23
125
126#ifdef CONFIG_ARM64_ERRATUM_845719 125#ifdef CONFIG_ARM64_ERRATUM_845719
127 126alternative_if_not ARM64_WORKAROUND_845719
128#undef SEQUENCE_ORG 127 nop
129#undef SEQUENCE_ALT 128 nop
130
131#ifdef CONFIG_PID_IN_CONTEXTIDR 129#ifdef CONFIG_PID_IN_CONTEXTIDR
132 130 nop
133#define SEQUENCE_ORG "nop ; nop ; nop" 131#endif
134#define SEQUENCE_ALT "tbz x22, #4, 1f ; mrs x29, contextidr_el1; msr contextidr_el1, x29; 1:" 132alternative_else
135 133 tbz x22, #4, 1f
134#ifdef CONFIG_PID_IN_CONTEXTIDR
135 mrs x29, contextidr_el1
136 msr contextidr_el1, x29
136#else 137#else
137 138 msr contextidr_el1, xzr
138#define SEQUENCE_ORG "nop ; nop"
139#define SEQUENCE_ALT "tbz x22, #4, 1f ; msr contextidr_el1, xzr; 1:"
140
141#endif 139#endif
142 1401:
143 alternative_insn SEQUENCE_ORG, SEQUENCE_ALT, ARM64_WORKAROUND_845719 141alternative_endif
144
145#endif 142#endif
146 .endif 143 .endif
147 msr elr_el1, x21 // set up the return data 144 msr elr_el1, x21 // set up the return data