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.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index 0abea7ee..b5b0313a 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -589,6 +589,10 @@ void adjustregs(x64emu_t* emu) {
         R_RSI-=step;
         return;
     }
+    if(mem[idx+0]==0x8F && (mem[idx+1]&0xc0)!=0xc0) {
+        // POP Ed, issue on write address, restore RSP as in before the pop
+        R_RSP -= is66?2:(rex.is32bits?4:8);
+    }
 #elif defined(LA64)
 #elif defined(RV64)
 #else