hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
 * Copyright (C) 2016 Socionext Inc.
 *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
 *
 * SPDX-License-Identifier:    GPL-2.0+
 */
 
#include <linux/linkage.h>
#include <asm/system.h>
 
   .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)