| .. | .. |
|---|
| 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) |
|---|