Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs
[pandora-kernel.git] / arch / powerpc / kernel / exceptions-64s.S
index 226cc8c..a85f487 100644 (file)
@@ -211,11 +211,11 @@ END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE)
        mr      r9,r13
        GET_PACA(r13)
        mfspr   r11,SPRN_SRR0
-       ld      r12,PACAKBASE(r13)
-       ld      r10,PACAKMSR(r13)
-       LOAD_HANDLER(r12, system_call_entry)
-       mtspr   SPRN_SRR0,r12
        mfspr   r12,SPRN_SRR1
+       ld      r10,PACAKBASE(r13)
+       LOAD_HANDLER(r10, system_call_entry)
+       mtspr   SPRN_SRR0,r10
+       ld      r10,PACAKMSR(r13)
        mtspr   SPRN_SRR1,r10
        rfid
        b       .       /* prevent speculative execution */
@@ -461,9 +461,24 @@ bad_stack:
        std     r12,_XER(r1)
        SAVE_GPR(0,r1)
        SAVE_GPR(2,r1)
-       SAVE_4GPRS(3,r1)
-       SAVE_2GPRS(7,r1)
-       SAVE_10GPRS(12,r1)
+       ld      r10,EX_R3(r3)
+       std     r10,GPR3(r1)
+       SAVE_GPR(4,r1)
+       SAVE_4GPRS(5,r1)
+       ld      r9,EX_R9(r3)
+       ld      r10,EX_R10(r3)
+       SAVE_2GPRS(9,r1)
+       ld      r9,EX_R11(r3)
+       ld      r10,EX_R12(r3)
+       ld      r11,EX_R13(r3)
+       std     r9,GPR11(r1)
+       std     r10,GPR12(r1)
+       std     r11,GPR13(r1)
+BEGIN_FTR_SECTION
+       ld      r10,EX_CFAR(r3)
+       std     r10,ORIG_GPR3(r1)
+END_FTR_SECTION_IFSET(CPU_FTR_CFAR)
+       SAVE_8GPRS(14,r1)
        SAVE_10GPRS(22,r1)
        lhz     r12,PACA_TRAP_SAVE(r13)
        std     r12,_TRAP(r1)
@@ -472,6 +487,9 @@ bad_stack:
        li      r12,0
        std     r12,0(r11)
        ld      r2,PACATOC(r13)
+       ld      r11,exception_marker@toc(r2)
+       std     r12,RESULT(r1)
+       std     r11,STACK_FRAME_OVERHEAD-16(r1)
 1:     addi    r3,r1,STACK_FRAME_OVERHEAD
        bl      .kernel_bad_stack
        b       1b