diff options
author | Daniel Thompson <daniel.thompson@linaro.org> | 2015-07-22 07:21:03 -0400 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2015-07-27 06:08:40 -0400 |
commit | e28cabf12304717b1054d0a02f0850f91e8a2074 (patch) | |
tree | b90cb45f5cf89f0e2af820062cecd9ae295a442b /arch/arm64/kernel/entry.S | |
parent | 271d35eb77d0f53177b44968417b630d1fee8b99 (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.S | 29 |
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 | 126 | alternative_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:" | 132 | alternative_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 | 140 | 1: | |
143 | alternative_insn SEQUENCE_ORG, SEQUENCE_ALT, ARM64_WORKAROUND_845719 | 141 | alternative_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 |