about summary refs log tree commit diff stats
path: root/src/libtools/signal32.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libtools/signal32.c')
-rw-r--r--src/libtools/signal32.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libtools/signal32.c b/src/libtools/signal32.c
index 9399aba8..d34cff1f 100644
--- a/src/libtools/signal32.c
+++ b/src/libtools/signal32.c
@@ -38,13 +38,16 @@
 #include "dynarec_native.h"
 #if defined(ARM64)
 #include "dynarec/arm64/arm64_mapping.h"
-#define CONTEXT_REG(P, X) P->uc_mcontext.regs[X]
+#define CONTEXT_REG(P, X)   P->uc_mcontext.regs[X]
+#define CONTEXT_PC(P)       P->uc_mcontext.pc
 #elif defined(LA64)
 #include "dynarec/la64/la64_mapping.h"
-#define CONTEXT_REG(P, X) P->uc_mcontext.__gregs[X]
+#define CONTEXT_REG(P, X)   P->uc_mcontext.__gregs[X]
+#define CONTEXT_PC(P)       P->uc_mcontext.__pc;
 #elif defined(RV64)
 #include "dynarec/rv64/rv64_mapping.h"
-#define CONTEXT_REG(P, X) P->uc_mcontext.__gregs[X]
+#define CONTEXT_REG(P, X)   P->uc_mcontext.__gregs[X]
+#define CONTEXT_PC(P)       P->uc_mcontext.__gregs[REG_PC]
 #else
 #error Unsupported Architecture
 #endif //arch
@@ -497,7 +500,7 @@ void my_sigactionhandler_oldcode_32(x64emu_t* emu, int32_t sig, int simple, sigi
     ucontext_t *p = (ucontext_t *)ucntx;
     void* pc = NULL;
     if(p) {
-        pc = (void*)p->uc_mcontext.pc;
+        pc = (void*)CONTEXT_PC(p);
         if(db)
             frame = from_ptr((ptr_t)CONTEXT_REG(p, xRSP));
     }