diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-12-24 17:16:37 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-12-24 17:16:37 +0100 |
| commit | 68e3c2be9b25df05451f3d635971b7acbf12a953 (patch) | |
| tree | 8a6632314adffd6c63fc7fcb01e40898e520fd1a /src | |
| parent | 099df7a0eee86103b91fe808ca2fd8ae7f043125 (diff) | |
| parent | 21b6537215c8b5f9a5083ba1318d5834bec32f14 (diff) | |
| download | box64-68e3c2be9b25df05451f3d635971b7acbf12a953.tar.gz box64-68e3c2be9b25df05451f3d635971b7acbf12a953.zip | |
Merge branch 'main' of https://github.com/ptitSeb/box64
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_00_3.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_00_3.c b/src/dynarec/rv64/dynarec_rv64_00_3.c index ec59707d..670de262 100644 --- a/src/dynarec/rv64/dynarec_rv64_00_3.c +++ b/src/dynarec/rv64/dynarec_rv64_00_3.c @@ -340,9 +340,11 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int MOV64x(x2, offsetof(box64context_t, signals[SIGTRAP])); ADD(x2, x2, x1); LD(x3, x2, 0); - CBNZ_NEXT(x3); - MOV64x(x1, SIGTRAP); - CALL_(raise, -1, 0); + CBZ_NEXT(x3); + GETIP(ip); + STORE_XEMU_CALL(x3); + CALL(native_int3, -1); + LOAD_XEMU_CALL(); break; #else DEFAULT; @@ -351,10 +353,15 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int break; case 0xCD: u8 = F8; - if (box64_wine && u8 == 0x2D) { - INST_NAME("INT 2D"); + if (box64_wine && (u8==0x2D || u8==0x2C || u8==0x29)) { + INST_NAME("INT 29/2c/2d"); // lets do nothing - MESSAGE(LOG_INFO, "INT 2D Windows anti-debug hack\n"); + MESSAGE(LOG_INFO, "INT 29/2c/2d Windows interruption\n"); + GETIP(ip); + STORE_XEMU_CALL(x3); + MOV32w(x1, u8); + CALL(native_int, -1); + LOAD_XEMU_CALL(); } else if (u8 == 0x80) { INST_NAME("32bits SYSCALL"); NOTEST(x1); |