diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2024-07-22 15:19:27 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-22 09:19:27 +0200 |
| commit | 3b1fbef95ca3f6842fe4edc8f7c12f776eb0dccb (patch) | |
| tree | c1004baef9ea1d55b555269691e9a81d7436a4f9 /src | |
| parent | 2e6acc86e15927cbfa416b94a226494aae84662d (diff) | |
| download | box64-3b1fbef95ca3f6842fe4edc8f7c12f776eb0dccb.tar.gz box64-3b1fbef95ca3f6842fe4edc8f7c12f776eb0dccb.zip | |
[DYNAREC] Fixed CI failures for RV64 and LA64 (#1702)
* [DYNAREC] Fixed CI failures for RV64 and LA64 * comment out android tests for now
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_00.c | 13 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_00_3.c | 12 |
2 files changed, 14 insertions, 11 deletions
diff --git a/src/dynarec/la64/dynarec_la64_00.c b/src/dynarec/la64/dynarec_la64_00.c index 0aa9a65d..02d2b8dc 100644 --- a/src/dynarec/la64/dynarec_la64_00.c +++ b/src/dynarec/la64/dynarec_la64_00.c @@ -1624,18 +1624,19 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni jump_to_epilog_fast(dyn, 0, xRIP, ninst); } } else { + INST_NAME("INT 3"); if (!box64_ignoreint3) { - INST_NAME("INT 3"); // check if TRAP signal is handled - LD_D(x1, xEmu, offsetof(x64emu_t, context)); - MOV64x(x2, offsetof(box64context_t, signals[SIGTRAP])); - ADD_D(x2, x2, x1); - LD_D(x3, x2, 0); + TABLE64(x1, (uintptr_t)my_context); + MOV32w(x2, offsetof(box64context_t, signals[SIGTRAP])); + LDX_D(x3, x1, x2); CBZ_NEXT(x3); - GETIP(ip); + GETIP(addr); STORE_XEMU_CALL(); CALL(native_int3, -1); LOAD_XEMU_CALL(); + *need_epilog = 0; + *ok = 0; } } break; diff --git a/src/dynarec/rv64/dynarec_rv64_00_3.c b/src/dynarec/rv64/dynarec_rv64_00_3.c index 43ef69d7..62618e42 100644 --- a/src/dynarec/rv64/dynarec_rv64_00_3.c +++ b/src/dynarec/rv64/dynarec_rv64_00_3.c @@ -420,18 +420,20 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int } } } else { - if(!box64_ignoreint3) { - INST_NAME("INT 3"); + INST_NAME("INT 3"); + if (!box64_ignoreint3) { // check if TRAP signal is handled - LD(x1, xEmu, offsetof(x64emu_t, context)); - MOV64x(x2, offsetof(box64context_t, signals[SIGTRAP])); + TABLE64(x1, (uintptr_t)my_context); + MOV32w(x2, offsetof(box64context_t, signals[SIGTRAP])); ADD(x2, x2, x1); LD(x3, x2, 0); CBZ_NEXT(x3); - GETIP(ip); + GETIP(addr); STORE_XEMU_CALL(x3); CALL(native_int3, -1); LOAD_XEMU_CALL(); + *need_epilog = 0; + *ok = 0; } break; } |