Alexandre Julliard : winebuild: Don' t change %fs and %gs when calling 16-bit register functions.
Alexandre Julliard
julliard at winehq.org
Fri May 17 16:10:14 CDT 2019
Module: wine
Branch: master
Commit: 075e561f5cff26a80d2c21a7bb6d74d4a4585cf8
URL: https://source.winehq.org/git/wine.git/?a=commit;h=075e561f5cff26a80d2c21a7bb6d74d4a4585cf8
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri May 17 16:43:06 2019 +0200
winebuild: Don't change %fs and %gs when calling 16-bit register functions.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/commdlg.dll16/filedlg.c | 2 --
dlls/krnl386.exe16/ne_module.c | 2 --
dlls/krnl386.exe16/ne_segment.c | 4 ----
dlls/krnl386.exe16/thunk.c | 8 --------
dlls/system.drv16/system.c | 2 --
tools/winebuild/relay.c | 4 ----
6 files changed, 22 deletions(-)
diff --git a/dlls/commdlg.dll16/filedlg.c b/dlls/commdlg.dll16/filedlg.c
index 99da47a..5b72bfa 100644
--- a/dlls/commdlg.dll16/filedlg.c
+++ b/dlls/commdlg.dll16/filedlg.c
@@ -222,8 +222,6 @@ static LRESULT call_hook16( WNDPROC16 hook, HWND hwnd, UINT msg, WPARAM wp, LPAR
memset( &context, 0, sizeof(context) );
context.SegDs = context.SegEs = SELECTOROF( NtCurrentTeb()->WOW32Reserved );
- context.SegFs = wine_get_fs();
- context.SegGs = wine_get_gs();
context.SegCs = SELECTOROF( hook );
context.Eip = OFFSETOF( hook );
context.Ebp = OFFSETOF( NtCurrentTeb()->WOW32Reserved ) + FIELD_OFFSET( STACK16FRAME, bp );
diff --git a/dlls/krnl386.exe16/ne_module.c b/dlls/krnl386.exe16/ne_module.c
index 1979358..76ef355 100644
--- a/dlls/krnl386.exe16/ne_module.c
+++ b/dlls/krnl386.exe16/ne_module.c
@@ -1234,8 +1234,6 @@ DWORD NE_StartTask(void)
context.SegCs = GlobalHandleToSel16(pSegTable[SELECTOROF(pModule->ne_csip) - 1].hSeg);
context.SegDs = GlobalHandleToSel16(pTask->hInstance);
context.SegEs = pTask->hPDB;
- context.SegFs = wine_get_fs();
- context.SegGs = wine_get_gs();
context.Eip = OFFSETOF(pModule->ne_csip);
context.Ebx = pModule->ne_stack;
context.Ecx = pModule->ne_heap;
diff --git a/dlls/krnl386.exe16/ne_segment.c b/dlls/krnl386.exe16/ne_segment.c
index 1ceb714..000c576 100644
--- a/dlls/krnl386.exe16/ne_segment.c
+++ b/dlls/krnl386.exe16/ne_segment.c
@@ -689,8 +689,6 @@ static BOOL NE_InitDLL( NE_MODULE *pModule )
context.Edi = hInst;
context.SegDs = ds;
context.SegEs = ds; /* who knows ... */
- context.SegFs = wine_get_fs();
- context.SegGs = wine_get_gs();
context.SegCs = SEL(pSegTable[SELECTOROF(pModule->ne_csip)-1].hSeg);
context.Eip = OFFSETOF(pModule->ne_csip);
context.Ebp = OFFSETOF(NtCurrentTeb()->WOW32Reserved) + FIELD_OFFSET(STACK16FRAME,bp);
@@ -794,8 +792,6 @@ static void NE_CallDllEntryPoint( NE_MODULE *pModule, DWORD dwReason )
memset( &context, 0, sizeof(context) );
context.SegDs = ds;
context.SegEs = ds; /* who knows ... */
- context.SegFs = wine_get_fs();
- context.SegGs = wine_get_gs();
context.SegCs = HIWORD(entryPoint);
context.Eip = LOWORD(entryPoint);
context.Ebp = OFFSETOF(NtCurrentTeb()->WOW32Reserved) + FIELD_OFFSET(STACK16FRAME,bp);
diff --git a/dlls/krnl386.exe16/thunk.c b/dlls/krnl386.exe16/thunk.c
index b4ba7d2..c8ad382 100644
--- a/dlls/krnl386.exe16/thunk.c
+++ b/dlls/krnl386.exe16/thunk.c
@@ -431,8 +431,6 @@ void WINAPI __regs_QT_Thunk( CONTEXT *context )
context16 = *context;
- context16.SegFs = wine_get_fs();
- context16.SegGs = wine_get_gs();
context16.SegCs = HIWORD(context->Edx);
context16.Eip = LOWORD(context->Edx);
/* point EBP to the STACK16FRAME on the stack
@@ -561,8 +559,6 @@ void WINAPI __regs_FT_Thunk( CONTEXT *context )
context16 = *context;
- context16.SegFs = wine_get_fs();
- context16.SegGs = wine_get_gs();
context16.SegCs = HIWORD(callTarget);
context16.Eip = LOWORD(callTarget);
context16.Ebp = OFFSETOF(NtCurrentTeb()->WOW32Reserved) + FIELD_OFFSET(STACK16FRAME,bp);
@@ -720,8 +716,6 @@ void WINAPI __regs_Common32ThkLS( CONTEXT *context )
context16 = *context;
- context16.SegFs = wine_get_fs();
- context16.SegGs = wine_get_gs();
context16.Edi = LOWORD(context->Ecx);
context16.SegCs = HIWORD(context->Eax);
context16.Eip = LOWORD(context->Eax);
@@ -779,8 +773,6 @@ void WINAPI __regs_OT_32ThkLSF( CONTEXT *context )
context16 = *context;
- context16.SegFs = wine_get_fs();
- context16.SegGs = wine_get_gs();
context16.SegCs = HIWORD(context->Edx);
context16.Eip = LOWORD(context->Edx);
context16.Ebp = OFFSETOF(NtCurrentTeb()->WOW32Reserved) + FIELD_OFFSET(STACK16FRAME,bp);
diff --git a/dlls/system.drv16/system.c b/dlls/system.drv16/system.c
index 8bb5cf9..b6fd51c 100644
--- a/dlls/system.drv16/system.c
+++ b/dlls/system.drv16/system.c
@@ -68,8 +68,6 @@ static void CALLBACK SYSTEM_TimerTick( LPVOID arg, DWORD low, DWORD high )
SYS_Timers[i].ticks += SYS_Timers[i].rate;
memset( &context, 0, sizeof(context) );
- context.SegFs = wine_get_fs();
- context.SegGs = wine_get_gs();
context.SegCs = SELECTOROF( proc );
context.Eip = OFFSETOF( proc );
context.Ebp = OFFSETOF(NtCurrentTeb()->WOW32Reserved) + FIELD_OFFSET(STACK16FRAME, bp);
diff --git a/tools/winebuild/relay.c b/tools/winebuild/relay.c
index 1adbda0..8718346 100644
--- a/tools/winebuild/relay.c
+++ b/tools/winebuild/relay.c
@@ -492,10 +492,6 @@ static void BuildCallTo16Core( int reg_func )
output( "\tpushw 0x98(%%edx)\n"); /* SegDs */
output( "\tpushl 0x94(%%edx)\n"); /* SegEs */
output( "\tpopl %%es\n" );
- output( "\tpushl 0x90(%%edx)\n"); /* SegFs */
- output( "\tpopl %%fs\n" );
- output( "\tpushl 0x8c(%%edx)\n"); /* SegGs */
- output( "\tpopl %%gs\n" );
output( "\tmovl 0xb4(%%edx),%%ebp\n"); /* Ebp */
output( "\tmovl 0xa0(%%edx),%%esi\n"); /* Esi */
output( "\tmovl 0x9c(%%edx),%%edi\n"); /* Edi */
More information about the wine-cvs
mailing list