diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-04-09 15:19:45 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-04-09 15:19:45 +0200 |
| commit | 8c991cb6762d3a1384cec16d6e54402ce276ea9e (patch) | |
| tree | 3d109e77532ce32822efec69950b7db787368fcc /src/dynarec/dynarec_native_pass.c | |
| parent | 70770db8bec892e66fa8b6834f1ea4a8f27325b6 (diff) | |
| download | box64-8c991cb6762d3a1384cec16d6e54402ce276ea9e.tar.gz box64-8c991cb6762d3a1384cec16d6e54402ce276ea9e.zip | |
[DYNAREC] Better handling of self-loop and added CALLRET=2 settings (ARM64 only, RV64 and LA64 todo)
Diffstat (limited to 'src/dynarec/dynarec_native_pass.c')
| -rw-r--r-- | src/dynarec/dynarec_native_pass.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c index bf30503c..99cb2449 100644 --- a/src/dynarec/dynarec_native_pass.c +++ b/src/dynarec/dynarec_native_pass.c @@ -14,6 +14,7 @@ #include "x64trace.h" #include "dynablock.h" #include "dynarec_native.h" +#include "dynablock_private.h" #include "custommem.h" #include "elfloader.h" #include "x64test.h" @@ -114,6 +115,10 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int dyn->f.dfnone_here = 0; NEW_INST; MESSAGE(LOG_DUMP, "New Instruction %s:%p, native:%p\n", is32bits?"x86":"x64",(void*)addr, (void*)dyn->block); + #ifdef ARCH_NOP + if(dyn->insts[ninst].x64.alive && dyn->insts[ninst].x64.self_loop) + CALLRET_LOOP(); + #endif if(!ninst) { GOTEST(x1, x2); } |