516 sigthreadmask(SIG_UNBLOCK, &newset, NULL); 517 518 VMError::report_and_die(t, sig, pc, info, ucVoid); 519 520 ShouldNotReachHere(); 521 return 0; 522 } 523 524 void os::Aix::init_thread_fpu_state(void) { 525 #if !defined(USE_XLC_BUILTINS) 526 // Disable FP exceptions. 527 __asm__ __volatile__ ("mtfsfi 6,0"); 528 #else 529 __mtfsfi(6, 0); 530 #endif 531 } 532 533 //////////////////////////////////////////////////////////////////////////////// 534 // thread stack 535 536 size_t os::Aix::min_stack_allowed = 128*K; 537 538 // return default stack size for thr_type 539 size_t os::Aix::default_stack_size(os::ThreadType thr_type) { 540 // default stack size (compiler thread needs larger stack) 541 // Notice that the setting for compiler threads here have no impact 542 // because of the strange 'fallback logic' in os::create_thread(). 543 // Better set CompilerThreadStackSize in globals_<os_cpu>.hpp if you want to 544 // specify a different stack size for compiler threads! 545 size_t s = (thr_type == os::compiler_thread ? 4 * M : 1 * M); 546 return s; 547 } 548 549 size_t os::Aix::default_guard_size(os::ThreadType thr_type) { 550 return 2 * page_size(); 551 } 552 553 ///////////////////////////////////////////////////////////////////////////// 554 // helper functions for fatal error handler 555 556 void os::print_context(outputStream *st, const void *context) { 557 if (context == NULL) return; 558 559 const ucontext_t* uc = (const ucontext_t*)context; 560 561 st->print_cr("Registers:"); 562 st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.jmp_context.iar); 563 st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.jmp_context.lr); 564 st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.jmp_context.ctr); 565 st->cr(); 566 for (int i = 0; i < 32; i++) { 567 st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.jmp_context.gpr[i]); 568 if (i % 3 == 2) st->cr(); 569 } 570 st->cr(); 571 st->cr(); 572 | 516 sigthreadmask(SIG_UNBLOCK, &newset, NULL); 517 518 VMError::report_and_die(t, sig, pc, info, ucVoid); 519 520 ShouldNotReachHere(); 521 return 0; 522 } 523 524 void os::Aix::init_thread_fpu_state(void) { 525 #if !defined(USE_XLC_BUILTINS) 526 // Disable FP exceptions. 527 __asm__ __volatile__ ("mtfsfi 6,0"); 528 #else 529 __mtfsfi(6, 0); 530 #endif 531 } 532 533 //////////////////////////////////////////////////////////////////////////////// 534 // thread stack 535 536 size_t os::Posix::_compiler_thread_min_stack_allowed = 128 * K; 537 size_t os::Posix::_java_thread_min_stack_allowed = 128 * K; 538 size_t os::Posix::_vm_internal_thread_min_stack_allowed = 128 * K; 539 540 // return default stack size for thr_type 541 size_t os::Posix::default_stack_size(os::ThreadType thr_type) { 542 // default stack size (compiler thread needs larger stack) 543 size_t s = (thr_type == os::compiler_thread ? 4 * M : 1 * M); 544 return s; 545 } 546 547 ///////////////////////////////////////////////////////////////////////////// 548 // helper functions for fatal error handler 549 550 void os::print_context(outputStream *st, const void *context) { 551 if (context == NULL) return; 552 553 const ucontext_t* uc = (const ucontext_t*)context; 554 555 st->print_cr("Registers:"); 556 st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.jmp_context.iar); 557 st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.jmp_context.lr); 558 st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.jmp_context.ctr); 559 st->cr(); 560 for (int i = 0; i < 32; i++) { 561 st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.jmp_context.gpr[i]); 562 if (i % 3 == 2) st->cr(); 563 } 564 st->cr(); 565 st->cr(); 566 |