Mercurial > hg > graal-compiler
diff 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 |
line wrap: on
line diff
--- a/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp Wed Apr 08 19:08:09 2015 +0200 +++ b/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp Wed Apr 08 19:13:41 2015 +0200 @@ -24,6 +24,7 @@ // no precompiled headers #include "asm/macroAssembler.hpp" +#include "macroAssembler_sparc.hpp" #include "classfile/classLoader.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" @@ -483,6 +484,15 @@ } #endif // COMPILER2 +#ifdef GRAAL + else if (sig == SIGILL && info->si_trapno == 0x100 + ST_RESERVED_FOR_USER_0) { + printf("SIGILL 0x%x 0x%x\n", info->si_trapno, ST_RESERVED_FOR_USER_0); + uc->uc_mcontext.gregs[REG_PC] = (greg_t)pc+4; + uc->uc_mcontext.gregs[REG_nPC] = (greg_t)npc + 4; + return true; + } +#endif // GRAAL + else if (sig == SIGSEGV && info->si_code > 0 && !MacroAssembler::needs_explicit_null_check((intptr_t)info->si_addr)) { // Determination of interpreter/vtable stub/compiled code null exception stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);