openbsd-ports/emulators/wine/patches/patch-aa
2003-12-31 04:21:45 +00:00

48 lines
1.5 KiB
Plaintext

--- msdos/dpmi.c.orig 1999-02-25 18:32:56.000000000 +0100
+++ msdos/dpmi.c 2003-12-31 04:57:46.000000000 +0100
@@ -20,6 +20,7 @@
#include "process.h"
#include "callback.h"
#include "debug.h"
+#include "stackframe.h"
#define DOS_GET_DRIVE(reg) ((reg) ? (reg) - 1 : DRIVE_GetCurrentDrive())
@@ -211,22 +212,24 @@ static void DPMI_CallRMCBProc( CONTEXT *
* real-mode call structure. */
if (flag & 1) {
/* 32-bit DPMI client */
- __asm__ __volatile__("
- pushl %%es
- pushl %%ds
- pushfl
- movl %4,%%es
- movl %3,%%ds
- lcall %2
- popl %%ds
- movl %%es,%0
- popl %%es
- "
+ __asm__ __volatile__("\n"
+" pushl %%si\n"
+" pushl %%es\n"
+" pushl %%ds\n"
+" pushfl\n"
+" movl %4,%%es\n"
+" movl %3,%%ds\n"
+" lcall %2\n"
+" popl %%ds\n"
+" movl %%es,%0\n"
+" popl %%es\n"
+" popl %%si\n"
+" "
: "=g" (es), "=D" (edi)
: "m" (rmcb->proc_ofs),
"g" (ss), "g" (rmcb->regs_sel),
"S" (ESP_reg(context)), "D" (rmcb->regs_ofs)
- : "eax", "ecx", "edx", "esi", "ebp" );
+ : "eax", "ecx", "edx", "ebp" );
} else {
/* 16-bit DPMI client */
CONTEXT ctx = *context;