1 #include "globalconfig.h"
4 .section .mp_tramp, "awx"
8 /* See cache_func_gen.cpp */
9 .global v7_invalidate_l1
12 mcr p15, 2, r3, c0, c0, 0
13 mrc p15, 1, r2, c0, c0, 0
28 orr r5, r4, r1, asl ip
29 mcr p15, 0, r5, c7, c6, 2
39 .global _tramp_mp_entry
56 mcr p15, 0, r0, c7, c10, 4 // dsb
58 mcr p15, 0, r0, c7, c7, 0 // inv both
61 mrc p15, 0, r0, c1, c0, 1
67 mcr p15, 0, r0, c1, c0, 1
70 mcr p15, 0, r0, c8, c7, 0
72 adr r0, _tramp_mp_start_dcr
74 mcr p15, 0, r0, c3, c0
76 adr r0, _tramp_mp_startup_pdbr
78 mcr p15, 0, r0, c2, c0
80 adr r0, _tramp_mp_startup_cp15_c1
82 mcr p15, 0, r0, c1, c0
85 mrc p15, 0, r0, c2, c0, 0
94 ldr r0, _cpu_counter_address
101 // spinlock on cpu-init
102 adr r0, _tramp_mp_spinlock
117 mcr p15, 0, r0, c8, c7, 0
119 adr sp, _tramp_mp_init_stack_top
126 _cpu_counter_address:
127 .long (my_kernel_info_page + OFS__KIP__PROCESSOR_INFO)
129 .global _tramp_mp_startup_cp15_c1
130 _tramp_mp_startup_cp15_c1:
133 .global _tramp_mp_startup_pdbr
134 _tramp_mp_startup_pdbr:
137 .global _tramp_mp_start_dcr
141 .global _tramp_mp_spinlock
145 _tramp_mp_init_stack:
147 _tramp_mp_init_stack_top: