xref: /rk3399_rockchip-uboot/arch/arm/mach-uniphier/arm32/psci_smp.S (revision 28cd88baa3f11cdb52be3b6d0610dcf32c60871a)
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