# HG changeset patch # User Stefan Anzinger # Date 1428513221 -7200 # Node ID 6f8d03da5d08163285f16ea3f9880e6974648c4e # Parent 17caeb034a6344f28d5583dd786cc608196190ce [SPARC] Ignore SIGILL instruction when the trap is 0x10 (breakpoint op, used for GRAAL debugging) diff -r 17caeb034a63 -r 6f8d03da5d08 src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp --- 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);