diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-03-13 10:54:27 +0000 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-03-13 10:54:37 +0000 |
| commit | 327b2355c178b88f908d42d71e709c88d60bb9f1 (patch) | |
| tree | 14948c1a7fd6f57a32e6361bd67344322a41d3cf /src/dynarec/dynarec_native_pass.c | |
| parent | 20308faef1e64056f6d8104ad1f649d0f0651b12 (diff) | |
| download | box64-327b2355c178b88f908d42d71e709c88d60bb9f1.tar.gz box64-327b2355c178b88f908d42d71e709c88d60bb9f1.zip | |
[DYNAREC] Fixed missing X_PEND need at end of block for unimplemented opcode
Diffstat (limited to 'src/dynarec/dynarec_native_pass.c')
| -rwxr-xr-x | src/dynarec/dynarec_native_pass.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c index 14f85b40..c07b6102 100755 --- a/src/dynarec/dynarec_native_pass.c +++ b/src/dynarec/dynarec_native_pass.c @@ -199,7 +199,19 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr) } } #endif - if(ok<0) {ok = 0; need_epilog=1;} + if(ok<0) { + ok = 0; need_epilog=1; + #if STEP == 0 + if(ninst) { + --ninst; + if(!dyn->insts[ninst].x64.barrier) { + BARRIER(BARRIER_FLOAT); + } + dyn->insts[ninst].x64.need_after |= X_PEND; + ++ninst; + } + #endif + } ++ninst; #if STEP == 0 if(ok && (((box64_dynarec_bigblock<stopblock) && !isJumpTableDefault64((void*)addr)) |