diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2023-04-19 20:00:46 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-19 14:00:46 +0200 |
| commit | fba75e31221d6f978dc31fe9c1baedc5e54f2f12 (patch) | |
| tree | acb433d2dc0699fed0a0493ac25c5f910f356153 /src | |
| parent | 91bf99d2a58c953d04fe411f498e662d1bcd8f3c (diff) | |
| download | box64-fba75e31221d6f978dc31fe9c1baedc5e54f2f12.tar.gz box64-fba75e31221d6f978dc31fe9c1baedc5e54f2f12.zip | |
[RV64_DYNAREC] Fixed some bugs (#714)
* Fixed F3 0F BD LZCNT opcode * Fixed 66 29 SUB opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_66.c | 4 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_f30f.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_66.c b/src/dynarec/rv64/dynarec_rv64_66.c index 55c79e9b..aa2d5f7c 100644 --- a/src/dynarec/rv64/dynarec_rv64_66.c +++ b/src/dynarec/rv64/dynarec_rv64_66.c @@ -155,12 +155,12 @@ uintptr_t dynarec64_66(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni OR(xRAX, xRAX, x1); break; case 0x29: - INST_NAME("SUB Ex, Gw"); + INST_NAME("SUB Ew, Gw"); SETFLAGS(X_ALL, SF_SET_PENDING); nextop = F8; GETGW(x1); GETEW(x2, 0); - emit_sub16(dyn, ninst, x2, x1, x3, x4, x5); + emit_sub16(dyn, ninst, x2, x1, x4, x5, x6); EWBACK; break; case 0x2B: diff --git a/src/dynarec/rv64/dynarec_rv64_f30f.c b/src/dynarec/rv64/dynarec_rv64_f30f.c index 945a62d6..bce8879f 100644 --- a/src/dynarec/rv64/dynarec_rv64_f30f.c +++ b/src/dynarec/rv64/dynarec_rv64_f30f.c @@ -288,7 +288,7 @@ uintptr_t dynarec64_F30F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ed = x4; } BNE_MARK(ed, xZR); - MOV32w(gd, 0); + MOV32w(gd, rex.w?64:32); B_MARK2_nocond; MARK; ANDI(xFlags, xFlags, ~(1<<F_ZF)); |