diff options
Diffstat (limited to 'src/libtools')
| -rw-r--r-- | src/libtools/signals.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c index fac0f478..c3c1c572 100644 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -1684,6 +1684,21 @@ dynarec_log(/*LOG_DEBUG*/LOG_INFO, "Repeated SIGSEGV with Access error on %p for for (int i=-4; i<4; ++i) { printf_log(log_minimum, "%sRSP%c0x%02x:0x%016lx", (i%4)?" ":"\n", i<0?'-':'+', abs(i)*8, *(uintptr_t*)(rsp+i*8)); } +#elif defined(LA464) + if(db) { + shown_regs = 1; + for (int i=0; i<16; ++i) { + if(!(i%4)) printf_log(log_minimum, "\n"); + printf_log(log_minimum, "%s:0x%016llx ", reg_name[i], p->uc_mcontext.__gregs[16+i]); + } + printf_log(log_minimum, "\n"); + for (int i=0; i<6; ++i) + printf_log(log_minimum, "%s:0x%04x ", seg_name[i], emu->segs[i]); + } + if(rsp!=addr && getProtection((uintptr_t)rsp-4*8) && getProtection((uintptr_t)rsp+4*8)) + for (int i=-4; i<4; ++i) { + printf_log(log_minimum, "%sRSP%c0x%02x:0x%016lx", (i%4)?" ":"\n", i<0?'-':'+', abs(i)*8, *(uintptr_t*)(rsp+i*8)); + } #else #warning TODO #endif |