|
@@ -1030,7 +1030,13 @@ alternative_else_nop_endif
|
|
msr tpidrro_el0, x30 // Restored in kernel_ventry
|
|
msr tpidrro_el0, x30 // Restored in kernel_ventry
|
|
.endif
|
|
.endif
|
|
tramp_map_kernel x30
|
|
tramp_map_kernel x30
|
|
|
|
+#ifdef CONFIG_RANDOMIZE_BASE
|
|
|
|
+ adr x30, tramp_vectors + PAGE_SIZE
|
|
|
|
+alternative_insn isb, nop, ARM64_WORKAROUND_QCOM_FALKOR_E1003
|
|
|
|
+ ldr x30, [x30]
|
|
|
|
+#else
|
|
ldr x30, =vectors
|
|
ldr x30, =vectors
|
|
|
|
+#endif
|
|
prfm plil1strm, [x30, #(1b - tramp_vectors)]
|
|
prfm plil1strm, [x30, #(1b - tramp_vectors)]
|
|
msr vbar_el1, x30
|
|
msr vbar_el1, x30
|
|
add x30, x30, #(1b - tramp_vectors)
|
|
add x30, x30, #(1b - tramp_vectors)
|
|
@@ -1073,6 +1079,14 @@ END(tramp_exit_compat)
|
|
|
|
|
|
.ltorg
|
|
.ltorg
|
|
.popsection // .entry.tramp.text
|
|
.popsection // .entry.tramp.text
|
|
|
|
+#ifdef CONFIG_RANDOMIZE_BASE
|
|
|
|
+ .pushsection ".rodata", "a"
|
|
|
|
+ .align PAGE_SHIFT
|
|
|
|
+ .globl __entry_tramp_data_start
|
|
|
|
+__entry_tramp_data_start:
|
|
|
|
+ .quad vectors
|
|
|
|
+ .popsection // .rodata
|
|
|
|
+#endif /* CONFIG_RANDOMIZE_BASE */
|
|
#endif /* CONFIG_UNMAP_KERNEL_AT_EL0 */
|
|
#endif /* CONFIG_UNMAP_KERNEL_AT_EL0 */
|
|
|
|
|
|
/*
|
|
/*
|