comparison src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp @ 20816:6f8d03da5d08

[SPARC] Ignore SIGILL instruction when the trap is 0x10 (breakpoint op, used for GRAAL debugging)
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Wed, 08 Apr 2015 19:13:41 +0200
parents af21010d1062
children be896a1983c0
comparison
equal deleted inserted replaced
20815:17caeb034a63 20816:6f8d03da5d08
22 * 22 *
23 */ 23 */
24 24
25 // no precompiled headers 25 // no precompiled headers
26 #include "asm/macroAssembler.hpp" 26 #include "asm/macroAssembler.hpp"
27 #include "macroAssembler_sparc.hpp"
27 #include "classfile/classLoader.hpp" 28 #include "classfile/classLoader.hpp"
28 #include "classfile/systemDictionary.hpp" 29 #include "classfile/systemDictionary.hpp"
29 #include "classfile/vmSymbols.hpp" 30 #include "classfile/vmSymbols.hpp"
30 #include "code/icBuffer.hpp" 31 #include "code/icBuffer.hpp"
31 #include "code/vtableStubs.hpp" 32 #include "code/vtableStubs.hpp"
481 // method (not a call from the segv site). 482 // method (not a call from the segv site).
482 pc = (address)uc->uc_mcontext.gregs[REG_O7]; 483 pc = (address)uc->uc_mcontext.gregs[REG_O7];
483 } 484 }
484 #endif // COMPILER2 485 #endif // COMPILER2
485 486
487 #ifdef GRAAL
488 else if (sig == SIGILL && info->si_trapno == 0x100 + ST_RESERVED_FOR_USER_0) {
489 printf("SIGILL 0x%x 0x%x\n", info->si_trapno, ST_RESERVED_FOR_USER_0);
490 uc->uc_mcontext.gregs[REG_PC] = (greg_t)pc+4;
491 uc->uc_mcontext.gregs[REG_nPC] = (greg_t)npc + 4;
492 return true;
493 }
494 #endif // GRAAL
495
486 else if (sig == SIGSEGV && info->si_code > 0 && !MacroAssembler::needs_explicit_null_check((intptr_t)info->si_addr)) { 496 else if (sig == SIGSEGV && info->si_code > 0 && !MacroAssembler::needs_explicit_null_check((intptr_t)info->si_addr)) {
487 // Determination of interpreter/vtable stub/compiled code null exception 497 // Determination of interpreter/vtable stub/compiled code null exception
488 stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); 498 stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
489 } 499 }
490 } 500 }