about summary refs log tree commit diff stats
path: root/src/libtools
diff options
context:
space:
mode:
Diffstat (limited to 'src/libtools')
-rw-r--r--src/libtools/signals.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index cabcd5f4..163ae7b3 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -1683,10 +1683,11 @@ void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx)
                         }
                         dynarec_log(LOG_INFO, "Dynablock (%p, x64addr=%p) %s, getting out at %s %p (%p)!\n", db, db->x64_addr, is_hotpage?"in HotPage":"dirty",(void*)R_RIP, type_callret?"self-loop":"ret from callret", (void*)addr);
                         emu->test.clean = 0;
+                        // use "3" to regen a dynablock at current pc (else it will first do an interp run)
                         #ifdef ANDROID
-                        siglongjmp(*(JUMPBUFF*)emu->jmpbuf, 2);
+                        siglongjmp(*(JUMPBUFF*)emu->jmpbuf, 3);
                         #else
-                        siglongjmp(emu->jmpbuf, 2);
+                        siglongjmp(emu->jmpbuf, 3);
                         #endif
                     }
                     dynarec_log(LOG_INFO, "Warning, Dirty %s (%p for db %p/%p) detected, but jmpbuffer not ready!\n", type_callret?"self-loop":"ret from callret", (void*)addr, db, (void*)db->x64_addr);