diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-03-08 16:47:00 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-03-08 16:47:00 +0100 |
| commit | 460277289bafc73aba1a548d893364235ef5aed6 (patch) | |
| tree | 9e3baef5eaa0847eb8cdbd2ed4e5428ea128a9f4 /src/dynarec | |
| parent | 35ed305718688dc28c967167c3cdffbafce50ab0 (diff) | |
| download | box64-460277289bafc73aba1a548d893364235ef5aed6.tar.gz box64-460277289bafc73aba1a548d893364235ef5aed6.zip | |
POPF opcode should not overwrite IF bit
Diffstat (limited to 'src/dynarec')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_00.c | 3 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_00_2.c | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c index c1ee3648..638c41de 100644 --- a/src/dynarec/arm64/dynarec_arm64_00.c +++ b/src/dynarec/arm64/dynarec_arm64_00.c @@ -1491,7 +1491,8 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin POP1z(xFlags); MOV32w(x1, 0x3F7FD7); ANDw_REG(xFlags, xFlags, x1); - ORRw_mask(xFlags, xFlags, 0b011111, 0); //mask=0x00000002 + MOV32w(x1, 0x202); + ORRw_REG(xFlags, xFlags, x1); SET_DFNONE(x1); if(box64_wine) { // should this be done all the time? TBZ_NEXT(xFlags, F_TF); diff --git a/src/dynarec/rv64/dynarec_rv64_00_2.c b/src/dynarec/rv64/dynarec_rv64_00_2.c index bc6ae6c9..e75e56d5 100644 --- a/src/dynarec/rv64/dynarec_rv64_00_2.c +++ b/src/dynarec/rv64/dynarec_rv64_00_2.c @@ -494,7 +494,7 @@ uintptr_t dynarec64_00_2(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int FLAGS_ADJUST_FROM11(xFlags, xFlags, x2); MOV32w(x1, 0x3F7FD7); AND(xFlags, xFlags, x1); - ORI(xFlags, xFlags, 0x2); + ORI(xFlags, xFlags, 0x202); SET_DFNONE(); if(box64_wine) { // should this be done all the time? ANDI(x1, xFlags, 1 << F_TF); |