diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-04-03 21:48:04 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-03 15:48:04 +0200 |
| commit | 8cba915bca8d48a7ac4d9571004975320f71a7ff (patch) | |
| tree | 259c7742564658696da8f75f421e29c1ceb9bf7e /src | |
| parent | cd3163a78585c35d41a18f248cb9575c46ffab38 (diff) | |
| download | box64-8cba915bca8d48a7ac4d9571004975320f71a7ff.tar.gz box64-8cba915bca8d48a7ac4d9571004975320f71a7ff.zip | |
Moved more functions to os.h (#2497)
* Removed some unused function declarations * Moved more functions to os.h * review
Diffstat (limited to 'src')
112 files changed, 93 insertions, 147 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c index 5df6fc8b..5abb40cb 100644 --- a/src/dynarec/arm64/dynarec_arm64_00.c +++ b/src/dynarec/arm64/dynarec_arm64_00.c @@ -4,6 +4,7 @@ #include <errno.h> #include <signal.h> +#include "os.h" #include "debug.h" #include "box64context.h" #include "box64cpu.h" @@ -13,7 +14,6 @@ #include "box64stack.h" #include "callback.h" #include "bridge.h" -#include "emu/x64run_private.h" #include "x64trace.h" #include "dynarec_native.h" #include "custommem.h" @@ -2545,7 +2545,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin case 0xCC: SETFLAGS(X_ALL, SF_SET_NODF); // Hack, set all flags (to an unknown state...) NOTEST(x1); - if(PK(0)=='S' && PK(1)=='C') { + if (IsBridgeSignature(PK(0), PK(1))) { addr+=2; //BARRIER(BARRIER_FLOAT); INST_NAME("Special Box64 instruction"); @@ -2578,7 +2578,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STORE_XEMU_CALL(xRIP); ADDx_U12(x3, xRIP, 8+8); // expected return address ADDx_U12(x1, xEmu, (uint32_t)offsetof(x64emu_t, ip)); // setup addr as &emu->ip - CALL_(x64Int3, -1, x3); + CALL_(EmuInt3, -1, x3); SMWRITE2(); LOAD_XEMU_CALL(xRIP); addr+=8+8; @@ -2630,7 +2630,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin SMEND(); GETIP(addr); STORE_XEMU_CALL(xRIP); - CALL_S(x86Syscall, -1); + CALL_S(EmuX86Syscall, -1); LOAD_XEMU_CALL(xRIP); TABLE64(x3, addr); // expected return address CMPSx_REG(xRIP, x3); @@ -3308,7 +3308,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin #endif } #if STEP < 2 - if (!rex.is32bits && isNativeCall(addr + i32, rex.is32bits, &dyn->insts[ninst].natcall, &dyn->insts[ninst].retn)) + if (!rex.is32bits && IsNativeCall(addr + i32, rex.is32bits, &dyn->insts[ninst].natcall, &dyn->insts[ninst].retn)) tmp = dyn->insts[ninst].pass2choice = 3; else tmp = dyn->insts[ninst].pass2choice = i32?0:1; @@ -3346,7 +3346,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin GETIP_(dyn->insts[ninst].natcall); // read the 0xCC already STORE_XEMU_CALL(xRIP); ADDx_U12(x1, xEmu, (uint32_t)offsetof(x64emu_t, ip)); // setup addr as &emu->ip - CALL_S(x64Int3, -1); + CALL_S(EmuInt3, -1); SMWRITE2(); LOAD_XEMU_CALL(xRIP); MOV64x(x3, dyn->insts[ninst].natcall); diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index 6e049951..b66f5bf3 100644 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" @@ -150,7 +149,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin SMEND(); GETIP(addr); STORE_XEMU_CALL(xRIP); - CALL_S(x64Syscall, -1); + CALL_S(EmuX64Syscall, -1); LOAD_XEMU_CALL(xRIP); TABLE64(x3, addr); // expected return address SUBx_REG(x3, x3, xRIP); diff --git a/src/dynarec/arm64/dynarec_arm64_66.c b/src/dynarec/arm64/dynarec_arm64_66.c index 0260b2b0..5740f9cd 100644 --- a/src/dynarec/arm64/dynarec_arm64_66.c +++ b/src/dynarec/arm64/dynarec_arm64_66.c @@ -11,7 +11,6 @@ #include "x64emu.h" #include "box64stack.h" #include "callback.h" -#include "emu/x64run_private.h" #include "emu/x87emu_private.h" #include "x64trace.h" #include "dynarec_native.h" diff --git a/src/dynarec/arm64/dynarec_arm64_660f.c b/src/dynarec/arm64/dynarec_arm64_660f.c index f97efcd0..be7acca3 100644 --- a/src/dynarec/arm64/dynarec_arm64_660f.c +++ b/src/dynarec/arm64/dynarec_arm64_660f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_6664.c b/src/dynarec/arm64/dynarec_arm64_6664.c index 8e49ef15..0b5ff101 100644 --- a/src/dynarec/arm64/dynarec_arm64_6664.c +++ b/src/dynarec/arm64/dynarec_arm64_6664.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_66f20f.c b/src/dynarec/arm64/dynarec_arm64_66f20f.c index eb08003b..c5195088 100644 --- a/src/dynarec/arm64/dynarec_arm64_66f20f.c +++ b/src/dynarec/arm64/dynarec_arm64_66f20f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_66f30f.c b/src/dynarec/arm64/dynarec_arm64_66f30f.c index 99df412e..2b6c0779 100644 --- a/src/dynarec/arm64/dynarec_arm64_66f30f.c +++ b/src/dynarec/arm64/dynarec_arm64_66f30f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c index 8a44a764..1d95bb6b 100644 --- a/src/dynarec/arm64/dynarec_arm64_67.c +++ b/src/dynarec/arm64/dynarec_arm64_67.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_6764_32.c b/src/dynarec/arm64/dynarec_arm64_6764_32.c index 43a31344..68167880 100644 --- a/src/dynarec/arm64/dynarec_arm64_6764_32.c +++ b/src/dynarec/arm64/dynarec_arm64_6764_32.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_67_32.c b/src/dynarec/arm64/dynarec_arm64_67_32.c index 3468cb02..c927efbd 100644 --- a/src/dynarec/arm64/dynarec_arm64_67_32.c +++ b/src/dynarec/arm64/dynarec_arm64_67_32.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx.c b/src/dynarec/arm64/dynarec_arm64_avx.c index 3c9587be..6c51975b 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx.c +++ b/src/dynarec/arm64/dynarec_arm64_avx.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_0f.c index 09c2ddbd..e8347bb4 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_0f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_0f38.c b/src/dynarec/arm64/dynarec_arm64_avx_0f38.c index 3012c113..963e6cf2 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_0f38.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_0f38.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_66_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_66_0f.c index e52d7b96..3d187ebc 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_66_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_66_0f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c b/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c index 122178cf..f6c036aa 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_66_0f3a.c b/src/dynarec/arm64/dynarec_arm64_avx_66_0f3a.c index f8e73c45..c814ec3c 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_66_0f3a.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_66_0f3a.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f.c index aaea50d1..a9429bf7 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f38.c b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f38.c index ab230f20..6c84d0fd 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f38.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f38.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f3a.c b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f3a.c index 62702dcd..b0fefffa 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f3a.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f3a.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c index 2f26516f..74c8f1fc 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_avx_f3_0f38.c b/src/dynarec/arm64/dynarec_arm64_avx_f3_0f38.c index de7c968c..4525a08b 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_f3_0f38.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_f3_0f38.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_d8.c b/src/dynarec/arm64/dynarec_arm64_d8.c index 5053c7ea..0867d6fe 100644 --- a/src/dynarec/arm64/dynarec_arm64_d8.c +++ b/src/dynarec/arm64/dynarec_arm64_d8.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_d9.c b/src/dynarec/arm64/dynarec_arm64_d9.c index da8f2407..c067d556 100644 --- a/src/dynarec/arm64/dynarec_arm64_d9.c +++ b/src/dynarec/arm64/dynarec_arm64_d9.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_da.c b/src/dynarec/arm64/dynarec_arm64_da.c index a39126bd..80127fc2 100644 --- a/src/dynarec/arm64/dynarec_arm64_da.c +++ b/src/dynarec/arm64/dynarec_arm64_da.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_db.c b/src/dynarec/arm64/dynarec_arm64_db.c index 1be3e610..1de2a9a6 100644 --- a/src/dynarec/arm64/dynarec_arm64_db.c +++ b/src/dynarec/arm64/dynarec_arm64_db.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_dc.c b/src/dynarec/arm64/dynarec_arm64_dc.c index 60fc4c70..bab8cb60 100644 --- a/src/dynarec/arm64/dynarec_arm64_dc.c +++ b/src/dynarec/arm64/dynarec_arm64_dc.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_dd.c b/src/dynarec/arm64/dynarec_arm64_dd.c index 6acd73b2..623551d4 100644 --- a/src/dynarec/arm64/dynarec_arm64_dd.c +++ b/src/dynarec/arm64/dynarec_arm64_dd.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_de.c b/src/dynarec/arm64/dynarec_arm64_de.c index abd8fa79..9a29aebe 100644 --- a/src/dynarec/arm64/dynarec_arm64_de.c +++ b/src/dynarec/arm64/dynarec_arm64_de.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_df.c b/src/dynarec/arm64/dynarec_arm64_df.c index 68db5bc8..3bf37b24 100644 --- a/src/dynarec/arm64/dynarec_arm64_df.c +++ b/src/dynarec/arm64/dynarec_arm64_df.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_emit_logic.c b/src/dynarec/arm64/dynarec_arm64_emit_logic.c index d1e52498..ac6b8a3a 100644 --- a/src/dynarec/arm64/dynarec_arm64_emit_logic.c +++ b/src/dynarec/arm64/dynarec_arm64_emit_logic.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_emit_math.c b/src/dynarec/arm64/dynarec_arm64_emit_math.c index 0d904ff3..76f951ed 100644 --- a/src/dynarec/arm64/dynarec_arm64_emit_math.c +++ b/src/dynarec/arm64/dynarec_arm64_emit_math.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_emit_shift.c b/src/dynarec/arm64/dynarec_arm64_emit_shift.c index 03858a38..48dfbffb 100644 --- a/src/dynarec/arm64/dynarec_arm64_emit_shift.c +++ b/src/dynarec/arm64/dynarec_arm64_emit_shift.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_emit_tests.c b/src/dynarec/arm64/dynarec_arm64_emit_tests.c index 2cbe9f49..73c467e4 100644 --- a/src/dynarec/arm64/dynarec_arm64_emit_tests.c +++ b/src/dynarec/arm64/dynarec_arm64_emit_tests.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_f0.c b/src/dynarec/arm64/dynarec_arm64_f0.c index f0278aae..c186f811 100644 --- a/src/dynarec/arm64/dynarec_arm64_f0.c +++ b/src/dynarec/arm64/dynarec_arm64_f0.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_f20f.c b/src/dynarec/arm64/dynarec_arm64_f20f.c index 7c62d547..919805d6 100644 --- a/src/dynarec/arm64/dynarec_arm64_f20f.c +++ b/src/dynarec/arm64/dynarec_arm64_f20f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_f30f.c b/src/dynarec/arm64/dynarec_arm64_f30f.c index 891cb1a2..28e01f26 100644 --- a/src/dynarec/arm64/dynarec_arm64_f30f.c +++ b/src/dynarec/arm64/dynarec_arm64_f30f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/arm64/dynarec_arm64_helper.c b/src/dynarec/arm64/dynarec_arm64_helper.c index 19139c46..fb52d141 100644 --- a/src/dynarec/arm64/dynarec_arm64_helper.c +++ b/src/dynarec/arm64/dynarec_arm64_helper.c @@ -9,7 +9,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c index 8cb8b3de..cf55eee1 100644 --- a/src/dynarec/dynarec.c +++ b/src/dynarec/dynarec.c @@ -143,10 +143,6 @@ void DynaCall(x64emu_t* emu, uintptr_t addr) } } -int my_setcontext(x64emu_t* emu, void* ucp); -#ifdef BOX32 -int my32_setcontext(x64emu_t* emu, void* ucp); -#endif extern int running32bits; void DynaRun(x64emu_t* emu) { @@ -233,7 +229,7 @@ void DynaRun(x64emu_t* emu) int forktype = emu->fork; emu->quit = 0; emu->fork = 0; - emu = x64emu_fork(emu, forktype); + emu = EmuFork(emu, forktype); } } #endif diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c index 8f1525e4..4e0e9bdc 100644 --- a/src/dynarec/dynarec_native.c +++ b/src/dynarec/dynarec_native.c @@ -27,7 +27,7 @@ void printf_x64_instruction(dynarec_native_t* dyn, zydis_dec_t* dec, instruction_x64_t* inst, const char* name) { uint8_t *ip = (uint8_t*)inst->addr; - if(ip[0]==0xcc && ip[1]=='S' && ip[2]=='C') { + if (ip[0] == 0xcc && IsBridgeSignature(ip[1], ip[2])) { uintptr_t a = *(uintptr_t*)(ip+3); if(a==0) { dynarec_log(LOG_NONE, "%s%p: Exit x64emu%s\n", (BOX64DRENV(dynarec_dump)>1)?"\e[01;33m":"", (void*)ip, (BOX64DRENV(dynarec_dump)>1)?"\e[m":""); diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c index 36032d97..bf30503c 100644 --- a/src/dynarec/dynarec_native_pass.c +++ b/src/dynarec/dynarec_native_pass.c @@ -11,7 +11,6 @@ #include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" -#include "emu/x64run_private.h" #include "x64trace.h" #include "dynablock.h" #include "dynarec_native.h" diff --git a/src/dynarec/la64/dynarec_la64_00.c b/src/dynarec/la64/dynarec_la64_00.c index 04254a57..ee25fb7e 100644 --- a/src/dynarec/la64/dynarec_la64_00.c +++ b/src/dynarec/la64/dynarec_la64_00.c @@ -4,11 +4,11 @@ #include <errno.h> #include <signal.h> +#include "os.h" #include "debug.h" #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" @@ -1921,7 +1921,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni case 0xCC: SETFLAGS(X_ALL, SF_SET_NODF, NAT_FLAGS_NOFUSION); SKIPTEST(x1); - if (PK(0) == 'S' && PK(1) == 'C') { + if (IsBridgeSignature(PK(0), PK(1))) { addr += 2; BARRIER(BARRIER_FLOAT); INST_NAME("Special Box64 instruction"); @@ -1942,7 +1942,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni GETIP(ip + 1); // read the 0xCC STORE_XEMU_CALL(); ADDI_D(x1, xEmu, (uint32_t)offsetof(x64emu_t, ip)); // setup addr as &emu->ip - CALL_S(x64Int3, -1); + CALL_S(EmuInt3, -1); LOAD_XEMU_CALL(); addr += 8 + 8; TABLE64(x3, addr); // expected return address @@ -1988,7 +1988,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni SMEND(); GETIP(addr); STORE_XEMU_CALL(); - CALL_S(x86Syscall, -1); + CALL_S(EmuX86Syscall, -1); LOAD_XEMU_CALL(); TABLE64(x3, addr); // expected return address BNE_MARK(xRIP, x3); @@ -2329,7 +2329,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni #endif } #if STEP < 2 - if (!rex.is32bits && isNativeCall(addr + i32, rex.is32bits, &dyn->insts[ninst].natcall, &dyn->insts[ninst].retn)) + if (!rex.is32bits && IsNativeCall(addr + i32, rex.is32bits, &dyn->insts[ninst].natcall, &dyn->insts[ninst].retn)) tmp = dyn->insts[ninst].pass2choice = 3; else tmp = dyn->insts[ninst].pass2choice = 0; @@ -2369,7 +2369,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni GETIP_(dyn->insts[ninst].natcall); // read the 0xCC already STORE_XEMU_CALL(); ADDI_D(x1, xEmu, (uint32_t)offsetof(x64emu_t, ip)); // setup addr as &emu->ip - CALL_S(x64Int3, -1); + CALL_S(EmuInt3, -1); LOAD_XEMU_CALL(); TABLE64(x3, dyn->insts[ninst].natcall); ADDI_D(x3, x3, 2 + 8 + 8); diff --git a/src/dynarec/la64/dynarec_la64_0f.c b/src/dynarec/la64/dynarec_la64_0f.c index 1d2d6b03..cdaef719 100644 --- a/src/dynarec/la64/dynarec_la64_0f.c +++ b/src/dynarec/la64/dynarec_la64_0f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" @@ -89,7 +88,7 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni SMEND(); GETIP(addr); STORE_XEMU_CALL(); - CALL_S(x64Syscall, -1); + CALL_S(EmuX64Syscall, -1); LOAD_XEMU_CALL(); TABLE64(x3, addr); // expected return address BNE_MARK(xRIP, x3); diff --git a/src/dynarec/la64/dynarec_la64_64.c b/src/dynarec/la64/dynarec_la64_64.c index 58829ba8..0010e0da 100644 --- a/src/dynarec/la64/dynarec_la64_64.c +++ b/src/dynarec/la64/dynarec_la64_64.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_66.c b/src/dynarec/la64/dynarec_la64_66.c index 20c3e8c8..c075f3c1 100644 --- a/src/dynarec/la64/dynarec_la64_66.c +++ b/src/dynarec/la64/dynarec_la64_66.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_660f.c b/src/dynarec/la64/dynarec_la64_660f.c index 61f42165..c32abbc0 100644 --- a/src/dynarec/la64/dynarec_la64_660f.c +++ b/src/dynarec/la64/dynarec_la64_660f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_6664.c b/src/dynarec/la64/dynarec_la64_6664.c index 54dcb6ac..634456ed 100644 --- a/src/dynarec/la64/dynarec_la64_6664.c +++ b/src/dynarec/la64/dynarec_la64_6664.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_66f0.c b/src/dynarec/la64/dynarec_la64_66f0.c index 46610a5c..1031ebc8 100644 --- a/src/dynarec/la64/dynarec_la64_66f0.c +++ b/src/dynarec/la64/dynarec_la64_66f0.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_66f20f.c b/src/dynarec/la64/dynarec_la64_66f20f.c index 8e93e3fa..224a89b6 100644 --- a/src/dynarec/la64/dynarec_la64_66f20f.c +++ b/src/dynarec/la64/dynarec_la64_66f20f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_67.c b/src/dynarec/la64/dynarec_la64_67.c index cff5d923..908ec378 100644 --- a/src/dynarec/la64/dynarec_la64_67.c +++ b/src/dynarec/la64/dynarec_la64_67.c @@ -8,7 +8,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_emit_logic.c b/src/dynarec/la64/dynarec_la64_emit_logic.c index b1c42f54..c7a7f203 100644 --- a/src/dynarec/la64/dynarec_la64_emit_logic.c +++ b/src/dynarec/la64/dynarec_la64_emit_logic.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_emit_math.c b/src/dynarec/la64/dynarec_la64_emit_math.c index fc3016e6..145dd683 100644 --- a/src/dynarec/la64/dynarec_la64_emit_math.c +++ b/src/dynarec/la64/dynarec_la64_emit_math.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_emit_shift.c b/src/dynarec/la64/dynarec_la64_emit_shift.c index 4871e829..0dcccb39 100644 --- a/src/dynarec/la64/dynarec_la64_emit_shift.c +++ b/src/dynarec/la64/dynarec_la64_emit_shift.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_emit_tests.c b/src/dynarec/la64/dynarec_la64_emit_tests.c index 95f9f516..db4f21f1 100644 --- a/src/dynarec/la64/dynarec_la64_emit_tests.c +++ b/src/dynarec/la64/dynarec_la64_emit_tests.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_f0.c b/src/dynarec/la64/dynarec_la64_f0.c index 3382ec1a..18c97589 100644 --- a/src/dynarec/la64/dynarec_la64_f0.c +++ b/src/dynarec/la64/dynarec_la64_f0.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_f20f.c b/src/dynarec/la64/dynarec_la64_f20f.c index fb78a102..33461a66 100644 --- a/src/dynarec/la64/dynarec_la64_f20f.c +++ b/src/dynarec/la64/dynarec_la64_f20f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_f30f.c b/src/dynarec/la64/dynarec_la64_f30f.c index fe8c5c7f..523f667d 100644 --- a/src/dynarec/la64/dynarec_la64_f30f.c +++ b/src/dynarec/la64/dynarec_la64_f30f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/la64/dynarec_la64_helper.c b/src/dynarec/la64/dynarec_la64_helper.c index da99f562..c5e0b00e 100644 --- a/src/dynarec/la64/dynarec_la64_helper.c +++ b/src/dynarec/la64/dynarec_la64_helper.c @@ -9,7 +9,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "la64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/rv64/dynarec_rv64_00.c b/src/dynarec/rv64/dynarec_rv64_00.c index 0f0c049b..faf7430b 100644 --- a/src/dynarec/rv64/dynarec_rv64_00.c +++ b/src/dynarec/rv64/dynarec_rv64_00.c @@ -9,7 +9,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_00_0.c b/src/dynarec/rv64/dynarec_rv64_00_0.c index b467f3b6..f518ab0f 100644 --- a/src/dynarec/rv64/dynarec_rv64_00_0.c +++ b/src/dynarec/rv64/dynarec_rv64_00_0.c @@ -9,7 +9,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_00_1.c b/src/dynarec/rv64/dynarec_rv64_00_1.c index 6ff5c3bb..03ecffa1 100644 --- a/src/dynarec/rv64/dynarec_rv64_00_1.c +++ b/src/dynarec/rv64/dynarec_rv64_00_1.c @@ -9,7 +9,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_00_2.c b/src/dynarec/rv64/dynarec_rv64_00_2.c index b23f8e16..71a93184 100644 --- a/src/dynarec/rv64/dynarec_rv64_00_2.c +++ b/src/dynarec/rv64/dynarec_rv64_00_2.c @@ -9,7 +9,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_00_3.c b/src/dynarec/rv64/dynarec_rv64_00_3.c index 17d92fd5..9a01d71b 100644 --- a/src/dynarec/rv64/dynarec_rv64_00_3.c +++ b/src/dynarec/rv64/dynarec_rv64_00_3.c @@ -5,11 +5,11 @@ #include <signal.h> #include <assert.h> +#include "os.h" #include "debug.h" #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" @@ -430,7 +430,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int case 0xCC: SETFLAGS(X_ALL, SF_SET_NODF, NAT_FLAGS_NOFUSION); // Hack, set all flags (to an unknown state...) SKIPTEST(x1); - if (PK(0) == 'S' && PK(1) == 'C') { + if (IsBridgeSignature(PK(0), PK(1))) { addr += 2; BARRIER(BARRIER_FLOAT); INST_NAME("Special Box64 instruction"); @@ -461,7 +461,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int STORE_XEMU_CALL(x3); ADDI(x3, xRIP, 8 + 8); // expected return address ADDI(x1, xEmu, (uint32_t)offsetof(x64emu_t, ip)); // setup addr as &emu->ip - CALL_(x64Int3, -1, x3, x1, 0); + CALL_(EmuInt3, -1, x3, x1, 0); LOAD_XEMU_CALL(); addr += 8 + 8; BNE_MARK(xRIP, x3); @@ -509,7 +509,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int SMEND(); GETIP(addr, x7); STORE_XEMU_CALL(x3); - CALL_S(x86Syscall, -1, 0); + CALL_S(EmuX86Syscall, -1, 0); LOAD_XEMU_CALL(); TABLE64(x3, addr); // expected return address BNE_MARK(xRIP, x3); @@ -958,7 +958,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int #endif } #if STEP < 2 - if (!rex.is32bits && isNativeCall(addr + i32, rex.is32bits, &dyn->insts[ninst].natcall, &dyn->insts[ninst].retn)) + if (!rex.is32bits && IsNativeCall(addr + i32, rex.is32bits, &dyn->insts[ninst].natcall, &dyn->insts[ninst].retn)) tmp = dyn->insts[ninst].pass2choice = 3; else tmp = dyn->insts[ninst].pass2choice = i32 ? 0 : 1; @@ -997,7 +997,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int GETIP_(dyn->insts[ninst].natcall, x7); // read the 0xCC already STORE_XEMU_CALL(x3); ADDI(x1, xEmu, (uint32_t)offsetof(x64emu_t, ip)); // setup addr as &emu->ip - CALL_S(x64Int3, -1, x1); + CALL_S(EmuInt3, -1, x1); LOAD_XEMU_CALL(); MOV64x(x3, dyn->insts[ninst].natcall); ADDI(x3, x3, 2 + 8 + 8); diff --git a/src/dynarec/rv64/dynarec_rv64_0f.c b/src/dynarec/rv64/dynarec_rv64_0f.c index a877a9fd..f12f7a39 100644 --- a/src/dynarec/rv64/dynarec_rv64_0f.c +++ b/src/dynarec/rv64/dynarec_rv64_0f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" @@ -117,7 +116,7 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni SMEND(); GETIP(addr, x7); STORE_XEMU_CALL(x3); - CALL_S(x64Syscall, -1, 0); + CALL_S(EmuX64Syscall, -1, 0); LOAD_XEMU_CALL(); TABLE64(x3, addr); // expected return address BNE_MARK(xRIP, x3); diff --git a/src/dynarec/rv64/dynarec_rv64_0f_vector.c b/src/dynarec/rv64/dynarec_rv64_0f_vector.c index ca42f76f..32620857 100644 --- a/src/dynarec/rv64/dynarec_rv64_0f_vector.c +++ b/src/dynarec/rv64/dynarec_rv64_0f_vector.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_64.c b/src/dynarec/rv64/dynarec_rv64_64.c index 0873d319..07d1d6b5 100644 --- a/src/dynarec/rv64/dynarec_rv64_64.c +++ b/src/dynarec/rv64/dynarec_rv64_64.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_64_vector.c b/src/dynarec/rv64/dynarec_rv64_64_vector.c index f02252e1..1fef8d45 100644 --- a/src/dynarec/rv64/dynarec_rv64_64_vector.c +++ b/src/dynarec/rv64/dynarec_rv64_64_vector.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_66.c b/src/dynarec/rv64/dynarec_rv64_66.c index 8c7bb818..c054c3ba 100644 --- a/src/dynarec/rv64/dynarec_rv64_66.c +++ b/src/dynarec/rv64/dynarec_rv64_66.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "rv64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/rv64/dynarec_rv64_660f.c b/src/dynarec/rv64/dynarec_rv64_660f.c index c4d6252c..5e015a23 100644 --- a/src/dynarec/rv64/dynarec_rv64_660f.c +++ b/src/dynarec/rv64/dynarec_rv64_660f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_660f38.c b/src/dynarec/rv64/dynarec_rv64_660f38.c index d96d8ac8..d15a5922 100644 --- a/src/dynarec/rv64/dynarec_rv64_660f38.c +++ b/src/dynarec/rv64/dynarec_rv64_660f38.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_660f_vector.c b/src/dynarec/rv64/dynarec_rv64_660f_vector.c index 52195ca4..317a5786 100644 --- a/src/dynarec/rv64/dynarec_rv64_660f_vector.c +++ b/src/dynarec/rv64/dynarec_rv64_660f_vector.c @@ -6,7 +6,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_6664.c b/src/dynarec/rv64/dynarec_rv64_6664.c index a5ee4302..01e4589b 100644 --- a/src/dynarec/rv64/dynarec_rv64_6664.c +++ b/src/dynarec/rv64/dynarec_rv64_6664.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_66f0.c b/src/dynarec/rv64/dynarec_rv64_66f0.c index d762075f..d4310785 100644 --- a/src/dynarec/rv64/dynarec_rv64_66f0.c +++ b/src/dynarec/rv64/dynarec_rv64_66f0.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "rv64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/dynarec/rv64/dynarec_rv64_66f20f.c b/src/dynarec/rv64/dynarec_rv64_66f20f.c index ed79efe4..af76bcdb 100644 --- a/src/dynarec/rv64/dynarec_rv64_66f20f.c +++ b/src/dynarec/rv64/dynarec_rv64_66f20f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_66f30f.c b/src/dynarec/rv64/dynarec_rv64_66f30f.c index 0326e80e..0677a3db 100644 --- a/src/dynarec/rv64/dynarec_rv64_66f30f.c +++ b/src/dynarec/rv64/dynarec_rv64_66f30f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_67.c b/src/dynarec/rv64/dynarec_rv64_67.c index e4384c57..8fd60088 100644 --- a/src/dynarec/rv64/dynarec_rv64_67.c +++ b/src/dynarec/rv64/dynarec_rv64_67.c @@ -8,7 +8,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_67_32.c b/src/dynarec/rv64/dynarec_rv64_67_32.c index dbc93590..6e67039e 100644 --- a/src/dynarec/rv64/dynarec_rv64_67_32.c +++ b/src/dynarec/rv64/dynarec_rv64_67_32.c @@ -8,7 +8,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_67_vector.c b/src/dynarec/rv64/dynarec_rv64_67_vector.c index 7b0950db..f022fa77 100644 --- a/src/dynarec/rv64/dynarec_rv64_67_vector.c +++ b/src/dynarec/rv64/dynarec_rv64_67_vector.c @@ -8,7 +8,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_avx.c b/src/dynarec/rv64/dynarec_rv64_avx.c index bd03354f..c5e39d34 100644 --- a/src/dynarec/rv64/dynarec_rv64_avx.c +++ b/src/dynarec/rv64/dynarec_rv64_avx.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_avx_f3_0f.c b/src/dynarec/rv64/dynarec_rv64_avx_f3_0f.c index bc69de83..4ab73160 100644 --- a/src/dynarec/rv64/dynarec_rv64_avx_f3_0f.c +++ b/src/dynarec/rv64/dynarec_rv64_avx_f3_0f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_d8.c b/src/dynarec/rv64/dynarec_rv64_d8.c index 8affe09a..d58b029b 100644 --- a/src/dynarec/rv64/dynarec_rv64_d8.c +++ b/src/dynarec/rv64/dynarec_rv64_d8.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_d9.c b/src/dynarec/rv64/dynarec_rv64_d9.c index 0e9fd78d..9a34d583 100644 --- a/src/dynarec/rv64/dynarec_rv64_d9.c +++ b/src/dynarec/rv64/dynarec_rv64_d9.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_da.c b/src/dynarec/rv64/dynarec_rv64_da.c index 4dcced44..690b364d 100644 --- a/src/dynarec/rv64/dynarec_rv64_da.c +++ b/src/dynarec/rv64/dynarec_rv64_da.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_db.c b/src/dynarec/rv64/dynarec_rv64_db.c index 1558d1cd..c782e932 100644 --- a/src/dynarec/rv64/dynarec_rv64_db.c +++ b/src/dynarec/rv64/dynarec_rv64_db.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_dc.c b/src/dynarec/rv64/dynarec_rv64_dc.c index e92dce37..98332fe8 100644 --- a/src/dynarec/rv64/dynarec_rv64_dc.c +++ b/src/dynarec/rv64/dynarec_rv64_dc.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_dd.c b/src/dynarec/rv64/dynarec_rv64_dd.c index beeb29d3..794baa6c 100644 --- a/src/dynarec/rv64/dynarec_rv64_dd.c +++ b/src/dynarec/rv64/dynarec_rv64_dd.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_de.c b/src/dynarec/rv64/dynarec_rv64_de.c index e7458e01..0807417d 100644 --- a/src/dynarec/rv64/dynarec_rv64_de.c +++ b/src/dynarec/rv64/dynarec_rv64_de.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_df.c b/src/dynarec/rv64/dynarec_rv64_df.c index 4250b3a9..5831a30c 100644 --- a/src/dynarec/rv64/dynarec_rv64_df.c +++ b/src/dynarec/rv64/dynarec_rv64_df.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_emit_logic.c b/src/dynarec/rv64/dynarec_rv64_emit_logic.c index 880b1f2a..32edad65 100644 --- a/src/dynarec/rv64/dynarec_rv64_emit_logic.c +++ b/src/dynarec/rv64/dynarec_rv64_emit_logic.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_emit_math.c b/src/dynarec/rv64/dynarec_rv64_emit_math.c index 288b603e..131564a3 100644 --- a/src/dynarec/rv64/dynarec_rv64_emit_math.c +++ b/src/dynarec/rv64/dynarec_rv64_emit_math.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_emit_shift.c b/src/dynarec/rv64/dynarec_rv64_emit_shift.c index 83f132b9..ed3e4adf 100644 --- a/src/dynarec/rv64/dynarec_rv64_emit_shift.c +++ b/src/dynarec/rv64/dynarec_rv64_emit_shift.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_emit_tests.c b/src/dynarec/rv64/dynarec_rv64_emit_tests.c index c3ed32ce..6c2f2ba8 100644 --- a/src/dynarec/rv64/dynarec_rv64_emit_tests.c +++ b/src/dynarec/rv64/dynarec_rv64_emit_tests.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_f0.c b/src/dynarec/rv64/dynarec_rv64_f0.c index 0a647526..f51c3bb9 100644 --- a/src/dynarec/rv64/dynarec_rv64_f0.c +++ b/src/dynarec/rv64/dynarec_rv64_f0.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_f20f.c b/src/dynarec/rv64/dynarec_rv64_f20f.c index f376a3eb..c122ccf1 100644 --- a/src/dynarec/rv64/dynarec_rv64_f20f.c +++ b/src/dynarec/rv64/dynarec_rv64_f20f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_f20f_vector.c b/src/dynarec/rv64/dynarec_rv64_f20f_vector.c index 688159a5..a75741b9 100644 --- a/src/dynarec/rv64/dynarec_rv64_f20f_vector.c +++ b/src/dynarec/rv64/dynarec_rv64_f20f_vector.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_f30f.c b/src/dynarec/rv64/dynarec_rv64_f30f.c index 1200f0ff..16dc167f 100644 --- a/src/dynarec/rv64/dynarec_rv64_f30f.c +++ b/src/dynarec/rv64/dynarec_rv64_f30f.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_f30f_vector.c b/src/dynarec/rv64/dynarec_rv64_f30f_vector.c index eb204e7b..900831f7 100644 --- a/src/dynarec/rv64/dynarec_rv64_f30f_vector.c +++ b/src/dynarec/rv64/dynarec_rv64_f30f_vector.c @@ -7,7 +7,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" diff --git a/src/dynarec/rv64/dynarec_rv64_helper.c b/src/dynarec/rv64/dynarec_rv64_helper.c index c59febc9..2f0a58ce 100644 --- a/src/dynarec/rv64/dynarec_rv64_helper.c +++ b/src/dynarec/rv64/dynarec_rv64_helper.c @@ -10,7 +10,6 @@ #include "box64context.h" #include "box64cpu.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "rv64_emitter.h" #include "x64emu.h" #include "box64stack.h" diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index 2f8add77..6001b226 100644 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -14,6 +14,7 @@ #include <dlfcn.h> #endif +#include "os.h" #include "custommem.h" #include "box64version.h" #include "elfloader.h" @@ -1334,7 +1335,7 @@ const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uin if(!h) { if(getProtection((uintptr_t)p)&(PROT_READ)) { uintptr_t adj_p = ((uintptr_t)p)&~(sizeof(onebridge_t)-1); - if(*(uint8_t*)(adj_p)==0xCC && *(uint8_t*)(adj_p+1)=='S' && *(uint8_t*)(adj_p+2)=='C') { + if (*(uint8_t*)(adj_p) == 0xCC && IsBridgeSignature(*(uint8_t*)(adj_p + 1), *(uint8_t*)(adj_p + 2))) { ret = getBridgeName((void*)adj_p); if(ret) { if(start) diff --git a/src/emu/x64int3.c b/src/emu/x64int3.c index 5520ce83..82bfcb26 100644 --- a/src/emu/x64int3.c +++ b/src/emu/x64int3.c @@ -20,6 +20,7 @@ #include "box64cpu.h" #include "x64emu_private.h" #include "x64run_private.h" +#include "x64int_private.h" #include "x87emu_private.h" #include "x64primop.h" #include "x64trace.h" @@ -95,8 +96,7 @@ void x64Int3(x64emu_t* emu, uintptr_t* addr) return; } onebridge_t* bridge = (onebridge_t*)(*addr-1); - if(bridge->S=='S' && bridge->C=='C') // Signature for "Out of x86 door" - { + if (IsBridgeSignature(bridge->S, bridge->C)) { // Signature for "Out of x86 door" *addr += 2; uintptr_t a = F64(addr); if(a==0) { diff --git a/src/emu/x64int_private.h b/src/emu/x64int_private.h new file mode 100644 index 00000000..97e81025 --- /dev/null +++ b/src/emu/x64int_private.h @@ -0,0 +1,10 @@ +#ifndef __X64INT_PRIVATE_H_ +#define __X64INT_PRIVATE_H_ + +void x64Syscall(x64emu_t *emu); +void x64Int3(x64emu_t* emu, uintptr_t* addr); +x64emu_t* x64emu_fork(x64emu_t* e, int forktype); +void x86Syscall(x64emu_t *emu); //32bits syscall +void x86Int3(x64emu_t* emu, uintptr_t* addr); + +#endif // __X64INT_PRIVATE_H_ diff --git a/src/emu/x64run.c b/src/emu/x64run.c index 7ba98455..59b3a9ea 100644 --- a/src/emu/x64run.c +++ b/src/emu/x64run.c @@ -27,11 +27,6 @@ #include "modrm.h" -int my_setcontext(x64emu_t* emu, void* ucp); -#ifdef BOX32 -int my32_setcontext(x64emu_t* emu, void* ucp); -#endif - #ifdef TEST_INTERPRETER int RunTest(x64test_t *test) #else @@ -1529,7 +1524,7 @@ x64emurun: case 0xCC: /* INT 3 */ R_RIP = addr; // update RIP #ifndef TEST_INTERPRETER - x64Int3(emu, &addr); + EmuInt3(emu, &addr); if(emu->quit) goto fini; // R_RIP is up to date when returning from x64Int3 addr = R_RIP; #endif @@ -1554,7 +1549,7 @@ x64emurun: tf_next = 1; // 32bits syscall #ifndef TEST_INTERPRETER - x86Syscall(emu); + EmuX86Syscall(emu); STEP2; #endif } else if (tmp8u==0x03) { @@ -2303,7 +2298,7 @@ if(emu->segs[_CS]!=0x33 && emu->segs[_CS]!=0x23) printf_log(LOG_NONE, "Warning, int forktype = emu->fork; emu->quit = 0; emu->fork = 0; - emu = x64emu_fork(emu, forktype); + emu = EmuFork(emu, forktype); if(step) return 0; goto x64emurun; diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c index 4a52bec3..cd0affa8 100644 --- a/src/emu/x64run0f.c +++ b/src/emu/x64run0f.c @@ -164,7 +164,7 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step) case 0x05: /* SYSCALL */ #ifndef TEST_INTERPRETER R_RIP = addr; - x64Syscall(emu); + EmuX64Syscall(emu); #endif break; case 0x06: /* CLTS */ diff --git a/src/emu/x64run_private.c b/src/emu/x64run_private.c index 05d01966..74070784 100644 --- a/src/emu/x64run_private.c +++ b/src/emu/x64run_private.c @@ -1260,7 +1260,7 @@ void PrintTrace(x64emu_t* emu, uintptr_t ip, int dynarec) mutex_unlock(&my_context->mutex_trace); return; } - if(PK(0)==0xcc && PK(1)=='S' && PK(2)=='C') { + if (PK(0) == 0xcc && IsBridgeSignature(PK(1), PK(2))) { uint64_t a = *(uint64_t*)(ip+3); if(a==0) { printf_log(LOG_NONE, "%p: Exit x86emu\n", (void*)ip); diff --git a/src/emu/x64run_private.h b/src/emu/x64run_private.h index 53b1bf74..e7645a87 100644 --- a/src/emu/x64run_private.h +++ b/src/emu/x64run_private.h @@ -178,12 +178,6 @@ uintptr_t TestAVX_F20F3A(x64test_t *test, vex_t vex, uintptr_t addr, int *step); uintptr_t TestAVX_F30F38(x64test_t *test, vex_t vex, uintptr_t addr, int *step); uintptr_t TestAVX_F30F3A(x64test_t *test, vex_t vex, uintptr_t addr, int *step); -void x64Syscall(x64emu_t *emu); -void x64Int3(x64emu_t* emu, uintptr_t* addr); -x64emu_t* x64emu_fork(x64emu_t* e, int forktype); -void x86Syscall(x64emu_t *emu); //32bits syscall -void x86Int3(x64emu_t* emu, uintptr_t* addr); - uintptr_t GetSegmentBaseEmu(x64emu_t* emu, int seg); #define GetGSBaseEmu(emu) GetSegmentBaseEmu(emu, _GS) #define GetFSBaseEmu(emu) GetSegmentBaseEmu(emu, _FS) diff --git a/src/emu/x86int3.c b/src/emu/x86int3.c index fea71a00..c9e5d190 100755 --- a/src/emu/x86int3.c +++ b/src/emu/x86int3.c @@ -47,8 +47,7 @@ extern int errno; void x86Int3(x64emu_t* emu, uintptr_t* addr) { onebridge_t* bridge = (onebridge_t*)(*addr-1); - if(Peek8(*addr, 0)=='S' && Peek8(*addr, 1)=='C') // Signature for "Out of x86 door" - { + if (IsBridgeSignature(Peek8(*addr, 0), Peek8(*addr, 1))) { // Signature for "Out of x86 door" *addr += 2; uintptr_t a = F64(addr); if(a==0) { diff --git a/src/include/bridge.h b/src/include/bridge.h index e87e5d45..a4797bce 100644 --- a/src/include/bridge.h +++ b/src/include/bridge.h @@ -31,6 +31,6 @@ void init_bridge_helper(void); void fini_bridge_helper(void); // Is what pointed at addr a native call? And if yes, to what function? -int isNativeCall(uintptr_t addr, int is32bits, uintptr_t* calladdress, uint16_t* retn); +int isNativeCallInternal(uintptr_t addr, int is32bits, uintptr_t* calladdress, uint16_t* retn); #endif //__BRIDGE_H_ diff --git a/src/include/os.h b/src/include/os.h index 6646c49f..6968df19 100644 --- a/src/include/os.h +++ b/src/include/os.h @@ -1,12 +1,24 @@ #ifndef __OS_H_ #define __OS_H_ +#include <stdint.h> + int GetTID(void); int SchedYield(void); void EmitSignal(void* emu, int sig, void* addr, int code); void EmitDiv0(void* emu, void* addr, int code); void EmitInterruption(void* emu, int num, void* addr); +void EmuX64Syscall(void* emu); +void EmuX86Syscall(void* emu); + +// These functions only applies to Linux -------------------------- +int IsBridgeSignature(char s, char c); +int IsNativeCall(uintptr_t addr, int is32bits, uintptr_t* calladdress, uint16_t* retn); +void EmuInt3(void* emu, void* addr); +void* EmuFork(void* emu, int forktype); +// ---------------------------------------------------------------- + #ifndef _WIN32 #include <setjmp.h> #define LongJmp longjmp diff --git a/src/os/os_linux.c b/src/os/os_linux.c index b09bcc35..46a0434b 100644 --- a/src/os/os_linux.c +++ b/src/os/os_linux.c @@ -5,6 +5,8 @@ #include "os.h" #include "signals.h" +#include "emu/x64int_private.h" +#include "bridge.h" int GetTID(void) { @@ -30,3 +32,33 @@ void EmitInterruption(void* emu, int num, void* addr) { return emit_interruption((x64emu_t*)emu, num, addr); } + +int IsBridgeSignature(char s, char c) +{ + return s == 'S' && c == 'C'; +} + +void EmuInt3(void* emu, void* addr) +{ + return x64Int3((x64emu_t*)emu, (uintptr_t*)addr); +} + +int IsNativeCall(uintptr_t addr, int is32bits, uintptr_t* calladdress, uint16_t* retn) +{ + return isNativeCallInternal(addr, is32bits, calladdress, retn); +} + +void* EmuFork(void* emu, int forktype) +{ + return x64emu_fork((x64emu_t*)emu, forktype); +} + +void EmuX64Syscall(void* emu) +{ + x64Syscall((x64emu_t*)emu); +} + +void EmuX86Syscall(void* emu) +{ + x86Syscall((x64emu_t*)emu); +} diff --git a/src/tools/box32stack.c b/src/tools/box32stack.c index 903996c7..188b4a11 100644 --- a/src/tools/box32stack.c +++ b/src/tools/box32stack.c @@ -9,7 +9,6 @@ #include "elfloader.h" #include "debug.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "auxval.h" #include "custommem.h" #include "box32.h" diff --git a/src/tools/box64stack.c b/src/tools/box64stack.c index ce8888e5..4db5653e 100644 --- a/src/tools/box64stack.c +++ b/src/tools/box64stack.c @@ -10,7 +10,6 @@ #include "elfloader.h" #include "debug.h" #include "emu/x64emu_private.h" -#include "emu/x64run_private.h" #include "auxval.h" #include "custommem.h" diff --git a/src/tools/bridge.c b/src/tools/bridge.c index 73ea5a7b..0c7ed4d7 100644 --- a/src/tools/bridge.c +++ b/src/tools/bridge.c @@ -239,7 +239,7 @@ const char* getBridgeName(void* addr) if(!(getProtection((uintptr_t)addr)&PROT_READ)) return NULL; onebridge_t* one = (onebridge_t*)(((uintptr_t)addr&~(sizeof(onebridge_t)-1))); // align to start of bridge - if(one->C3==0xC3 && one->S=='S' && one->C=='C') { + if (one->C3 == 0xC3 && IsBridgeSignature(one->S, one->C)) { if(one->w==NULL) return "ExitEmulation"; else @@ -302,7 +302,7 @@ void fini_bridge_helper() cleanAlternate(); } -int isNativeCall(uintptr_t addr, int is32bits, uintptr_t* calladdress, uint16_t* retn) +int isNativeCallInternal(uintptr_t addr, int is32bits, uintptr_t* calladdress, uint16_t* retn) { if (is32bits) addr &= 0xFFFFFFFFLL; @@ -319,7 +319,7 @@ int isNativeCall(uintptr_t addr, int is32bits, uintptr_t* calladdress, uint16_t* if (!addr || !getProtection(addr)) return 0; onebridge_t* b = (onebridge_t*)(addr); - if (b->CC == 0xCC && b->S == 'S' && b->C == 'C' && b->w != (wrapper_t)0 && b->f != (uintptr_t)PltResolver64) { + if (b->CC == 0xCC && IsBridgeSignature(b->S, b->C) && b->w != (wrapper_t)0 && b->f != (uintptr_t)PltResolver64) { // found ! if (retn) *retn = (b->C3 == 0xC2) ? b->N : 0; if (calladdress) *calladdress = addr + 1; diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 9685831c..68169d2f 100644 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -47,6 +47,7 @@ #include "wrappedlibs.h" +#include "os.h" #include "box64stack.h" #include "x64emu.h" #include "box64cpu.h" @@ -3540,7 +3541,7 @@ EXPORT int my_backtrace_ip(x64emu_t* emu, void** buffer, int size) if (++idx < size) buffer[idx] = (void*)ret_addr; } else if (!success) { if(getProtection((uintptr_t)addr)&(PROT_READ)) { - if(getProtection((uintptr_t)addr-19) && *(uint8_t*)(addr-19)==0xCC && *(uint8_t*)(addr-19+1)=='S' && *(uint8_t*)(addr-19+2)=='C') { + if (getProtection((uintptr_t)addr - 19) && *(uint8_t*)(addr - 19) == 0xCC && IsBridgeSignature(*(uint8_t*)(addr - 19 + 1), *(uint8_t*)(addr - 19 + 2))) { buffer[idx-1] = (void*)(addr-19); success = 2; if(idx==1) |