diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2024-08-16 02:14:33 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-15 20:14:33 +0200 |
| commit | 7bb30efb5001145e78c6f81071e7b07cb98586e4 (patch) | |
| tree | 313dfcb10ddc2ea391b1b58f063d4924ac206e3b | |
| parent | 017d13a7b0717c61fda67322051ae8a92ce3e035 (diff) | |
| download | box64-7bb30efb5001145e78c6f81071e7b07cb98586e4.tar.gz box64-7bb30efb5001145e78c6f81071e7b07cb98586e4.zip | |
[RV64,LA64_DYNAREC] Small change when handling long CC INT 3 opcode (#1736)
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_00.c | 4 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_00_3.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/dynarec/la64/dynarec_la64_00.c b/src/dynarec/la64/dynarec_la64_00.c index 90824596..b2ceb004 100644 --- a/src/dynarec/la64/dynarec_la64_00.c +++ b/src/dynarec/la64/dynarec_la64_00.c @@ -1645,11 +1645,13 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni TABLE64(x1, (uintptr_t)my_context); MOV32w(x2, offsetof(box64context_t, signals[SIGTRAP])); LDX_D(x3, x1, x2); - CBZ_NEXT(x3); + BEQZ_MARK(x3); GETIP(addr); STORE_XEMU_CALL(); CALL(native_int3, -1); LOAD_XEMU_CALL(); + MARK; + jump_to_epilog(dyn, addr, 0, ninst); *need_epilog = 0; *ok = 0; } diff --git a/src/dynarec/rv64/dynarec_rv64_00_3.c b/src/dynarec/rv64/dynarec_rv64_00_3.c index f5fd7f9c..68a6f5f3 100644 --- a/src/dynarec/rv64/dynarec_rv64_00_3.c +++ b/src/dynarec/rv64/dynarec_rv64_00_3.c @@ -428,11 +428,13 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int MOV32w(x2, offsetof(box64context_t, signals[SIGTRAP])); ADD(x2, x2, x1); LD(x3, x2, 0); - CBZ_NEXT(x3); + BEQZ_MARK(x3); GETIP(addr); STORE_XEMU_CALL(x3); CALL(native_int3, -1); LOAD_XEMU_CALL(); + MARK; + jump_to_epilog(dyn, addr, 0, ninst); *need_epilog = 0; *ok = 0; } |