Changeset 14426
- Timestamp:
- Nov 12, 2010, 12:26:32 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/source/lisp-kernel/x86-exceptions.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/x86-exceptions.c
r14295 r14426 3414 3414 break; 3415 3415 } 3416 #if WORD_SIZE==64 3417 if ((signum==SIGFPE) && 3418 (code != FPE_INTDIV) && 3419 (tcr->valence != TCR_STATE_LISP)) { 3420 mach_msg_type_number_t thread_state_count = x86_FLOAT_STATE64_COUNT; 3421 x86_float_state64_t fs; 3422 3423 thread_get_state(thread, 3424 x86_FLOAT_STATE64, 3425 (thread_state_t)&fs, 3426 &thread_state_count); 3427 3428 if (! (tcr->flags & (1<<TCR_FLAG_BIT_FOREIGN_FPE))) { 3429 tcr->flags |= (1<<TCR_FLAG_BIT_FOREIGN_FPE); 3430 tcr->lisp_mxcsr = (fs.__fpu_mxcsr & ~MXCSR_STATUS_MASK); 3431 } 3432 fs.__fpu_mxcsr &= ~MXCSR_STATUS_MASK; 3433 fs.__fpu_mxcsr |= MXCSR_CONTROL_MASK; 3434 thread_set_state(thread, 3435 x86_FLOAT_STATE64, 3436 (thread_state_t)&fs, 3437 x86_FLOAT_STATE64_COUNT); 3438 return 0; 3439 } 3440 #endif 3416 3441 if (signum) { 3417 3442 kret = setup_signal_frame(thread,
Note:
See TracChangeset
for help on using the changeset viewer.
