|
@@ -122,26 +122,23 @@
|
|
ct_user_enter
|
|
ct_user_enter
|
|
ldr x23, [sp, #S_SP] // load return stack pointer
|
|
ldr x23, [sp, #S_SP] // load return stack pointer
|
|
msr sp_el0, x23
|
|
msr sp_el0, x23
|
|
-
|
|
|
|
#ifdef CONFIG_ARM64_ERRATUM_845719
|
|
#ifdef CONFIG_ARM64_ERRATUM_845719
|
|
-
|
|
|
|
-#undef SEQUENCE_ORG
|
|
|
|
-#undef SEQUENCE_ALT
|
|
|
|
-
|
|
|
|
|
|
+alternative_if_not ARM64_WORKAROUND_845719
|
|
|
|
+ nop
|
|
|
|
+ nop
|
|
#ifdef CONFIG_PID_IN_CONTEXTIDR
|
|
#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
|
|
#else
|
|
-
|
|
|
|
-#define SEQUENCE_ORG "nop ; nop"
|
|
|
|
-#define SEQUENCE_ALT "tbz x22, #4, 1f ; msr contextidr_el1, xzr; 1:"
|
|
|
|
-
|
|
|
|
|
|
+ msr contextidr_el1, xzr
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
- alternative_insn SEQUENCE_ORG, SEQUENCE_ALT, ARM64_WORKAROUND_845719
|
|
|
|
-
|
|
|
|
|
|
+1:
|
|
|
|
+alternative_endif
|
|
#endif
|
|
#endif
|
|
.endif
|
|
.endif
|
|
msr elr_el1, x21 // set up the return data
|
|
msr elr_el1, x21 // set up the return data
|