diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-07-03 00:07:14 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-07-03 00:07:14 +0200 |
| commit | 53365241294de8eae2da2edfb6b47f04b02f5808 (patch) | |
| tree | 84207aa9154910518978b28ac0e3f28b72219e27 /src/dynarec/arm64/dynarec_arm64_d9.c | |
| parent | de30d37ba91b093d459365a93ea9cc4418fc502a (diff) | |
| download | box64-53365241294de8eae2da2edfb6b47f04b02f5808.tar.gz box64-53365241294de8eae2da2edfb6b47f04b02f5808.zip | |
[DYNAREC] Add a mecanism to remember fixed address accessed with LOCK, so MOV to/from them use a Memory Barrier automaticaly
Diffstat (limited to 'src/dynarec/arm64/dynarec_arm64_d9.c')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_d9.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_d9.c b/src/dynarec/arm64/dynarec_arm64_d9.c index d236b2fd..71517ecc 100644 --- a/src/dynarec/arm64/dynarec_arm64_d9.c +++ b/src/dynarec/arm64/dynarec_arm64_d9.c @@ -319,7 +319,7 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin s0 = v1; else s0 = fpu_get_scratch(dyn); - addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<2, 3, rex, 0, 0); + addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<2, 3, rex, NULL, 0, 0); VLDR32_U12(s0, ed, fixedaddress); if(!ST_IS_F(0)) { FCVT_D_S(v1, s0); @@ -334,7 +334,7 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin s0 = fpu_get_scratch(dyn); FCVT_S_D(s0, v1); } - addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<2, 3, rex, 0, 0); + addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<2, 3, rex, NULL, 0, 0); VSTR32_U12(s0, ed, fixedaddress); break; case 3: @@ -346,7 +346,7 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin s0 = fpu_get_scratch(dyn); FCVT_S_D(s0, v1); } - addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<2, 3, rex, 0, 0); + addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<2, 3, rex, NULL, 0, 0); VSTR32_U12(s0, ed, fixedaddress); x87_do_pop(dyn, ninst, x3); break; @@ -354,7 +354,7 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin INST_NAME("FLDENV Ed"); MESSAGE(LOG_DUMP, "Need Optimization\n"); fpu_purgecache(dyn, ninst, 0, x1, x2, x3); // maybe only x87, not SSE? - addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0, 0, rex, 0, 0); + addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0, 0, rex, NULL, 0, 0); if(ed!=x1) { MOVx_REG(x1, ed); } @@ -372,7 +372,7 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin INST_NAME("FNSTENV Ed"); MESSAGE(LOG_DUMP, "Need Optimization\n"); fpu_purgecache(dyn, ninst, 0, x1, x2, x3); // maybe only x87, not SSE? - addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0, 0, rex, 0, 0); + addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0, 0, rex, NULL, 0, 0); if(ed!=x1) { MOVx_REG(x1, ed); } @@ -381,7 +381,7 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin break; case 7: INST_NAME("FNSTCW Ew"); - addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xfff<<1, 1, rex, 0, 0); + addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, 0xfff<<1, 1, rex, NULL, 0, 0); ed = x1; wb1 = 1; LDRH_U12(x1, xEmu, offsetof(x64emu_t, cw)); |