From 44669935dae4ca780417c877981c3ca9390758c9 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Wed, 11 Jun 2025 19:44:41 +0800 Subject: [WOW64] Small improvement to grab_segdata (#2728) --- src/dynarec/arm64/dynarec_arm64_helper.c | 4 ++++ src/os/os_wine.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_helper.c b/src/dynarec/arm64/dynarec_arm64_helper.c index 9a5dab3c..852d2318 100644 --- a/src/dynarec/arm64/dynarec_arm64_helper.c +++ b/src/dynarec/arm64/dynarec_arm64_helper.c @@ -909,6 +909,9 @@ void grab_segdata(dynarec_arm_t* dyn, uintptr_t addr, int ninst, int reg, int se MESSAGE(LOG_DUMP, "Get %s Offset\n", (segment==_FS)?"FS":"GS"); int t2 = x4; if(reg==t2) ++t2; + #ifdef _WIN32 + LDRx_U12(reg, xEmu, offsetof(x64emu_t, segs_offs[segment])); + #else LDRw_U12(t2, xEmu, offsetof(x64emu_t, segs_serial[segment])); /*if(segment==_GS) { LDRx_U12(reg, xEmu, offsetof(x64emu_t, segs_offs[segment])); @@ -923,6 +926,7 @@ void grab_segdata(dynarec_arm_t* dyn, uintptr_t addr, int ninst, int reg, int se MOVZw(x1, segment); call_c(dyn, ninst, GetSegmentBaseEmu, t2, reg, 1, 0); MARKSEG; + #endif MESSAGE(LOG_DUMP, "----%s Offset\n", (segment==_FS)?"FS":"GS"); } diff --git a/src/os/os_wine.c b/src/os/os_wine.c index f2dd64c1..28e8ada3 100644 --- a/src/os/os_wine.c +++ b/src/os/os_wine.c @@ -36,7 +36,7 @@ void* GetSeg43Base() void* GetSegmentBase(uint32_t desc) { - printf_log(LOG_NONE, "GetSegmentBase NYI\n"); + printf_log(LOG_NONE, "GetSegmentBase does not apply to Wine dlls\n"); return NULL; } -- cgit 1.4.1