.align  2
        .type   __switch_data, %object
 __switch_data:
-       .long   __mmap_switched
        .long   __data_loc                      @ r4
        .long   _data                           @ r5
        .long   __bss_start                     @ r6
  *  r9  = processor ID
  */
 __mmap_switched:
-       adr     r3, __switch_data + 4
+       adr     r3, __switch_data
 
        ldmia   r3!, {r4, r5, r6, r7}
        cmp     r4, r5                          @ Copy data segment if needed
 
         * above.  On return, the CPU will be ready for the MMU to be
         * turned on, and r0 will hold the CPU control register value.
         */
-       ldr     r13, __switch_data              @ address to jump to after
+       ldr     r13, =__mmap_switched           @ address to jump to after
                                                @ mmu has been enabled
        adr     lr, BSYM(__enable_mmu)          @ return (PIC) address
  ARM(  add     pc, r10, #PROCINFO_INITFUNC     )
  THUMB(        add     r12, r10, #PROCINFO_INITFUNC    )
  THUMB(        mov     pc, r12                         )
 ENDPROC(stext)
+       .ltorg
 
 #if defined(CONFIG_SMP)
 ENTRY(secondary_startup)