h3/minihwc (hwcShareContextData): copy over gcc inline asm support from h5.
This commit is contained in:
@@ -4282,28 +4282,34 @@ hwcShareContextData(hwcBoardInfo *bInfo, FxU32 **data)
|
|||||||
|
|
||||||
|
|
||||||
/* Now for the NASTY stuff: */
|
/* 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 eax, 0;
|
||||||
__asm mov ax, cs;
|
__asm mov ax, cs;
|
||||||
__asm mov ohWell, eax;
|
__asm mov ohWell, eax;
|
||||||
|
#endif
|
||||||
|
|
||||||
ctxReq.optData.contextDwordNTReq.codeSegment = ohWell;
|
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 eax, 0;
|
||||||
__asm mov ax, ds;
|
__asm mov ax, ds;
|
||||||
__asm mov ohWell, eax;
|
__asm mov ohWell, eax;
|
||||||
|
#endif
|
||||||
|
|
||||||
ctxReq.optData.contextDwordNTReq.dataSegment = ohWell;
|
ctxReq.optData.contextDwordNTReq.dataSegment = ohWell;
|
||||||
|
|
||||||
/* oh, yeah */
|
/* oh, yeah */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GDBG_INFO(80, FN_NAME ": Calling ExtEscape(HWCEXT_CONTEXT_DWORD_NT)\n");
|
GDBG_INFO(80, FN_NAME ": Calling ExtEscape(HWCEXT_CONTEXT_DWORD_NT)\n");
|
||||||
|
|
||||||
ExtEscape((HDC) bInfo->hdc, bInfo->hwcEscape, sizeof(ctxReq), (void *) &ctxReq,
|
ExtEscape((HDC) bInfo->hdc, bInfo->hwcEscape, sizeof(ctxReq), (void *) &ctxReq,
|
||||||
sizeof(ctxRes), (void *) &ctxRes);
|
sizeof(ctxRes), (void *) &ctxRes);
|
||||||
|
|
||||||
|
|
||||||
*data = (FxU32 *) ctxRes.optData.contextDwordNTRes.dwordOffset;
|
*data = (FxU32 *) ctxRes.optData.contextDwordNTRes.dwordOffset;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user