about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2023-11-20 18:06:49 +0800
committerGitHub <noreply@github.com>2023-11-20 11:06:49 +0100
commit572a84c19bd1bf96710aded944c50a8b1b85a35c (patch)
tree7dc9bad5c41991db28e1a18ef7f0e54c4acee6ee /src
parent8fe46092c0ed5479b8143b923220010433669caa (diff)
downloadbox64-572a84c19bd1bf96710aded944c50a8b1b85a35c.tar.gz
box64-572a84c19bd1bf96710aded944c50a8b1b85a35c.zip
[RV64_DYNAREC] Added FD STD, fixed FC CLD and F3 A4 REP MOVSB (for minipad2) (#1075)
* [RV64_DYNAREC] Added FD STD opcode

* [RV64_DYNAREC] Fixed F3 A4 REP MOVSB opcode
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/rv64/dynarec_rv64_00_2.c2
-rw-r--r--src/dynarec/rv64/dynarec_rv64_00_3.c6
2 files changed, 6 insertions, 2 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_00_2.c b/src/dynarec/rv64/dynarec_rv64_00_2.c
index b2a0c420..11c24bc8 100644
--- a/src/dynarec/rv64/dynarec_rv64_00_2.c
+++ b/src/dynarec/rv64/dynarec_rv64_00_2.c
@@ -556,7 +556,7 @@ uintptr_t dynarec64_00_2(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 B_NEXT_nocond;
                 MARK2;  // Part with DF==1
                 LBU(x1, xRSI, 0);
-                LBU(x1, xRDI, 0);
+                SB(x1, xRDI, 0);
                 SUBI(xRSI, xRSI, 1);
                 SUBI(xRDI, xRDI, 1);
                 SUBI(xRCX, xRCX, 1);
diff --git a/src/dynarec/rv64/dynarec_rv64_00_3.c b/src/dynarec/rv64/dynarec_rv64_00_3.c
index 39a1aab9..ddc78d67 100644
--- a/src/dynarec/rv64/dynarec_rv64_00_3.c
+++ b/src/dynarec/rv64/dynarec_rv64_00_3.c
@@ -1076,7 +1076,11 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             break;
         case 0xFC:
             INST_NAME("CLD");
-            ANDI(xFlags, xFlags, ~(1<<F_CF));
+            ANDI(xFlags, xFlags, ~(1 << F_DF));
+            break;
+        case 0xFD:
+            INST_NAME("STD");
+            ORI(xFlags, xFlags, 1 << F_DF);
             break;
         case 0xFE:
             nextop = F8;