Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / ia64 / kernel / mca_drv_asm.S
index 2d7e021..e6a580d 100644 (file)
 #include <asm/ptrace.h>
 
 GLOBAL_ENTRY(mca_handler_bhhook)
-       invala                                          // clear RSE ?
-       ;;                                              //
-       cover                                           // 
-       ;;                                              //
-       clrrrb                                          //
-       ;;                                              
-       alloc           r16=ar.pfs,0,2,1,0              // make a new frame
-       ;;
-       mov             ar.rsc=0
-       ;;
-       mov             r13=IA64_KR(CURRENT)            // current task pointer
-       ;;
-       mov             r2=r13
+       invala                          // clear RSE ?
+       cover
        ;;
-       addl            r22=IA64_RBS_OFFSET,r2
-       ;;
-       mov             ar.bspstore=r22
+       clrrrb
+       ;;                                              
+       alloc   r16=ar.pfs,0,2,3,0      // make a new frame
+       mov     ar.rsc=0
+       mov     r13=IA64_KR(CURRENT)    // current task pointer
        ;;
-       addl            sp=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r2
+       mov     r2=r13
        ;;
-       adds            r2=IA64_TASK_THREAD_ON_USTACK_OFFSET,r13
+       addl    r22=IA64_RBS_OFFSET,r2
        ;;
-       st1             [r2]=r0                         // clear current->thread.on_ustack flag
-       mov             loc0=r16
-       movl            loc1=mca_handler_bh             // recovery C function
+       mov     ar.bspstore=r22
+       addl    sp=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r2
        ;;
-       mov             out0=r8                         // poisoned address
-       mov             b6=loc1
+       adds    r2=IA64_TASK_THREAD_ON_USTACK_OFFSET,r13
        ;;
-       mov             loc1=rp
+       st1     [r2]=r0         // clear current->thread.on_ustack flag
+       mov     loc0=r16
+       movl    loc1=mca_handler_bh     // recovery C function
        ;;
-       ssm             psr.i
+       mov     out0=r8                 // poisoned address
+       mov     out1=r9                 // iip
+       mov     out2=r10                // psr
+       mov     b6=loc1
        ;;
-       br.call.sptk.many    rp=b6                      // does not return ...
+       mov     loc1=rp
+       ssm     psr.i | psr.ic
+       br.call.sptk.many rp=b6         // does not return ...
        ;;
-       mov             ar.pfs=loc0
-       mov             rp=loc1
+       mov     ar.pfs=loc0
+       mov     rp=loc1
        ;;
-       mov             r8=r0
+       mov     r8=r0
        br.ret.sptk.many rp
-       ;;
 END(mca_handler_bhhook)