From 60729af8a9299839e6022aeecbe28efc96209f4e Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Wed, 24 May 2000 21:02:00 +0000 Subject: [PATCH] Commented out broken __asm__, added comments where it is broken. --- msdos/dpmi.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/msdos/dpmi.c b/msdos/dpmi.c index f64fd933c47..f75758c772b 100644 --- a/msdos/dpmi.c +++ b/msdos/dpmi.c @@ -215,11 +215,15 @@ static void DPMI_CallRMCBProc( CONTEXT86 *context, RMCB *rmcb, WORD flag ) if (flag & 1) { int _clobber; /* 32-bit DPMI client */ +#if HAVE_FIXED_BROKEN_ASSEMBLER_BELOW __asm__ __volatile__( "pushl %%es\n" "pushl %%ds\n" "pushfl\n" - "movl %5,%%es\n" + "movl %5,%%es\n" /* BAD: we are pushing potential stack + * parameters on an already modified + * stack + */ "movl %4,%%ds\n" "lcall %3\n" "popl %%ds\n" @@ -230,6 +234,12 @@ static void DPMI_CallRMCBProc( CONTEXT86 *context, RMCB *rmcb, WORD flag ) "g" (ss), "g" (rmcb->regs_sel), "S" (ESP_reg(context)), "1" (rmcb->regs_ofs) : "ecx", "edx", "ebp" ); + /* BAD: uses too much registers which is starving the register + * alloc stage of gcc, especially in -fPIC. + */ +#else + FIXME("32 bit DPMI client unsupported.\n"); +#endif } else { /* 16-bit DPMI client */ CONTEXT86 ctx = *context;