/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (C) 2016 Socionext Inc. * Author: Masahiro Yamada */ #include #include .section ._secure.text, "ax" ENTRY(uniphier_smp_trampoline) ldr r0, 0f mrc p15, 0, r1, c1, c0, 0 @ SCTLR (System Control Register) orr r1, r1, #CR_I @ Enable ICache bic r1, r1, #(CR_C | CR_M) @ Disable MMU and Dcache mcr p15, 0, r1, c1, c0, 0 bx r0 0: .word uniphier_secondary_startup .globl uniphier_smp_trampoline_end uniphier_smp_trampoline_end: ENDPROC(uniphier_smp_trampoline) LENTRY(uniphier_secondary_startup) mrc p15, 0, r1, c0, c0, 5 @ MPIDR (Multiprocessor Affinity Reg) and r1, r1, #0xff ldr r2, =uniphier_smp_booted mov r0, #1 str r0, [r2, r1, lsl #2] ldr r2, =uniphier_psci_holding_pen_release pen: ldr r0, [r2] cmp r0, r1 beq psci_cpu_entry wfe b pen ENDPROC(uniphier_secondary_startup)