12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #include <arch.h>
- #include <asm_macros.S>
- #include <cortex_a53.h>
- #include <hi6220.h>
- #include <hisi_sram_map.h>
- .global pm_asm_code
- .global pm_asm_code_end
- .global v7_asm
- .global v7_asm_end
- func pm_asm_code _align=3
- mov x0, 0
- msr oslar_el1, x0
- mrs x0, CORTEX_A53_CPUACTLR_EL1
- bic x0, x0, #(CORTEX_A53_CPUACTLR_EL1_RADIS | \
- CORTEX_A53_CPUACTLR_EL1_L1RADIS)
- orr x0, x0, #0x180000
- orr x0, x0, #0xe000
- msr CORTEX_A53_CPUACTLR_EL1, x0
- mrs x3, actlr_el3
- orr x3, x3, #ACTLR_EL3_L2ECTLR_BIT
- msr actlr_el3, x3
- mrs x3, actlr_el2
- orr x3, x3, #ACTLR_EL2_L2ECTLR_BIT
- msr actlr_el2, x3
- ldr x3, =PWRCTRL_ACPU_ASM_D_ARM_PARA_AD
- mrs x0, mpidr_el1
- and x1, x0, #MPIDR_CPU_MASK
- and x0, x0, #MPIDR_CLUSTER_MASK
- add x0, x1, x0, LSR #6
- pen: ldr x4, [x3, x0, LSL #3]
- cbz x4, pen
- mov x0, #0x0
- mov x1, #0x0
- mov x2, #0x0
- mov x3, #0x0
- br x4
- .ltorg
- pm_asm_code_end:
- endfunc pm_asm_code
- /*
- * By default, all cores in Hi6220 reset with aarch32 mode.
- * Now hardcode ARMv7 instructions to execute warm reset for
- * switching aarch64 mode.
- */
- .align 3
- .section .rodata.v7_asm, "aS"
- v7_asm:
- .word 0xE1A00000 // nop
- .word 0xE3A02003 // mov r2, #3
- .word 0xEE0C2F50 // mcr 15, 0, r2, cr12, cr0, {2}
- .word 0xE320F003 // wfi
- .ltorg
- v7_asm_end:
|