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