linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / ia64 / kernel / mca_asm.S
index 9604749..60a464b 100644 (file)
@@ -19,6 +19,7 @@
 // 12/08/05 Keith Owens <kaos@sgi.com>
 //                Use per cpu MCA/INIT stacks for all data.
 //
+#include <linux/config.h>
 #include <linux/threads.h>
 
 #include <asm/asmmacro.h>
@@ -158,7 +159,7 @@ ia64_os_mca_spin:
        GET_IA64_MCA_DATA(r2)
        // Using MCA stack, struct ia64_sal_os_state, variable proc_state_param
        ;;
-       add r3=IA64_MCA_CPU_MCA_STACK_OFFSET+MCA_SOS_OFFSET+SOS(PROC_STATE_PARAM), r2
+       add r3=IA64_MCA_CPU_MCA_STACK_OFFSET+MCA_SOS_OFFSET+IA64_SAL_OS_STATE_PROC_STATE_PARAM_OFFSET, r2
        ;;
        ld8 r18=[r3]                            // Get processor state parameter on existing PALE_CHECK.
        ;;
@@ -478,11 +479,9 @@ ia64_state_save:
        st8 [temp2]=r11,16      // rv_rc
        mov r11=cr.iipa
        ;;
-       st8 [temp1]=r18         // proc_state_param
-       st8 [temp2]=r19         // monarch
+       st8 [temp1]=r18,16      // proc_state_param
+       st8 [temp2]=r19,16      // monarch
        mov r6=IA64_KR(CURRENT)
-       add temp1=SOS(SAL_RA), regs
-       add temp2=SOS(SAL_GP), regs
        ;;
        st8 [temp1]=r12,16      // sal_ra
        st8 [temp2]=r10,16      // sal_gp
@@ -504,14 +503,12 @@ ia64_state_save:
        st8 [temp2]=r11,16      // cr.iipa
        mov r12=cr.iim
        ;;
-       st8 [temp1]=r12         // cr.iim
+       st8 [temp1]=r12,16      // cr.iim
 (p1)   mov r12=IA64_MCA_COLD_BOOT
 (p2)   mov r12=IA64_INIT_WARM_BOOT
        mov r6=cr.iha
-       add temp1=SOS(OS_STATUS), regs
        ;;
-       st8 [temp2]=r6          // cr.iha
-       add temp2=SOS(CONTEXT), regs
+       st8 [temp2]=r6,16       // cr.iha
        st8 [temp1]=r12         // os_status, default is cold boot
        mov r6=IA64_MCA_SAME_CONTEXT
        ;;
@@ -823,14 +820,14 @@ ia64_state_restore:
        // Restore the SAL to OS state. The previous code left regs at pt_regs.
        add regs=MCA_SOS_OFFSET-MCA_PT_REGS_OFFSET, regs
        ;;
-       add temp1=SOS(SAL_RA), regs
-       add temp2=SOS(SAL_GP), regs
+       add temp1=IA64_SAL_OS_STATE_COMMON_OFFSET, regs
+       add temp2=IA64_SAL_OS_STATE_COMMON_OFFSET+8, regs
        ;;
        ld8 r12=[temp1],16      // sal_ra
        ld8 r9=[temp2],16       // sal_gp
        ;;
        ld8 r22=[temp1],16      // pal_min_state, virtual
-       ld8 r13=[temp2],16      // prev_IA64_KR_CURRENT
+       ld8 r21=[temp2],16      // prev_IA64_KR_CURRENT
        ;;
        ld8 r16=[temp1],16      // prev_IA64_KR_CURRENT_STACK
        ld8 r20=[temp2],16      // prev_task
@@ -845,15 +842,13 @@ ia64_state_restore:
        ;;
        mov cr.itir=temp3
        mov cr.iipa=temp4
-       ld8 temp3=[temp1]       // cr.iim
-       ld8 temp4=[temp2]               // cr.iha
-       add temp1=SOS(OS_STATUS), regs
-       add temp2=SOS(CONTEXT), regs
+       ld8 temp3=[temp1],16    // cr.iim
+       ld8 temp4=[temp2],16    // cr.iha
        ;;
        mov cr.iim=temp3
        mov cr.iha=temp4
        dep r22=0,r22,62,1      // pal_min_state, physical, uncached
-       mov IA64_KR(CURRENT)=r13
+       mov IA64_KR(CURRENT)=r21
        ld8 r8=[temp1]          // os_status
        ld8 r10=[temp2]         // context
 
@@ -861,7 +856,7 @@ ia64_state_restore:
         * avoid any dependencies on the algorithm in ia64_switch_to(), just
         * purge any existing CURRENT_STACK mapping and insert the new one.
         *
-        * r16 contains prev_IA64_KR_CURRENT_STACK, r13 contains
+        * r16 contains prev_IA64_KR_CURRENT_STACK, r21 contains
         * prev_IA64_KR_CURRENT, these values may have been changed by the C
         * code.  Do not use r8, r9, r10, r22, they contain values ready for
         * the return to SAL.
@@ -878,7 +873,7 @@ ia64_state_restore:
        ;;
        srlz.d
 
-       extr.u r19=r13,61,3                     // r13 = prev_IA64_KR_CURRENT
+       extr.u r19=r21,61,3                     // r21 = prev_IA64_KR_CURRENT
        shl r20=r16,IA64_GRANULE_SHIFT          // r16 = prev_IA64_KR_CURRENT_STACK
        movl r21=PAGE_KERNEL                    // page properties
        ;;
@@ -888,7 +883,7 @@ ia64_state_restore:
 (p6)   br.spnt 1f                              // the dreaded cpu 0 idle task in region 5:(
        ;;
        mov cr.itir=r18
-       mov cr.ifa=r13
+       mov cr.ifa=r21
        mov r20=IA64_TR_CURRENT_STACK
        ;;
        itr.d dtr[r20]=r21
@@ -921,7 +916,7 @@ ia64_state_restore:
 
 ia64_new_stack:
        add regs=MCA_PT_REGS_OFFSET, r3
-       add temp2=MCA_SOS_OFFSET+SOS(PAL_MIN_STATE), r3
+       add temp2=MCA_SOS_OFFSET+IA64_SAL_OS_STATE_PAL_MIN_STATE_OFFSET, r3
        mov b0=r2                       // save return address
        GET_IA64_MCA_DATA(temp1)
        invala
@@ -1025,7 +1020,7 @@ ia64_old_stack:
 
 ia64_set_kernel_registers:
        add temp3=MCA_SP_OFFSET, r3
-       add temp4=MCA_SOS_OFFSET+SOS(OS_GP), r3
+       add temp4=MCA_SOS_OFFSET+IA64_SAL_OS_STATE_OS_GP_OFFSET, r3
        mov b0=r2               // save return address
        GET_IA64_MCA_DATA(temp1)
        ;;