Changeset 13940
- Timestamp:
- Jul 7, 2010, 8:16:23 PM (14 years ago)
- Location:
- branches/rme-fpe/lisp-kernel
- Files:
-
- 2 edited
-
x86-exceptions.c (modified) (2 diffs)
-
x86-spentry32.s (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/rme-fpe/lisp-kernel/x86-exceptions.c
r13937 r13940 955 955 956 956 if (old_valence == TCR_STATE_FOREIGN) { 957 #ifdef X8632 958 return false; 959 #else 957 960 /* We got a floating point exception in foreign code. Set a flag 958 961 in the TCR to indicate this, and resume with FP exceptions … … 971 974 xpMXCSR(xp) |= MXCSR_CONTROL_MASK; 972 975 return true; 973 } else if ((fulltag_of(cmain) == fulltag_misc) && 976 #endif 977 } 978 979 if ((fulltag_of(cmain) == fulltag_misc) && 974 980 (header_subtag(header_of(cmain)) == subtag_macptr)) { 975 981 xcf = create_exception_callback_frame(xp, tcr); -
branches/rme-fpe/lisp-kernel/x86-spentry32.s
r13938 r13940 4184 4184 __(popl rcontext(tcr.save_eflags)) 4185 4185 __(cld) 4186 __(stmxcsr rcontext(tcr.lisp_mxcsr)) 4186 4187 __(emms) 4188 __(ldmxcsr rcontext(tcr.foreign_mxcsr)) 4187 4189 __(movl (%esp),%ebp) 4188 4190 LocalLabelPrefix`'ffcall_setup: … … 4213 4215 __(clr %fn) 4214 4216 __(pxor %fpzero,%fpzero) 4215 /* If we got a floating-point exception during the ff-call,4216 our handler will have set a flag, preserved lisp's MXCSR,4217 and resumed execution with fp exceptions masked. */4218 __(btrl $TCR_FLAG_BIT_FOREIGN_FPE,rcontext(tcr.flags))4219 __(jnc 1f)4220 4217 __(cmpb $0,C(bogus_fp_exceptions)) 4221 4218 __(je 0f) … … 4225 4222 __ifdef(`SSE2_MATH_LIB') 4226 4223 __(stmxcsr rcontext(tcr.ffi_exception)) 4227 __(ldmxcsr rcontext(tcr.lisp_mxcsr)) /* preserved by the handler */4228 4224 __else 4229 4225 __(fnstsw rcontext(tcr.ffi_exception)) … … 4239 4235 __(pop %arg_y) 4240 4236 __(pop %temp1) 4237 __(ldmxcsr rcontext(tcr.lisp_mxcsr)) 4241 4238 __(check_pending_interrupt(%temp0)) 4242 4239 __(pop %temp0)
Note:
See TracChangeset
for help on using the changeset viewer.
