Date: Fri, 18 Apr 2003 14:05:03 -0700 (PDT) From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 29226 for review Message-ID: <200304182105.h3IL53VY039891@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=29226 Change 29226 by marcel@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)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304182105.h3IL53VY039891>