34 lines
1.0 KiB
Plaintext
34 lines
1.0 KiB
Plaintext
--- msdos/dpmi.c.orig Thu Feb 25 14:32:56 1999
|
|
+++ msdos/dpmi.c Tue Nov 9 02:42:00 1999
|
|
@@ -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())
|
|
|
|
@@ -212,6 +213,7 @@
|
|
if (flag & 1) {
|
|
/* 32-bit DPMI client */
|
|
__asm__ __volatile__("
|
|
+ pushl %%si
|
|
pushl %%es
|
|
pushl %%ds
|
|
pushfl
|
|
@@ -221,12 +223,13 @@
|
|
popl %%ds
|
|
movl %%es,%0
|
|
popl %%es
|
|
+ popl %%si
|
|
"
|
|
: "=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;
|