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

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

diff -u --recursive --new-file v2.4.0-test9/linux/arch/ia64/kernel/pal.S linux/arch/ia64/kernel/pal.S
@@ -54,7 +54,8 @@
  *
  * in0         Pointer to struct ia64_pal_retval
  * in1         Index of PAL service
- * in2 - in4   Remaning PAL arguments
+ * in2 - in4   Remaining PAL arguments
+ * in5	       1 ==> clear psr.ic,  0 ==> don't clear psr.ic
  *
  */
 GLOBAL_ENTRY(ia64_pal_call_static)
@@ -68,18 +69,22 @@
 	}
 	;;
 	ld8 loc2 = [loc2]		// loc2 <- entry point
-	mov r30 = in2
-	mov r31 = in3
+	tbit.nz p6,p7 = in5, 0
+	adds r8 = 1f-1b,r8
 	;;
 	mov loc3 = psr
 	mov loc0 = rp
 	UNW(.body)
-	adds r8 = 1f-1b,r8
-	;; 
-	rsm psr.i
+	mov r30 = in2
+
+(p6)	rsm psr.i | psr.ic
+	mov r31 = in3
 	mov b7 = loc2
+
+(p7)	rsm psr.i
+	;;
+(p6)	srlz.i
 	mov rp = r8
-	;; 
 	br.cond.sptk.few b7
 1:	mov psr.l = loc3
 	mov ar.pfs = loc1

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