arm64: Add percpu vectors for EL1
[linux-2.6-microblaze.git] / arch / arm64 / kernel / entry.S
index 8da732f..a62fee1 100644 (file)
@@ -38,7 +38,6 @@
        .macro kernel_ventry, el:req, ht:req, regsize:req, label:req
        .align 7
 .Lventry_start\@:
-#ifdef CONFIG_UNMAP_KERNEL_AT_EL0
        .if     \el == 0
        /*
         * This must be the first instruction of the EL0 vector entries. It is
@@ -53,7 +52,6 @@
        .endif
 .Lskip_tramp_vectors_cleanup\@:
        .endif
-#endif
 
        sub     sp, sp, #PT_REGS_SIZE
 #ifdef CONFIG_VMAP_STACK
@@ -712,10 +710,10 @@ alternative_else_nop_endif
        .endm
 
        .macro tramp_exit, regsize = 64
-       adr     x30, tramp_vectors
-#ifdef CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY
-       add     x30, x30, SZ_4K
-#endif
+       tramp_data_read_var     x30, this_cpu_vector
+       get_this_cpu_offset x29
+       ldr     x30, [x30, x29]
+
        msr     vbar_el1, x30
        ldr     lr, [sp, #S_LR]
        tramp_unmap_kernel      x29
@@ -775,6 +773,8 @@ __entry_tramp_data_vectors:
 __entry_tramp_data___sdei_asm_handler:
        .quad   __sdei_asm_handler
 #endif /* CONFIG_ARM_SDE_INTERFACE */
+__entry_tramp_data_this_cpu_vector:
+       .quad   this_cpu_vector
 SYM_DATA_END(__entry_tramp_data_start)
        .popsection                             // .rodata
 #endif /* CONFIG_RANDOMIZE_BASE */