diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-03-25 19:25:56 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-25 12:25:56 +0100 |
| commit | 933381f5fab4b22ee5c16fd7c2878a45d5b6978e (patch) | |
| tree | 3e5f3a656498ba14b0cc0b685c4c27988a412867 | |
| parent | a021fc200532a7cdd769f733a2f857616fbdb655 (diff) | |
| download | box64-933381f5fab4b22ee5c16fd7c2878a45d5b6978e.tar.gz box64-933381f5fab4b22ee5c16fd7c2878a45d5b6978e.zip | |
[RV64_DYNAREC] Fixed D9 E5 FXAM opcode (#2466)
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_d9.c | 6 |
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 |