diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-03-30 15:19:34 +0000 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-03-30 15:19:34 +0000 |
| commit | f81d99289fe9fcc96893b67b10e535f1b1251cd9 (patch) | |
| tree | 13f59f1bc03f67c0d4b5b146fcd4ac4ed7fab141 /src | |
| parent | 97739f885217343be2110832e06735b534423370 (diff) | |
| download | box64-f81d99289fe9fcc96893b67b10e535f1b1251cd9.tar.gz box64-f81d99289fe9fcc96893b67b10e535f1b1251cd9.zip | |
[RV64_DYNAREC] pass0 and 1 where missing fpu propagation
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_pass0.h | 5 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_pass1.h | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_pass0.h b/src/dynarec/rv64/dynarec_rv64_pass0.h index fd0f617f..dc5b9705 100644 --- a/src/dynarec/rv64/dynarec_rv64_pass0.h +++ b/src/dynarec/rv64/dynarec_rv64_pass0.h @@ -17,7 +17,7 @@ dyn->f.dfnone=((B)&SF_SET)?1:0; #define EMIT(A) #define JUMP(A, C) add_next(dyn, (uintptr_t)A); dyn->insts[ninst].x64.jmp = A; dyn->insts[ninst].x64.jmp_cond = C -#define BARRIER(A) if(A!=BARRIER_MAYBE) {fpu_purgecache(dyn, ninst, 0, x1, x2, x3); dyn->insts[ninst].x64.barrier = A;} else dyn->insts[ninst].barrier_maybe = 1 +#define BARRIER(A) if(A!=BARRIER_MAYBE) {fpu_purgecache(dyn, ninst, 1, x1, x2, x3); dyn->insts[ninst].x64.barrier = A;} else dyn->insts[ninst].barrier_maybe = 1 #define BARRIER_NEXT(A) dyn->insts[ninst+1].x64.barrier = A #define NEW_INST \ ++dyn->size; \ @@ -27,11 +27,14 @@ dyn->cap *= 2; \ } \ dyn->insts[ninst].x64.addr = ip; \ + dyn->e.combined1 = dyn->e.combined2 = 0;\ + dyn->e.swapped = 0; dyn->e.barrier = 0; \ dyn->insts[ninst].f_entry = dyn->f; \ if(ninst) {dyn->insts[ninst-1].x64.size = dyn->insts[ninst].x64.addr - dyn->insts[ninst-1].x64.addr;} #define INST_EPILOG \ dyn->insts[ninst].f_exit = dyn->f; \ + dyn->insts[ninst].e = dyn->e; \ dyn->insts[ninst].x64.has_next = (ok>0)?1:0; #define INST_NAME(name) #define DEFAULT \ diff --git a/src/dynarec/rv64/dynarec_rv64_pass1.h b/src/dynarec/rv64/dynarec_rv64_pass1.h index 9e80d7b0..c818c26c 100644 --- a/src/dynarec/rv64/dynarec_rv64_pass1.h +++ b/src/dynarec/rv64/dynarec_rv64_pass1.h @@ -4,8 +4,11 @@ #define EMIT(A) #define NEW_INST \ dyn->insts[ninst].f_entry = dyn->f; \ + dyn->e.combined1 = dyn->e.combined2 = 0;\ + dyn->e.swapped = 0; dyn->e.barrier = 0 #define INST_EPILOG \ + dyn->insts[ninst].e = dyn->e; \ dyn->insts[ninst].f_exit = dyn->f #define INST_NAME(name) |