about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2025-03-25 19:25:56 +0800
committerGitHub <noreply@github.com>2025-03-25 12:25:56 +0100
commit933381f5fab4b22ee5c16fd7c2878a45d5b6978e (patch)
tree3e5f3a656498ba14b0cc0b685c4c27988a412867
parenta021fc200532a7cdd769f733a2f857616fbdb655 (diff)
downloadbox64-933381f5fab4b22ee5c16fd7c2878a45d5b6978e.tar.gz
box64-933381f5fab4b22ee5c16fd7c2878a45d5b6978e.zip
[RV64_DYNAREC] Fixed D9 E5 FXAM opcode (#2466)
-rw-r--r--src/dynarec/rv64/dynarec_rv64_d9.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_d9.c b/src/dynarec/rv64/dynarec_rv64_d9.c
index 5f7cdb02..2da5d704 100644
--- a/src/dynarec/rv64/dynarec_rv64_d9.c
+++ b/src/dynarec/rv64/dynarec_rv64_d9.c
@@ -114,7 +114,7 @@ uintptr_t dynarec64_D9(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                 INST_NAME("FXAM");
 #if 1
                 i1 = x87_get_current_cache(dyn, ninst, 0, EXT_CACHE_ST_D);
-                // value put in x14
+                // value put in x4
                 if (i1 == -1) {
                     if (fpu_is_st_freed(dyn, ninst, 0)) {
                         MOV32w(x4, 0b100000100000000);
@@ -124,7 +124,7 @@ uintptr_t dynarec64_D9(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         i2 = -dyn->e.x87stack;
                         LWU(x3, xEmu, offsetof(x64emu_t, fpu_stack));
                         if (i2) {
-                            ADDI(x3, x3, i2);
+                            SUBI(x3, x3, i2);
                         }
                         MOV32w(x4, 0b100000100000000); // empty: C3,C2,C0 = 101
                         BGE_MARK3(xZR, x3);
@@ -179,7 +179,7 @@ uintptr_t dynarec64_D9(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                 BEQZ_MARK3(x3);
                 MOV32w(x4, 0b000000100000000); // NaN: C3,C2,C0 = 001
                 MARK3;
-                // Extract signa & Update SW
+                // Extract sign & Update SW
                 SRLI(x1, x2, 63);
                 SLLI(x1, x1, 9);
                 OR(x4, x4, x1); // C1