Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: arch.h 5330 2006-09-05 18:43:12Z edwin $
-
*/
#include "config.h"
uint16_t opc;
uint32_t val, regval, off;
bool adrreg;
- java_objectheader *e;
+ void *p;
mcontext_t *_mc;
_mc = &_uc->uc_mcontext;
/*fprintf(stderr, "SEGV: sp=%x, xpc=%x, regval=%x\n", sp, xpc, regval);
*/
- e = exceptions_new_hardware_exception(0, sp, xpc, xpc, EXCEPTION_HARDWARE_NULLPOINTER, regval, &sfi);
- _mc->gregs[GREGS_ADRREG_OFF + REG_ATMP1] = (ptrint) e;
- _mc->gregs[GREGS_ADRREG_OFF + REG_ATMP2_XPC] = (ptrint) xpc;
- _mc->gregs[R_PC] = (ptrint) asm_handle_exception;
+ /* create stackframeinfo */
+
+ stacktrace_create_extern_stackframeinfo(&sfi, NULL, sp, xpc, xpc);
+
+ /* Handle the type. */
+
+ p = signal_handle(xpc, EXCEPTION_HARDWARE_NULLPOINTER, regval);
+
+ /* remove stackframeinfo */
+
+ stacktrace_remove_stackframeinfo(&sfi);
+
+ _mc->gregs[GREGS_ADRREG_OFF + REG_ATMP1] = (intptr_t) p;
+ _mc->gregs[GREGS_ADRREG_OFF + REG_ATMP2_XPC] = (intptr_t) xpc;
+ _mc->gregs[R_PC] = (intptr_t) asm_handle_exception;
}
/* md_signal_handler_sigill *******************************************
uint16_t opc;
uint32_t type;
uint32_t val, regval;
- java_objectheader *e;
+ void *p;
mcontext_t *_mc;
xpc = siginfo->si_addr;
/*fprintf(stderr, "NEW HWE: sp=%x, xpc=%x, tpye=%x, regval=%x\n", sp, xpc, type, regval);
*/
- e = exceptions_new_hardware_exception(0, sp, xpc, xpc, type, regval, &sfi);
- _mc->gregs[GREGS_ADRREG_OFF + REG_ATMP1] = (ptrint) e;
- _mc->gregs[GREGS_ADRREG_OFF + REG_ATMP2_XPC] = (ptrint) xpc;
- _mc->gregs[R_PC] = (ptrint) asm_handle_exception;
+ /* create stackframeinfo */
+
+ stacktrace_create_extern_stackframeinfo(&sfi, NULL, sp, xpc, xpc);
+
+ /* Handle the type. */
+
+ p = signal_handle(xpc, type, val);
+
+ /* remove stackframeinfo */
+
+ stacktrace_remove_stackframeinfo(&sfi);
+
+ _mc->gregs[GREGS_ADRREG_OFF + REG_ATMP1] = (intptr_t) p;
+ _mc->gregs[GREGS_ADRREG_OFF + REG_ATMP2_XPC] = (intptr_t) xpc;
+ _mc->gregs[R_PC] = (intptr_t) asm_handle_exception;
}