.. | .. |
---|
3 | 3 | #include <linux/linkage.h> |
---|
4 | 4 | #include <asm/asm-offsets.h> |
---|
5 | 5 | #include <asm/assembler.h> |
---|
| 6 | +#include <asm/smp.h> |
---|
6 | 7 | |
---|
7 | 8 | .text |
---|
8 | 9 | /* |
---|
.. | .. |
---|
27 | 28 | * aff0 = mpidr_masked & 0xff; |
---|
28 | 29 | * aff1 = mpidr_masked & 0xff00; |
---|
29 | 30 | * aff2 = mpidr_masked & 0xff0000; |
---|
30 | | - * aff2 = mpidr_masked & 0xff00000000; |
---|
| 31 | + * aff3 = mpidr_masked & 0xff00000000; |
---|
31 | 32 | * dst = (aff0 >> rs0 | aff1 >> rs1 | aff2 >> rs2 | aff3 >> rs3); |
---|
32 | 33 | *} |
---|
33 | 34 | * Input registers: rs0, rs1, rs2, rs3, mpidr, mask |
---|
.. | .. |
---|
61 | 62 | * |
---|
62 | 63 | * x0 = struct sleep_stack_data area |
---|
63 | 64 | */ |
---|
64 | | -ENTRY(__cpu_suspend_enter) |
---|
| 65 | +SYM_FUNC_START(__cpu_suspend_enter) |
---|
65 | 66 | stp x29, lr, [x0, #SLEEP_STACK_DATA_CALLEE_REGS] |
---|
66 | 67 | stp x19, x20, [x0,#SLEEP_STACK_DATA_CALLEE_REGS+16] |
---|
67 | 68 | stp x21, x22, [x0,#SLEEP_STACK_DATA_CALLEE_REGS+32] |
---|
.. | .. |
---|
94 | 95 | ldp x29, lr, [sp], #16 |
---|
95 | 96 | mov x0, #1 |
---|
96 | 97 | ret |
---|
97 | | -ENDPROC(__cpu_suspend_enter) |
---|
| 98 | +SYM_FUNC_END(__cpu_suspend_enter) |
---|
98 | 99 | |
---|
99 | 100 | .pushsection ".idmap.text", "awx" |
---|
100 | | -ENTRY(cpu_resume) |
---|
101 | | - bl el2_setup // if in EL2 drop to EL1 cleanly |
---|
| 101 | +SYM_CODE_START(cpu_resume) |
---|
| 102 | + bl init_kernel_el |
---|
| 103 | + bl switch_to_vhe |
---|
102 | 104 | bl __cpu_setup |
---|
103 | 105 | /* enable the MMU early - so we can access sleep_save_stash by va */ |
---|
| 106 | + adrp x1, swapper_pg_dir |
---|
104 | 107 | bl __enable_mmu |
---|
105 | 108 | ldr x8, =_cpu_resume |
---|
106 | 109 | br x8 |
---|
107 | | -ENDPROC(cpu_resume) |
---|
| 110 | +SYM_CODE_END(cpu_resume) |
---|
108 | 111 | .ltorg |
---|
109 | 112 | .popsection |
---|
110 | 113 | |
---|
111 | | -ENTRY(_cpu_resume) |
---|
| 114 | +SYM_FUNC_START(_cpu_resume) |
---|
112 | 115 | mrs x1, mpidr_el1 |
---|
113 | 116 | adr_l x8, mpidr_hash // x8 = struct mpidr_hash virt address |
---|
114 | 117 | |
---|
.. | .. |
---|
131 | 134 | */ |
---|
132 | 135 | bl cpu_do_resume |
---|
133 | 136 | |
---|
134 | | -#ifdef CONFIG_KASAN |
---|
| 137 | +#if defined(CONFIG_KASAN) && defined(CONFIG_KASAN_STACK) |
---|
135 | 138 | mov x0, sp |
---|
136 | 139 | bl kasan_unpoison_task_stack_below |
---|
137 | 140 | #endif |
---|
.. | .. |
---|
144 | 147 | ldp x29, lr, [x29] |
---|
145 | 148 | mov x0, #0 |
---|
146 | 149 | ret |
---|
147 | | -ENDPROC(_cpu_resume) |
---|
| 150 | +SYM_FUNC_END(_cpu_resume) |
---|