about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2023-04-19 20:00:46 +0800
committerGitHub <noreply@github.com>2023-04-19 14:00:46 +0200
commitfba75e31221d6f978dc31fe9c1baedc5e54f2f12 (patch)
treeacb433d2dc0699fed0a0493ac25c5f910f356153 /src
parent91bf99d2a58c953d04fe411f498e662d1bcd8f3c (diff)
downloadbox64-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.c4
-rw-r--r--src/dynarec/rv64/dynarec_rv64_f30f.c2
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));