diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-10-03 10:35:08 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-10-03 10:35:08 +0200 |
| commit | 5768989e54ef596b77449f11e1910186a835e422 (patch) | |
| tree | c4a380c09d29eb9933f9e3b920782fb8b5df6575 | |
| parent | c4c9f1b8cdc3d45a3f17b97556f43cb2133605d7 (diff) | |
| download | box64-5768989e54ef596b77449f11e1910186a835e422.tar.gz box64-5768989e54ef596b77449f11e1910186a835e422.zip | |
[DYNAREC] Fixe a speed regression introduced with 3fe020572dfc0636ab82bae962c3514134e9e128 (for #3038)
| -rw-r--r-- | src/dynarec/dynarec.c | 9 | ||||
| -rw-r--r-- | src/emu/x64emu.c | 2 | ||||
| -rw-r--r-- | src/emu/x64run.c | 2 | ||||
| -rw-r--r-- | src/include/box64cpu.h | 2 | ||||
| -rw-r--r-- | wine/wow64/wowbox64.c | 2 |
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) |