diff options
| author | xctan <xctan@cirno.icu> | 2025-01-25 23:03:15 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-25 16:03:15 +0100 |
| commit | 9e58047980175fbd2bde97b7b0b2de5fa8dffbed (patch) | |
| tree | 00f6caffd2199b22c1c5a1e27370c2f8133081d9 | |
| parent | 6f8f37e8ffc61a496c9e533fdca83d14adc5ee28 (diff) | |
| download | box64-9e58047980175fbd2bde97b7b0b2de5fa8dffbed.tar.gz box64-9e58047980175fbd2bde97b7b0b2de5fa8dffbed.zip | |
[RV64_DYNAREC] Added unaligned codegen for MOVSW (#2296)
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_66.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_66.c b/src/dynarec/rv64/dynarec_rv64_66.c index 3bffea83..f5bd1794 100644 --- a/src/dynarec/rv64/dynarec_rv64_66.c +++ b/src/dynarec/rv64/dynarec_rv64_66.c @@ -878,7 +878,13 @@ uintptr_t dynarec64_66(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni INST_NAME("MOVSW"); GETDIR(x3, x1, 2); LH(x1, xRSI, 0); - SH(x1, xRDI, 0); + IF_UNALIGNED(ip) { + SB(x1, xRDI, 0); + SRLI(x1, x1, 8); + SB(x1, xRDI, 1); + } else { + SH(x1, xRDI, 0); + } ADD(xRSI, xRSI, x3); ADD(xRDI, xRDI, x3); } |