PERFORCE change 29226 for review

Marcel Moolenaar marcel at FreeBSD.org
Fri Apr 18 14:05:05 PDT 2003


http://perforce.freebsd.org/chv.cgi?CH=29226

Change 29226 by marcel at marcel_nfs on 2003/04/18 14:04:05

	Preserve the value of cr.iim as cr.ifa in the trapframe for the
	following faults:
	o  the break instruction fault writes the immediate operand of
	   the break instruction in cr.iim,
	o  the speculative operation fault encodes the displacement of
	   the target operand of the chk.a and chk.s instructions in
	   cr.iim,
	o  the ia32 faults and traps using the ia32 intercept vector
	   write the cause of the interception in cr.iim.
	
	In the above cases cr.ifa is undefined and in all other cases
	cr.iim is undefined. Hence no information is lost by copying
	cr.iim into cr.ifa prior to saving the context in the trapframe.

Affected files ...

.. //depot/projects/ia64_epc/sys/ia64/ia64/exception.s#12 edit

Differences ...

==== //depot/projects/ia64_epc/sys/ia64/ia64/exception.s#12 (text+ko) ====

@@ -1081,6 +1081,18 @@
 IVT_END(Data_Access_Bit)
 
 IVT_ENTRY(Break_Instruction, 0x2c00)
+{	.mmi
+	mov		r16=cr.iim
+	;;
+	mov		cr.ifa=r16
+	nop		0
+	;;
+}
+{	.mfb
+	srlz.d
+	nop		0
+	nop		0
+}
 	TRAP(11)
 IVT_END(Break_Instruction)
 
@@ -1174,6 +1186,18 @@
 IVT_END(NaT_Consumption)
 
 IVT_ENTRY(Speculation, 0x5700)
+{	.mmi
+	mov		r16=cr.iim
+	;;
+	mov		cr.ifa=r16
+	nop		0
+	;;
+}
+{	.mfb
+	srlz.d
+	nop		0
+	nop		0
+}
 	TRAP(27)
 IVT_END(Speculation)
 
@@ -1250,6 +1274,18 @@
 IVT_END(IA_32_Exception)
 
 IVT_ENTRY(IA_32_Intercept, 0x6a00)
+{	.mmi
+	mov		r16=cr.iim
+	;;
+	mov		cr.ifa=r16
+	nop		0
+	;;
+}
+{	.mfb
+	srlz.d
+	nop		0
+	nop		0
+}
 	TRAP(46)
 IVT_END(IA_32_Intercept)
 


More information about the p4-projects mailing list