patch-2.4.0-test10 linux/arch/ia64/kernel/mca_asm.S

Next file: linux/arch/ia64/kernel/minstate.h
Previous file: linux/arch/ia64/kernel/mca.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test9/linux/arch/ia64/kernel/mca_asm.S linux/arch/ia64/kernel/mca_asm.S
@@ -6,6 +6,8 @@
 // 00/03/29 cfleck Added code to save INIT handoff state in pt_regs format, switch to temp kstack,
 //		   switch modes, jump to C INIT handler
 //
+#include <linux/config.h>
+
 #include <asm/pgtable.h>
 #include <asm/processor.h>
 #include <asm/mca_asm.h>
@@ -680,32 +682,22 @@
 .proc ia64_monarch_init_handler       
 ia64_monarch_init_handler:
 
-#if defined(SAL_MPINIT_WORKAROUND)
+#if defined(CONFIG_SMP) && defined(SAL_MPINIT_WORKAROUND)
 	//
 	// work around SAL bug that sends all processors to monarch entry
 	//
-	.global bootstrap_processor
-
-	movl	r21=24
-	movl	r20=16
 	mov	r17=cr.lid
-	movl	r18=bootstrap_processor
+	movl	r18=__cpu_physical_id
 	;;
-	dep	r18=0,r18,61,3		// convert bsp to physical address
+	dep	r18=0,r18,61,3		// convert to physical address
 	;;
-	shr	r19=r17,r20
-	shr	r22=r17,r21
+	shr.u	r17=r17,16
 	ld4	r18=[r18]		// get the BSP ID
 	;;
-	and	r19=0xf, r19
-	and	r22=0xf, r22
-	;;
-	shl	r19=r19,8		// get them in the right order
-	;;
-	or	r22=r22,r19		// combine EID and LID
+	dep	r17=0,r17,16,48
 	;;
-	cmp.eq	p6,p7=r22,r18		// Am I the BSP ?
-(p7)	br.cond.spnt slave_init_spin_me
+	cmp4.ne	p6,p0=r17,r18		// Am I the BSP ?
+(p6)	br.cond.spnt slave_init_spin_me
 	;;
 #endif
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)