OSDN Git Service

arm64: kernel: Adopt new alternative assembler macros
authorDaniel Thompson <daniel.thompson@linaro.org>
Wed, 22 Jul 2015 11:21:03 +0000 (12:21 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 27 Jul 2015 10:08:40 +0000 (11:08 +0100)
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>
arch/arm64/kernel/entry.S

index e163518..d8a5236 100644 (file)
        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