1*e8a92932SMasahiro Yamada/* 2*e8a92932SMasahiro Yamada * Copyright (C) 2016 Socionext Inc. 3*e8a92932SMasahiro Yamada * Author: Masahiro Yamada <yamada.masahiro@socionext.com> 4*e8a92932SMasahiro Yamada * 5*e8a92932SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 6*e8a92932SMasahiro Yamada */ 7*e8a92932SMasahiro Yamada 8*e8a92932SMasahiro Yamada#include <linux/linkage.h> 9*e8a92932SMasahiro Yamada#include <asm/system.h> 10*e8a92932SMasahiro Yamada 11*e8a92932SMasahiro Yamada .section ._secure.text, "ax" 12*e8a92932SMasahiro Yamada 13*e8a92932SMasahiro YamadaENTRY(uniphier_smp_trampoline) 14*e8a92932SMasahiro Yamada ldr r0, 0f 15*e8a92932SMasahiro Yamada mrc p15, 0, r1, c1, c0, 0 @ SCTLR (System Control Register) 16*e8a92932SMasahiro Yamada orr r1, r1, #CR_I @ Enable ICache 17*e8a92932SMasahiro Yamada bic r1, r1, #(CR_C | CR_M) @ Disable MMU and Dcache 18*e8a92932SMasahiro Yamada mcr p15, 0, r1, c1, c0, 0 19*e8a92932SMasahiro Yamada 20*e8a92932SMasahiro Yamada bx r0 21*e8a92932SMasahiro Yamada0: .word uniphier_secondary_startup 22*e8a92932SMasahiro Yamada .globl uniphier_smp_trampoline_end 23*e8a92932SMasahiro Yamadauniphier_smp_trampoline_end: 24*e8a92932SMasahiro YamadaENDPROC(uniphier_smp_trampoline) 25*e8a92932SMasahiro Yamada 26*e8a92932SMasahiro YamadaLENTRY(uniphier_secondary_startup) 27*e8a92932SMasahiro Yamada mrc p15, 0, r1, c0, c0, 5 @ MPIDR (Multiprocessor Affinity Reg) 28*e8a92932SMasahiro Yamada and r1, r1, #0xff 29*e8a92932SMasahiro Yamada 30*e8a92932SMasahiro Yamada ldr r2, =uniphier_smp_booted 31*e8a92932SMasahiro Yamada mov r0, #1 32*e8a92932SMasahiro Yamada str r0, [r2, r1, lsl #2] 33*e8a92932SMasahiro Yamada 34*e8a92932SMasahiro Yamada ldr r2, =uniphier_psci_holding_pen_release 35*e8a92932SMasahiro Yamadapen: ldr r0, [r2] 36*e8a92932SMasahiro Yamada cmp r0, r1 37*e8a92932SMasahiro Yamada beq psci_cpu_entry 38*e8a92932SMasahiro Yamada wfe 39*e8a92932SMasahiro Yamada b pen 40*e8a92932SMasahiro YamadaENDPROC(uniphier_secondary_startup) 41