1
2
3
4
5
6
7
8
9
10 #include <linux/linkage.h>
11 #include <linux/init.h>
12
13 __INIT
14
15
16
17
18
19
20 ENTRY(spear13xx_secondary_startup)
21 mrc p15, 0, r0, c0, c0, 5
22 and r0, r0, #15
23 adr r4, 1f
24 ldmia r4, {r5, r6}
25 sub r4, r4, r5
26 add r6, r6, r4
27 pen: ldr r7, [r6]
28 cmp r7, r0
29 bne pen
30
31
32 mrc p15, 0, r0, c1, c0, 1
33 orr r0, r0, #(1 << 6) | (1 << 0)
34 mcr p15, 0, r0, c1, c0, 1
35
36
37
38
39 b secondary_startup
40
41 .align
42 1: .long .
43 .long spear_pen_release
44 ENDPROC(spear13xx_secondary_startup)