|
@@ -274,7 +274,10 @@ __v7_ca15mp_setup:
|
|
|
__v7_b15mp_setup:
|
|
|
__v7_ca17mp_setup:
|
|
|
mov r10, #0
|
|
|
-1:
|
|
|
+1: adr r12, __v7_setup_stack @ the local stack
|
|
|
+ stmia r12, {r0-r5, lr} @ v7_invalidate_l1 touches r0-r6
|
|
|
+ bl v7_invalidate_l1
|
|
|
+ ldmia r12, {r0-r5, lr}
|
|
|
#ifdef CONFIG_SMP
|
|
|
ALT_SMP(mrc p15, 0, r0, c1, c0, 1)
|
|
|
ALT_UP(mov r0, #(1 << 6)) @ fake it for UP
|
|
@@ -283,7 +286,7 @@ __v7_ca17mp_setup:
|
|
|
orreq r0, r0, r10 @ Enable CPU-specific SMP bits
|
|
|
mcreq p15, 0, r0, c1, c0, 1
|
|
|
#endif
|
|
|
- b __v7_setup
|
|
|
+ b __v7_setup_cont
|
|
|
|
|
|
/*
|
|
|
* Errata:
|
|
@@ -413,10 +416,11 @@ __v7_pj4b_setup:
|
|
|
|
|
|
__v7_setup:
|
|
|
adr r12, __v7_setup_stack @ the local stack
|
|
|
- stmia r12, {r0-r5, r7, r9, r11, lr}
|
|
|
+ stmia r12, {r0-r5, lr} @ v7_invalidate_l1 touches r0-r6
|
|
|
bl v7_invalidate_l1
|
|
|
- ldmia r12, {r0-r5, r7, r9, r11, lr}
|
|
|
+ ldmia r12, {r0-r5, lr}
|
|
|
|
|
|
+__v7_setup_cont:
|
|
|
and r0, r9, #0xff000000 @ ARM?
|
|
|
teq r0, #0x41000000
|
|
|
bne __errata_finish
|
|
@@ -480,7 +484,7 @@ ENDPROC(__v7_setup)
|
|
|
|
|
|
.align 2
|
|
|
__v7_setup_stack:
|
|
|
- .space 4 * 11 @ 11 registers
|
|
|
+ .space 4 * 7 @ 12 registers
|
|
|
|
|
|
__INITDATA
|
|
|
|