529
530 if (!abort_if_unrecognized) {
531 // caller wants another chance, so give it to him
532 return false;
533 }
534
535 if (pc == NULL && uc != NULL) {
536 pc = os::Linux::ucontext_get_pc(uc);
537 }
538
539 // unmask current signal
540 sigset_t newset;
541 sigemptyset(&newset);
542 sigaddset(&newset, sig);
543 sigprocmask(SIG_UNBLOCK, &newset, NULL);
544
545 VMError err(t, sig, pc, info, ucVoid);
546 err.report_and_die();
547
548 ShouldNotReachHere();
549 return true; // Mute compiler
550 }
551
552 void os::Linux::init_thread_fpu_state(void) {
553 #ifndef AMD64
554 // set fpu to 53 bit precision
555 set_fpu_control_word(0x27f);
556 #endif // !AMD64
557 }
558
559 int os::Linux::get_fpu_control_word(void) {
560 #ifdef AMD64
561 return 0;
562 #else
563 int fpu_control;
564 _FPU_GETCW(fpu_control);
565 return fpu_control & 0xffff;
566 #endif // AMD64
567 }
568
569 void os::Linux::set_fpu_control_word(int fpu_control) {
|
529
530 if (!abort_if_unrecognized) {
531 // caller wants another chance, so give it to him
532 return false;
533 }
534
535 if (pc == NULL && uc != NULL) {
536 pc = os::Linux::ucontext_get_pc(uc);
537 }
538
539 // unmask current signal
540 sigset_t newset;
541 sigemptyset(&newset);
542 sigaddset(&newset, sig);
543 sigprocmask(SIG_UNBLOCK, &newset, NULL);
544
545 VMError err(t, sig, pc, info, ucVoid);
546 err.report_and_die();
547
548 ShouldNotReachHere();
549 }
550
551 void os::Linux::init_thread_fpu_state(void) {
552 #ifndef AMD64
553 // set fpu to 53 bit precision
554 set_fpu_control_word(0x27f);
555 #endif // !AMD64
556 }
557
558 int os::Linux::get_fpu_control_word(void) {
559 #ifdef AMD64
560 return 0;
561 #else
562 int fpu_control;
563 _FPU_GETCW(fpu_control);
564 return fpu_control & 0xffff;
565 #endif // AMD64
566 }
567
568 void os::Linux::set_fpu_control_word(int fpu_control) {
|