|
@@ -147,14 +147,12 @@ cpu_resume_after_mmu:
|
|
|
ret
|
|
|
ENDPROC(cpu_resume_after_mmu)
|
|
|
|
|
|
- .data
|
|
|
ENTRY(cpu_resume)
|
|
|
bl el2_setup // if in EL2 drop to EL1 cleanly
|
|
|
#ifdef CONFIG_SMP
|
|
|
mrs x1, mpidr_el1
|
|
|
- adr x4, mpidr_hash_ptr
|
|
|
- ldr x5, [x4]
|
|
|
- add x8, x4, x5 // x8 = struct mpidr_hash phys address
|
|
|
+ adrp x8, mpidr_hash
|
|
|
+ add x8, x8, #:lo12:mpidr_hash // x8 = struct mpidr_hash phys address
|
|
|
/* retrieve mpidr_hash members to compute the hash */
|
|
|
ldr x2, [x8, #MPIDR_HASH_MASK]
|
|
|
ldp w3, w4, [x8, #MPIDR_HASH_SHIFTS]
|
|
@@ -164,14 +162,15 @@ ENTRY(cpu_resume)
|
|
|
#else
|
|
|
mov x7, xzr
|
|
|
#endif
|
|
|
- adr x0, sleep_save_sp
|
|
|
+ adrp x0, sleep_save_sp
|
|
|
+ add x0, x0, #:lo12:sleep_save_sp
|
|
|
ldr x0, [x0, #SLEEP_SAVE_SP_PHYS]
|
|
|
ldr x0, [x0, x7, lsl #3]
|
|
|
/* load sp from context */
|
|
|
ldr x2, [x0, #CPU_CTX_SP]
|
|
|
- adr x1, sleep_idmap_phys
|
|
|
+ adrp x1, sleep_idmap_phys
|
|
|
/* load physical address of identity map page table in x1 */
|
|
|
- ldr x1, [x1]
|
|
|
+ ldr x1, [x1, #:lo12:sleep_idmap_phys]
|
|
|
mov sp, x2
|
|
|
/*
|
|
|
* cpu_do_resume expects x0 to contain context physical address
|
|
@@ -180,26 +179,3 @@ ENTRY(cpu_resume)
|
|
|
bl cpu_do_resume // PC relative jump, MMU off
|
|
|
b cpu_resume_mmu // Resume MMU, never returns
|
|
|
ENDPROC(cpu_resume)
|
|
|
-
|
|
|
- .align 3
|
|
|
-mpidr_hash_ptr:
|
|
|
- /*
|
|
|
- * offset of mpidr_hash symbol from current location
|
|
|
- * used to obtain run-time mpidr_hash address with MMU off
|
|
|
- */
|
|
|
- .quad mpidr_hash - .
|
|
|
-/*
|
|
|
- * physical address of identity mapped page tables
|
|
|
- */
|
|
|
- .type sleep_idmap_phys, #object
|
|
|
-ENTRY(sleep_idmap_phys)
|
|
|
- .quad 0
|
|
|
-/*
|
|
|
- * struct sleep_save_sp {
|
|
|
- * phys_addr_t *save_ptr_stash;
|
|
|
- * phys_addr_t save_ptr_stash_phys;
|
|
|
- * };
|
|
|
- */
|
|
|
- .type sleep_save_sp, #object
|
|
|
-ENTRY(sleep_save_sp)
|
|
|
- .space SLEEP_SAVE_SP_SZ // struct sleep_save_sp
|