Mercurial > hg > truffle
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 } |