__v7_b15mp_setup:
 __v7_ca17mp_setup:
        mov     r10, #0
-1:     adr     r12, __v7_setup_stack           @ the local stack
-       stmia   r12, {r0-r5, lr}                @ v7_invalidate_l1 touches r0-r6
+1:     adr     r0, __v7_setup_stack_ptr
+       ldr     r12, [r0]
+       add     r12, r12, r0                    @ the local stack
+       stmia   r12, {r1-r6, lr}                @ v7_invalidate_l1 touches r0-r6
        bl      v7_invalidate_l1
-       ldmia   r12, {r0-r5, lr}
+       ldmia   r12, {r1-r6, lr}
 #ifdef CONFIG_SMP
        ALT_SMP(mrc     p15, 0, r0, c1, c0, 1)
        ALT_UP(mov      r0, #(1 << 6))          @ fake it for UP
 #endif /* CONFIG_CPU_PJ4B */
 
 __v7_setup:
-       adr     r12, __v7_setup_stack           @ the local stack
-       stmia   r12, {r0-r5, lr}                @ v7_invalidate_l1 touches r0-r6
+       adr     r0, __v7_setup_stack_ptr
+       ldr     r12, [r0]
+       add     r12, r12, r0                    @ the local stack
+       stmia   r12, {r1-r6, lr}                @ v7_invalidate_l1 touches r0-r6
        bl      v7_invalidate_l1
-       ldmia   r12, {r0-r5, lr}
+       ldmia   r12, {r1-r6, lr}
 
 __v7_setup_cont:
        and     r0, r9, #0xff000000             @ ARM?
        orr     r0, r0, r6                      @ set them
  THUMB(        orr     r0, r0, #1 << 30        )       @ Thumb exceptions
        ret     lr                              @ return to head.S:__ret
+
+       .align  2
+__v7_setup_stack_ptr:
+       .word   __v7_setup_stack - .
 ENDPROC(__v7_setup)
 
+       .bss
        .align  2
 __v7_setup_stack:
-       .space  4 * 7                           @ 12 registers
+       .space  4 * 7                           @ 7 registers
 
        __INITDATA