linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / ia64 / kernel / mca_drv_asm.S
index f2d4900..3f298ee 100644 (file)
@@ -5,6 +5,7 @@
  * Copyright (C) 2004 FUJITSU LIMITED
  * Copyright (C) Hidetoshi Seto (seto.hidetoshi@jp.fujitsu.com)
  */
+#include <linux/config.h>
 #include <linux/threads.h>
 
 #include <asm/asmmacro.h>
 
 GLOBAL_ENTRY(mca_handler_bhhook)
        invala                          // clear RSE ?
+       ;;
        cover
        ;;
        clrrrb
        ;;                                              
-       alloc   r16=ar.pfs,0,2,3,0      // make a new frame
+       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
@@ -26,6 +30,7 @@ GLOBAL_ENTRY(mca_handler_bhhook)
        addl    r22=IA64_RBS_OFFSET,r2
        ;;
        mov     ar.bspstore=r22
+       ;;
        addl    sp=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r2
        ;;
        adds    r2=IA64_TASK_THREAD_ON_USTACK_OFFSET,r13
@@ -35,12 +40,12 @@ GLOBAL_ENTRY(mca_handler_bhhook)
        movl    loc1=mca_handler_bh     // recovery C function
        ;;
        mov     out0=r8                 // poisoned address
-       mov     out1=r9                 // iip
-       mov     out2=r10                // psr
        mov     b6=loc1
        ;;
        mov     loc1=rp
-       ssm     psr.i | psr.ic
+       ;;
+       ssm     psr.i
+       ;;
        br.call.sptk.many rp=b6         // does not return ...
        ;;
        mov     ar.pfs=loc0
@@ -48,4 +53,5 @@ GLOBAL_ENTRY(mca_handler_bhhook)
        ;;
        mov     r8=r0
        br.ret.sptk.many rp
+       ;;
 END(mca_handler_bhhook)