61 #if defined(ENABLE_GC_BOEHM)
70 n.fc_word = get_fpc_csr();
71 n.fc_struct.flush = 0;
72 set_fpc_csr(n.fc_word);
87 #if !defined(__UCLIBC__)
88 # if ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 5))
101 switch (cause & 0x0000003c) {
111 xpc = (
void*) (_mc->pc + disp);
113 xpc = (
void*) _mc->pc;
116 xpc = (
void*) _gregs[CTX_EPC];
132 #if !defined(__UCLIBC__)
133 void*
xpc = (
void*) _mc->pc;
135 void* xpc = (
void*) _gregs[CTX_EPC];
170 #if defined(__UCLIBC__)
171 _gregs = _mc->gpregs;
182 #if defined(__UCLIBC__)
183 es->
pc = _gregs[CTX_EPC];
185 es->
pc = (uint8_t*) (uintptr_t) _mc->pc;
188 es->
sp = (uint8_t*) (uintptr_t) _gregs[
REG_SP];
189 es->
pv = (uint8_t*) (uintptr_t) _gregs[
REG_PV];
190 es->
ra = (uint8_t*) (uintptr_t) _gregs[
REG_RA];
202 assert(
sizeof(_mc->fpregs.fp_r) ==
sizeof(es->
fltregs));
223 #if defined(__UCLIBC__)
224 _gregs = _mc->gpregs;
239 assert(
sizeof(_mc->fpregs.fp_r) ==
sizeof(es->
fltregs));
244 #if defined(__UCLIBC__)
245 _gregs[CTX_EPC] = es->
pc;
247 _mc->pc = (uintptr_t) es->
pc;
250 _gregs[
REG_SP] = (uintptr_t) es->
sp;
251 _gregs[
REG_PV] = (uintptr_t) es->
pv;
252 _gregs[
REG_RA] = (uintptr_t) es->
ra;
void md_signal_handler_sigsegv(int sig, siginfo_t *siginfo, void *_p)
NullPointerException signal handler for hardware null pointer check.
void md_signal_handler_sigill(int sig, siginfo_t *siginfo, void *_p)
Illegal Instruction signal handler for hardware exception checks.
typedef void(JNICALL *jvmtiEventSingleStep)(jvmtiEnv *jvmti_env
struct sigcontext uc_mcontext
void md_signal_handler_sigusr2(int sig, siginfo_t *siginfo, void *_p)
static void * memcpy(void *dest, const void *src, size_t n)
void md_executionstate_write(executionstate_t *es, void *context)
void md_executionstate_read(executionstate_t *es, void *context)
void trap_handle(int sig, void *xpc, void *context)
Handles the signal which is generated by trap instructions, caught by a signal handler and calls the ...
uintptr_t intregs[INT_REG_CNT]
double fltregs[FLT_REG_CNT]