about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-10-03 10:35:08 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-10-03 10:35:08 +0200
commit5768989e54ef596b77449f11e1910186a835e422 (patch)
treec4a380c09d29eb9933f9e3b920782fb8b5df6575
parentc4c9f1b8cdc3d45a3f17b97556f43cb2133605d7 (diff)
downloadbox64-5768989e54ef596b77449f11e1910186a835e422.tar.gz
box64-5768989e54ef596b77449f11e1910186a835e422.zip
[DYNAREC] Fixe a speed regression introduced with 3fe020572dfc0636ab82bae962c3514134e9e128 (for #3038)
-rw-r--r--src/dynarec/dynarec.c9
-rw-r--r--src/emu/x64emu.c2
-rw-r--r--src/emu/x64run.c2
-rw-r--r--src/include/box64cpu.h2
-rw-r--r--wine/wow64/wowbox64.c2
5 files changed, 6 insertions, 11 deletions
diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c
index 25612ec0..5bc1b2df 100644
--- a/src/dynarec/dynarec.c
+++ b/src/dynarec/dynarec.c
@@ -147,7 +147,6 @@ void DynaRun(x64emu_t* emu)
     // prepare setjump for signal handling
     JUMPBUFF jmpbuf[1] = {0};
     int skip = 0;
-    int need_tf = 0;
     JUMPBUFF *old_jmpbuf = emu->jmpbuf;
     #ifdef RV64
     uintptr_t old_savesp = emu->xSPSave;
@@ -185,7 +184,7 @@ void DynaRun(x64emu_t* emu)
 #ifdef DYNAREC
         if(!BOX64ENV(dynarec))
 #endif
-            Run(emu, 0, 0);
+            Run(emu, 0);
 #ifdef DYNAREC
         else {
             int newis32bits = (emu->segs[_CS]==0x23);
@@ -217,8 +216,7 @@ void DynaRun(x64emu_t* emu)
                 }
                 if (BOX64ENV(dynarec_test))
                     emu->test.clean = 0;
-                Run(emu, 1, need_tf);
-                need_tf = 0;
+                Run(emu, 1);
             } else {
                 dynarec_log(LOG_DEBUG, "%04d|Running DynaRec Block @%p (%p) of %d x64 insts (hash=0x%x) emu=%p\n", GetTID(), (void*)R_RIP, block->block, block->isize, block->hash, emu);
                 if(!BOX64ENV(dynarec_df)) {
@@ -226,9 +224,6 @@ void DynaRun(x64emu_t* emu)
                 }
                 // block is here, let's run it!
                 native_prolog(emu, block->block);
-                if(ACCESS_FLAG(F_TF) && !emu->quit)
-                    need_tf = 1; 
-                    skip = 1;
             }
             if(emu->fork) {
                 int forktype = emu->fork;
diff --git a/src/emu/x64emu.c b/src/emu/x64emu.c
index bea8f24b..e32ce693 100644
--- a/src/emu/x64emu.c
+++ b/src/emu/x64emu.c
@@ -560,7 +560,7 @@ void EmuCall(x64emu_t* emu, uintptr_t addr)
         PushExit(emu);
     R_RIP = addr;
     emu->df = d_none;
-    Run(emu, 0, 0);
+    Run(emu, 0);
     emu->quit = 0;  // reset Quit flags...
     emu->df = d_none;
     if(emu->flags.quitonlongjmp && emu->flags.longjmp) {
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index b3765fc4..58003b80 100644
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -32,7 +32,7 @@
 int RunTest(x64test_t *test)
 #else
 int running32bits = 0;
-int Run(x64emu_t *emu, int step, int need_tf)
+int Run(x64emu_t *emu, int step)
 #endif
 {
     uint8_t opcode;
diff --git a/src/include/box64cpu.h b/src/include/box64cpu.h
index b565e06f..72df2c69 100644
--- a/src/include/box64cpu.h
+++ b/src/include/box64cpu.h
@@ -3,7 +3,7 @@
 
 typedef struct x64emu_s x64emu_t;
 
-int Run(x64emu_t *emu, int step, int need_tf);
+int Run(x64emu_t *emu, int step);
 void EmuCall(x64emu_t* emu, uintptr_t addr);
 void StopEmu(x64emu_t* emu, const char* reason, int is32bits);
 void DynaRun(x64emu_t *emu);
diff --git a/wine/wow64/wowbox64.c b/wine/wow64/wowbox64.c
index dc54ff8e..67d20e05 100644
--- a/wine/wow64/wowbox64.c
+++ b/wine/wow64/wowbox64.c
@@ -364,7 +364,7 @@ void WINAPI BTCpuSimulate(void)
     if (box64env.dynarec)
         DynaRun(emu);
     else
-        Run(emu, 0, 0);
+        Run(emu, 0);
 }
 
 NTSTATUS WINAPI BTCpuThreadInit(void)