From 3b522046d6a33d190d05c4e36a7ea4d02bc527a2 Mon Sep 17 00:00:00 2001 From: sezero Date: Sat, 11 Aug 2018 00:32:02 +0300 Subject: [PATCH] h3/minihwc (hwcShareContextData): copy over gcc inline asm support from h5. --- glide3x/h3/minihwc/minihwc.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/glide3x/h3/minihwc/minihwc.c b/glide3x/h3/minihwc/minihwc.c index aafb651..fc636de 100644 --- a/glide3x/h3/minihwc/minihwc.c +++ b/glide3x/h3/minihwc/minihwc.c @@ -4282,28 +4282,34 @@ hwcShareContextData(hwcBoardInfo *bInfo, FxU32 **data) /* Now for the NASTY stuff: */ +#ifdef __GNUC__ + __asm __volatile (" xor %%eax, %%eax; mov %%cs, %%ax; mov %%eax, %0":"=g"(ohWell)); +#else __asm mov eax, 0; __asm mov ax, cs; __asm mov ohWell, eax; +#endif ctxReq.optData.contextDwordNTReq.codeSegment = ohWell; +#ifdef __GNUC__ + __asm __volatile (" xor %%eax, %%eax; mov %%ds, %%ax; mov %%eax, %0":"=g"(ohWell)); +#else __asm mov eax, 0; __asm mov ax, ds; __asm mov ohWell, eax; - +#endif + ctxReq.optData.contextDwordNTReq.dataSegment = ohWell; /* oh, yeah */ } - GDBG_INFO(80, FN_NAME ": Calling ExtEscape(HWCEXT_CONTEXT_DWORD_NT)\n"); ExtEscape((HDC) bInfo->hdc, bInfo->hwcEscape, sizeof(ctxReq), (void *) &ctxReq, sizeof(ctxRes), (void *) &ctxRes); - *data = (FxU32 *) ctxRes.optData.contextDwordNTRes.dwordOffset; } else {