ARM: 8559/1: errata: Workaround erratum A12 821420
[deliverable/linux.git] / arch / arm / kernel / entry-header.S
index 0d22ad206d5230ba05a40b4101bb1dd2e4addd10..6391728c8f0377019404c6a6744df1e24697b3a8 100644 (file)
@@ -90,7 +90,7 @@
        @ Linux expects to have irqs off. Do it here before taking stack space
        cpsid   i
 
-       sub     sp, #S_FRAME_SIZE-S_IP
+       sub     sp, #PT_REGS_SIZE-S_IP
        stmdb   sp!, {r0-r11}
 
        @ load saved r12, lr, return address and xPSR.
        ldmia   sp!, {r0-r11}
 
        @ restore main sp
-       add     sp, sp, #S_FRAME_SIZE-S_IP
+       add     sp, sp, #PT_REGS_SIZE-S_IP
 
        cpsie   i
        bx      lr
        blne    trace_hardirqs_off
 #endif
        .endif
+       ldr     r1, [sp, #SVC_ADDR_LIMIT]
        uaccess_restore
+       str     r1, [tsk, #TI_ADDR_LIMIT]
 
 #ifndef CONFIG_THUMB2_KERNEL
        @ ARM mode SVC restore
        @ on the stack remains correct).
        @
        .macro  svc_exit_via_fiq
+       ldr     r1, [sp, #SVC_ADDR_LIMIT]
        uaccess_restore
+       str     r1, [tsk, #TI_ADDR_LIMIT]
 #ifndef CONFIG_THUMB2_KERNEL
        @ ARM mode restore
        mov     r0, sp
        .endif
        mov     r0, r0                          @ ARMv5T and earlier require a nop
                                                @ after ldm {}^
-       add     sp, sp, #\offset + S_FRAME_SIZE
+       add     sp, sp, #\offset + PT_REGS_SIZE
        movs    pc, lr                          @ return & move spsr_svc into cpsr
 #elif defined(CONFIG_CPU_V7M)
        @ V7M restore.
        .else
        ldmdb   sp, {r0 - r12}                  @ get calling r0 - r12
        .endif
-       add     sp, sp, #S_FRAME_SIZE - S_SP
+       add     sp, sp, #PT_REGS_SIZE - S_SP
        movs    pc, lr                          @ return & move spsr_svc into cpsr
 #endif /* !CONFIG_THUMB2_KERNEL */
        .endm
This page took 0.025137 seconds and 5 git commands to generate.