kernel32: Make krnl386.exe into a stand-alone 16-bit module.
diff --git a/.gitignore b/.gitignore
index 1cf31f1..6a63858 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,7 +58,6 @@
dlls/kernel32/nls/winerr_nor.mc.rc
dlls/kernel32/nls/winerr_plk.mc.rc
dlls/kernel32/nls/winerr_ptg.mc.rc
-dlls/krnl386.exe16
dlls/libd3dx9.def
dlls/libwinspool.def
dlls/libxinput.def
diff --git a/configure b/configure
index e0ae0d2..c8c1def 100755
--- a/configure
+++ b/configure
@@ -15122,6 +15122,14 @@
ac_config_files="$ac_config_files dlls/keyboard.drv16/Makefile"
ALL_MAKEFILES="$ALL_MAKEFILES \\
+ dlls/krnl386.exe16/Makefile"
+test "x$enable_win16" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\
+ krnl386.exe16"
+ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
+dlls/krnl386.exe16/Makefile: dlls/krnl386.exe16/Makefile.in dlls/Makedll.rules"
+ac_config_files="$ac_config_files dlls/krnl386.exe16/Makefile"
+
+ALL_MAKEFILES="$ALL_MAKEFILES \\
dlls/loadperf/Makefile"
test "x$enable_loadperf" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\
loadperf"
@@ -18924,6 +18932,7 @@
"dlls/kernel32/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/kernel32/Makefile" ;;
"dlls/kernel32/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/kernel32/tests/Makefile" ;;
"dlls/keyboard.drv16/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/keyboard.drv16/Makefile" ;;
+ "dlls/krnl386.exe16/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/krnl386.exe16/Makefile" ;;
"dlls/loadperf/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/loadperf/Makefile" ;;
"dlls/localspl/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/localspl/Makefile" ;;
"dlls/localspl/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/localspl/tests/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index 9178306..184c70d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2305,6 +2305,7 @@
WINE_CONFIG_MAKEFILE([dlls/kernel32/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/kernel32/tests/Makefile],[dlls/Maketest.rules],[dlls],[ALL_TEST_DIRS],[enable_tests])
WINE_CONFIG_MAKEFILE([dlls/keyboard.drv16/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS],[enable_win16])
+WINE_CONFIG_MAKEFILE([dlls/krnl386.exe16/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS],[enable_win16])
WINE_CONFIG_MAKEFILE([dlls/loadperf/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/localspl/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
WINE_CONFIG_MAKEFILE([dlls/localspl/tests/Makefile],[dlls/Maketest.rules],[dlls],[ALL_TEST_DIRS],[enable_tests])
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 8e44eb0..13b3cbf 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -18,7 +18,6 @@
# 16-bit dlls
WIN16_FILES = \
- krnl386.exe16 \
wprocs.dll16
@MAKE_RULES@
@@ -29,9 +28,6 @@
# Placeholders for 16-bit libraries
-krnl386.exe16:
- echo "kernel32.dll" >$@
-
wprocs.dll16:
echo "winedos.dll" >$@
diff --git a/dlls/kernel32/Makefile.in b/dlls/kernel32/Makefile.in
index df97736..fbf3f2d 100644
--- a/dlls/kernel32/Makefile.in
+++ b/dlls/kernel32/Makefile.in
@@ -9,8 +9,6 @@
EXTRALIBS = @COREFOUNDATIONLIB@ @LIBPOLL@
EXTRADLLFLAGS = -Wb,-F,KERNEL32.dll -Wl,--image-base,0x7b800000
-SPEC_SRCS16 = krnl386.exe.spec
-
C_SRCS = \
actctx.c \
atom.c \
@@ -20,64 +18,38 @@
console.c \
cpu.c \
debugger.c \
- dosmem.c \
editline.c \
environ.c \
except.c \
fiber.c \
file.c \
- file16.c \
format_msg.c \
- global16.c \
heap.c \
- instr.c \
kernel_main.c \
lcformat.c \
- local16.c \
locale.c \
lzexpand.c \
module.c \
- ne_module.c \
- ne_segment.c \
oldconfig.c \
path.c \
powermgnt.c \
process.c \
profile.c \
- relay16.c \
resource.c \
- resource16.c \
- selector.c \
- snoop16.c \
string.c \
sync.c \
- syslevel.c \
tape.c \
- task.c \
thread.c \
- thunk.c \
time.c \
toolhelp.c \
- utthunk.c \
version.c \
virtual.c \
- volume.c \
- vxd.c \
- wowthunk.c
-
-C_SRCS16 = \
- atom16.c \
- error16.c \
- kernel16.c \
- registry16.c
+ volume.c
RC_SRCS = \
locale_rc.rc \
version.rc
-RC_SRCS16 = \
- version16.rc
-
MC_SRCS = \
nls/winerr_deu.mc \
nls/winerr_enu.mc \
@@ -90,20 +62,8 @@
nls/winerr_plk.mc \
nls/winerr_ptg.mc
-EXTRA_OBJS = relay16asm.o
EXTRASUBDIRS = nls
@MAKE_DLL_RULES@
-relay16asm.o: $(WINEBUILD)
- $(WINEBUILD) $(WINEBUILDFLAGS) -o $@ --relay16
-
-# Special rules for 16-bit resource and spec files
-
-krnl386.exe.spec.o: krnl386.exe.spec version16.res
- $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --dll-name kernel --main-module $(MODULE) --res version16.res --export $(SRCDIR)/krnl386.exe.spec
-
-version16.res: version16.rc
- $(LDPATH) $(RC16) $(RC16FLAGS) -fo$@ $(SRCDIR)/version16.rc
-
@DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index 5c7ba20..edec6b0 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -40,7 +40,6 @@
#include "winternl.h"
#include "winioctl.h"
#include "wincon.h"
-#include "wine/winbase16.h"
#include "kernel_private.h"
#include "wine/exception.h"
@@ -1363,7 +1362,13 @@
options, NULL, 0 );
if (status)
{
- if (vxd_name && vxd_name[0] && (ret = VXD_Open( vxd_name, access, sa ))) goto done;
+ if (vxd_name && vxd_name[0])
+ {
+ static HANDLE (*vxd_open)(LPCWSTR,DWORD,SECURITY_ATTRIBUTES*);
+ if (!vxd_open) vxd_open = (void *)GetProcAddress( GetModuleHandleA("krnl386.exe16"),
+ "__wine_vxd_open" );
+ if (vxd_open && (ret = vxd_open( vxd_name, access, sa ))) goto done;
+ }
WARN("Unable to create file %s (status %x)\n", debugstr_w(filename), status);
ret = INVALID_HANDLE_VALUE;
@@ -2345,7 +2350,13 @@
if (HIWORD( dwIoControlCode ) == 0 && (GetVersion() & 0x80000000))
{
- DeviceIoProc proc = VXD_get_proc( hDevice );
+ typedef BOOL (WINAPI *DeviceIoProc)(DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPOVERLAPPED);
+ static DeviceIoProc (*vxd_get_proc)(HANDLE);
+ DeviceIoProc proc = NULL;
+
+ if (!vxd_get_proc) vxd_get_proc = (void *)GetProcAddress( GetModuleHandleA("krnl386.exe16"),
+ "__wine_vxd_get_proc" );
+ if (vxd_get_proc) proc = vxd_get_proc( hDevice );
if (proc) return proc( dwIoControlCode, lpvInBuffer, cbInBuffer,
lpvOutBuffer, cbOutBuffer, lpcbBytesReturned, lpOverlapped );
}
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index bab25a0..f381017 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -8,128 +8,128 @@
# - code generated by the MS Thunk Compiler
# - symbols exported by the Oct 94 beta version of kernel32.dll
- 1 stdcall -noname -i386 -register VxDCall0(long) VxDCall
- 2 stdcall -noname -i386 -register VxDCall1(long) VxDCall
- 3 stdcall -noname -i386 -register VxDCall2(long) VxDCall
- 4 stdcall -noname -i386 -register VxDCall3(long) VxDCall
- 5 stdcall -noname -i386 -register VxDCall4(long) VxDCall
- 6 stdcall -noname -i386 -register VxDCall5(long) VxDCall
- 7 stdcall -noname -i386 -register VxDCall6(long) VxDCall
- 8 stdcall -noname -i386 -register VxDCall7(long) VxDCall
- 9 stdcall -noname -i386 -register VxDCall8(long) VxDCall
- 10 stdcall -noname -i386 k32CharToOemA(str ptr)
- 11 stdcall -noname -i386 k32CharToOemBuffA(str ptr long)
- 12 stdcall -noname -i386 k32OemToCharA(ptr ptr)
- 13 stdcall -noname -i386 k32OemToCharBuffA(ptr ptr long)
- 14 stdcall -noname -i386 k32LoadStringA(long long ptr long)
- 15 varargs -noname -i386 k32wsprintfA(str str)
- 16 stdcall -noname -i386 k32wvsprintfA(ptr str ptr)
- 17 stdcall -noname -i386 -register CommonUnimpStub()
- 18 stdcall -noname GetProcessDword(long long)
- 19 stub -noname ThunkTheTemplateHandle
- 20 stdcall -noname DosFileHandleToWin32Handle(long)
- 21 stdcall -noname Win32HandleToDosFileHandle(long)
- 22 stdcall -noname DisposeLZ32Handle(long)
- 23 stub -noname GDIReallyCares
- 24 stdcall -noname GlobalAlloc16(long long)
- 25 stdcall -noname GlobalLock16(long)
- 26 stdcall -noname GlobalUnlock16(long)
- 27 stdcall -noname GlobalFix16(long)
- 28 stdcall -noname GlobalUnfix16(long)
- 29 stdcall -noname GlobalWire16(long)
- 30 stdcall -noname GlobalUnWire16(long)
- 31 stdcall -noname GlobalFree16(long)
- 32 stdcall -noname GlobalSize16(long)
- 33 stdcall -noname -i386 HouseCleanLogicallyDeadHandles()
- 34 stdcall -noname -i386 GetWin16DOSEnv()
- 35 stdcall -noname LoadLibrary16(str)
- 36 stdcall -noname FreeLibrary16(long)
- 37 stdcall -noname GetProcAddress16(long str) WIN32_GetProcAddress16
- 38 stdcall -noname -i386 -register AllocMappedBuffer()
- 39 stdcall -noname -i386 -register FreeMappedBuffer()
- 40 stdcall -noname -i386 -register OT_32ThkLSF()
- 41 stdcall -noname -i386 ThunkInitLSF(long str long str str)
- 42 stdcall -noname -i386 -register LogApiThkLSF(str)
- 43 stdcall -noname -i386 ThunkInitLS(long str long str str)
- 44 stdcall -noname -i386 -register LogApiThkSL(str)
- 45 stdcall -noname -i386 -register Common32ThkLS()
- 46 stdcall -noname -i386 ThunkInitSL(long str long str str)
- 47 stdcall -noname -i386 -register LogCBThkSL(str)
- 48 stdcall -noname ReleaseThunkLock(ptr)
- 49 stdcall -noname RestoreThunkLock(long)
+ 1 stdcall -noname -i386 -register VxDCall0(long) krnl386.exe16.VxDCall0
+ 2 stdcall -noname -i386 -register VxDCall1(long) krnl386.exe16.VxDCall1
+ 3 stdcall -noname -i386 -register VxDCall2(long) krnl386.exe16.VxDCall2
+ 4 stdcall -noname -i386 -register VxDCall3(long) krnl386.exe16.VxDCall3
+ 5 stdcall -noname -i386 -register VxDCall4(long) krnl386.exe16.VxDCall4
+ 6 stdcall -noname -i386 -register VxDCall5(long) krnl386.exe16.VxDCall5
+ 7 stdcall -noname -i386 -register VxDCall6(long) krnl386.exe16.VxDCall6
+ 8 stdcall -noname -i386 -register VxDCall7(long) krnl386.exe16.VxDCall7
+ 9 stdcall -noname -i386 -register VxDCall8(long) krnl386.exe16.VxDCall8
+ 10 stdcall -noname -i386 k32CharToOemA(str ptr) krnl386.exe16.k32CharToOemA
+ 11 stdcall -noname -i386 k32CharToOemBuffA(str ptr long) krnl386.exe16.k32CharToOemBuffA
+ 12 stdcall -noname -i386 k32OemToCharA(ptr ptr) krnl386.exe16.k32OemToCharA
+ 13 stdcall -noname -i386 k32OemToCharBuffA(ptr ptr long) krnl386.exe16.k32OemToCharBuffA
+ 14 stdcall -noname -i386 k32LoadStringA(long long ptr long) krnl386.exe16.k32LoadStringA
+ 15 varargs -noname -i386 k32wsprintfA(str str) krnl386.exe16.k32wsprintfA
+ 16 stdcall -noname -i386 k32wvsprintfA(ptr str ptr) krnl386.exe16.k32wvsprintfA
+ 17 stdcall -noname -i386 -register CommonUnimpStub() krnl386.exe16.CommonUnimpStub
+ 18 stdcall -noname -i386 GetProcessDword(long long) krnl386.exe16.GetProcessDword
+ 19 stub -noname -i386 ThunkTheTemplateHandle
+ 20 stdcall -noname -i386 DosFileHandleToWin32Handle(long) krnl386.exe16.DosFileHandleToWin32Handle
+ 21 stdcall -noname -i386 Win32HandleToDosFileHandle(long) krnl386.exe16.Win32HandleToDosFileHandle
+ 22 stdcall -noname -i386 DisposeLZ32Handle(long) krnl386.exe16.DisposeLZ32Handle
+ 23 stub -noname -i386 GDIReallyCares
+ 24 stdcall -noname -i386 GlobalAlloc16(long long) krnl386.exe16.GlobalAlloc16
+ 25 stdcall -noname -i386 GlobalLock16(long) krnl386.exe16.GlobalLock16
+ 26 stdcall -noname -i386 GlobalUnlock16(long) krnl386.exe16.GlobalUnlock16
+ 27 stdcall -noname -i386 GlobalFix16(long) krnl386.exe16.GlobalFix16
+ 28 stdcall -noname -i386 GlobalUnfix16(long) krnl386.exe16.GlobalUnfix16
+ 29 stdcall -noname -i386 GlobalWire16(long) krnl386.exe16.GlobalWire16
+ 30 stdcall -noname -i386 GlobalUnWire16(long) krnl386.exe16.GlobalUnWire16
+ 31 stdcall -noname -i386 GlobalFree16(long) krnl386.exe16.GlobalFree16
+ 32 stdcall -noname -i386 GlobalSize16(long) krnl386.exe16.GlobalSize16
+ 33 stdcall -noname -i386 HouseCleanLogicallyDeadHandles() krnl386.exe16.HouseCleanLogicallyDeadHandles
+ 34 stdcall -noname -i386 GetWin16DOSEnv() krnl386.exe16.GetWin16DOSEnv
+ 35 stdcall -noname -i386 LoadLibrary16(str) krnl386.exe16.LoadLibrary16
+ 36 stdcall -noname -i386 FreeLibrary16(long) krnl386.exe16.FreeLibrary16
+ 37 stdcall -noname -i386 GetProcAddress16(long str) krnl386.exe16.GetProcAddress16
+ 38 stdcall -noname -i386 -register AllocMappedBuffer() krnl386.exe16.AllocMappedBuffer
+ 39 stdcall -noname -i386 -register FreeMappedBuffer() krnl386.exe16.FreeMappedBuffer
+ 40 stdcall -noname -i386 -register OT_32ThkLSF() krnl386.exe16.OT_32ThkLSF
+ 41 stdcall -noname -i386 ThunkInitLSF(long str long str str) krnl386.exe16.ThunkInitLSF
+ 42 stdcall -noname -i386 -register LogApiThkLSF(str) krnl386.exe16.LogApiThkLSF
+ 43 stdcall -noname -i386 ThunkInitLS(long str long str str) krnl386.exe16.ThunkInitLS
+ 44 stdcall -noname -i386 -register LogApiThkSL(str) krnl386.exe16.LogApiThkSL
+ 45 stdcall -noname -i386 -register Common32ThkLS() krnl386.exe16.Common32ThkLS
+ 46 stdcall -noname -i386 ThunkInitSL(long str long str str) krnl386.exe16.ThunkInitSL
+ 47 stdcall -noname -i386 -register LogCBThkSL(str) krnl386.exe16.LogCBThkSL
+ 48 stdcall -noname -i386 ReleaseThunkLock(ptr) krnl386.exe16.ReleaseThunkLock
+ 49 stdcall -noname -i386 RestoreThunkLock(long) krnl386.exe16.RestoreThunkLock
- 51 stdcall -noname -i386 -register W32S_BackTo32()
- 52 stdcall -noname -i386 GetThunkBuff()
- 53 stdcall -noname -i386 GetThunkStuff(str str)
- 54 stdcall -noname K32WOWCallback16(long long)
- 55 stdcall -noname K32WOWCallback16Ex(ptr long long ptr ptr)
- 56 stdcall -noname K32WOWGetVDMPointer(long long long)
- 57 stdcall -noname K32WOWHandle32(long long)
- 58 stdcall -noname K32WOWHandle16(long long)
- 59 stdcall -noname K32WOWGlobalAlloc16(long long)
- 60 stdcall -noname K32WOWGlobalLock16(long)
- 61 stdcall -noname K32WOWGlobalUnlock16(long)
- 62 stdcall -noname K32WOWGlobalFree16(long)
- 63 stdcall -noname K32WOWGlobalAllocLock16(long long ptr)
- 64 stdcall -noname K32WOWGlobalUnlockFree16(long)
- 65 stdcall -noname K32WOWGlobalLockSize16(long ptr)
- 66 stdcall -noname K32WOWYield16()
- 67 stdcall -noname K32WOWDirectedYield16(long)
- 68 stdcall -noname K32WOWGetVDMPointerFix(long long long)
- 69 stdcall -noname K32WOWGetVDMPointerUnfix(long)
- 70 stdcall -noname K32WOWGetDescriptor(long long)
- 71 stub -noname IsThreadId
- 72 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerAdd(long long long long) ntdll.RtlLargeIntegerAdd
- 73 stdcall -noname -arch=win32 -ret64 K32RtlEnlargedIntegerMultiply(long long) ntdll.RtlEnlargedIntegerMultiply
- 74 stdcall -noname -arch=win32 -ret64 K32RtlEnlargedUnsignedMultiply(long long) ntdll.RtlEnlargedUnsignedMultiply
- 75 stdcall -noname -arch=win32 K32RtlEnlargedUnsignedDivide(long long long ptr) ntdll.RtlEnlargedUnsignedDivide
- 76 stdcall -noname -arch=win32 -ret64 K32RtlExtendedLargeIntegerDivide(long long long ptr) ntdll.RtlExtendedLargeIntegerDivide
- 77 stdcall -noname -arch=win32 -ret64 K32RtlExtendedMagicDivide(long long long long long) ntdll.RtlExtendedMagicDivide
- 78 stdcall -noname -arch=win32 -ret64 K32RtlExtendedIntegerMultiply(long long long) ntdll.RtlExtendedIntegerMultiply
- 79 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerShiftLeft(long long long) ntdll.RtlLargeIntegerShiftLeft
- 80 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerShiftRight(long long long) ntdll.RtlLargeIntegerShiftRight
- 81 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerArithmeticShift(long long long) ntdll.RtlLargeIntegerArithmeticShift
- 82 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerNegate(long long) ntdll.RtlLargeIntegerNegate
- 83 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerSubtract(long long long long) ntdll.RtlLargeIntegerSubtract
- 84 stdcall -noname -arch=win32 -ret64 K32RtlConvertLongToLargeInteger(long) ntdll.RtlConvertLongToLargeInteger
- 85 stdcall -noname -arch=win32 -ret64 K32RtlConvertUlongToLargeInteger(long) ntdll.RtlConvertUlongToLargeInteger
- 86 stdcall @(ptr) _KERNEL32_86
- 87 stdcall -noname -i386 SSOnBigStack()
- 88 varargs -noname -i386 SSCall(long long ptr)
- 89 stdcall -noname -i386 -register FT_PrologPrime()
- 90 stdcall -noname -i386 -register QT_ThunkPrime()
- 91 stdcall -noname -i386 PK16FNF(ptr)
- 92 stdcall -noname -i386 GetPK16SysVar()
- 93 stdcall -noname GetpWin16Lock(ptr)
- 94 stdcall -noname _CheckNotSysLevel(ptr)
- 95 stdcall -noname _ConfirmSysLevel(ptr)
- 96 stdcall -noname _ConfirmWin16Lock()
- 97 stdcall -noname _EnterSysLevel(ptr)
- 98 stdcall -noname _LeaveSysLevel(ptr)
- 99 stdcall -i386 @(long) _KERNEL32_99
-100 stdcall -i386 @(long long long) _KERNEL32_100
-101 stub @
-102 stub @
-103 stub @
-104 stub @
-105 stub @
-106 stub @
-107 stub @
-108 stub @
-109 stub @
-110 stub @
-111 stub @
-112 stub @
-113 stub @
-114 stub @
-115 stub @
-116 stub @
-117 stub @
+ 51 stdcall -noname -i386 -register W32S_BackTo32() krnl386.exe16.W32S_BackTo32
+ 52 stdcall -noname -i386 GetThunkBuff() krnl386.exe16.GetThunkBuff
+ 53 stdcall -noname -i386 GetThunkStuff(str str) krnl386.exe16.GetThunkStuff
+ 54 stdcall -noname -i386 K32WOWCallback16(long long) krnl386.exe16.K32WOWCallback16
+ 55 stdcall -noname -i386 K32WOWCallback16Ex(ptr long long ptr ptr) krnl386.exe16.K32WOWCallback16Ex
+ 56 stdcall -noname -i386 K32WOWGetVDMPointer(long long long) krnl386.exe16.K32WOWGetVDMPointer
+ 57 stdcall -noname -i386 K32WOWHandle32(long long) krnl386.exe16.K32WOWHandle32
+ 58 stdcall -noname -i386 K32WOWHandle16(long long) krnl386.exe16.K32WOWHandle16
+ 59 stdcall -noname -i386 K32WOWGlobalAlloc16(long long) krnl386.exe16.K32WOWGlobalAlloc16
+ 60 stdcall -noname -i386 K32WOWGlobalLock16(long) krnl386.exe16.K32WOWGlobalLock16
+ 61 stdcall -noname -i386 K32WOWGlobalUnlock16(long) krnl386.exe16.K32WOWGlobalUnlock16
+ 62 stdcall -noname -i386 K32WOWGlobalFree16(long) krnl386.exe16.K32WOWGlobalFree16
+ 63 stdcall -noname -i386 K32WOWGlobalAllocLock16(long long ptr) krnl386.exe16.K32WOWGlobalAllocLock16
+ 64 stdcall -noname -i386 K32WOWGlobalUnlockFree16(long) krnl386.exe16.K32WOWGlobalUnlockFree16
+ 65 stdcall -noname -i386 K32WOWGlobalLockSize16(long ptr) krnl386.exe16.K32WOWGlobalLockSize16
+ 66 stdcall -noname -i386 K32WOWYield16() krnl386.exe16.K32WOWYield16
+ 67 stdcall -noname -i386 K32WOWDirectedYield16(long) krnl386.exe16.K32WOWDirectedYield16
+ 68 stdcall -noname -i386 K32WOWGetVDMPointerFix(long long long) krnl386.exe16.K32WOWGetVDMPointerFix
+ 69 stdcall -noname -i386 K32WOWGetVDMPointerUnfix(long) krnl386.exe16.K32WOWGetVDMPointerUnfix
+ 70 stdcall -noname -i386 K32WOWGetDescriptor(long long) krnl386.exe16.K32WOWGetDescriptor
+ 71 stub -noname -i386 IsThreadId
+ 72 stdcall -noname -i386 -ret64 K32RtlLargeIntegerAdd(long long long long) ntdll.RtlLargeIntegerAdd
+ 73 stdcall -noname -i386 -ret64 K32RtlEnlargedIntegerMultiply(long long) ntdll.RtlEnlargedIntegerMultiply
+ 74 stdcall -noname -i386 -ret64 K32RtlEnlargedUnsignedMultiply(long long) ntdll.RtlEnlargedUnsignedMultiply
+ 75 stdcall -noname -i386 K32RtlEnlargedUnsignedDivide(long long long ptr) ntdll.RtlEnlargedUnsignedDivide
+ 76 stdcall -noname -i386 -ret64 K32RtlExtendedLargeIntegerDivide(long long long ptr) ntdll.RtlExtendedLargeIntegerDivide
+ 77 stdcall -noname -i386 -ret64 K32RtlExtendedMagicDivide(long long long long long) ntdll.RtlExtendedMagicDivide
+ 78 stdcall -noname -i386 -ret64 K32RtlExtendedIntegerMultiply(long long long) ntdll.RtlExtendedIntegerMultiply
+ 79 stdcall -noname -i386 -ret64 K32RtlLargeIntegerShiftLeft(long long long) ntdll.RtlLargeIntegerShiftLeft
+ 80 stdcall -noname -i386 -ret64 K32RtlLargeIntegerShiftRight(long long long) ntdll.RtlLargeIntegerShiftRight
+ 81 stdcall -noname -i386 -ret64 K32RtlLargeIntegerArithmeticShift(long long long) ntdll.RtlLargeIntegerArithmeticShift
+ 82 stdcall -noname -i386 -ret64 K32RtlLargeIntegerNegate(long long) ntdll.RtlLargeIntegerNegate
+ 83 stdcall -noname -i386 -ret64 K32RtlLargeIntegerSubtract(long long long long) ntdll.RtlLargeIntegerSubtract
+ 84 stdcall -noname -i386 -ret64 K32RtlConvertLongToLargeInteger(long) ntdll.RtlConvertLongToLargeInteger
+ 85 stdcall -noname -i386 -ret64 K32RtlConvertUlongToLargeInteger(long) ntdll.RtlConvertUlongToLargeInteger
+ 86 stdcall -i386 @(ptr) krnl386.exe16._KERNEL32_86
+ 87 stdcall -noname -i386 SSOnBigStack() krnl386.exe16.SSOnBigStack
+ 88 varargs -noname -i386 SSCall(long long ptr) krnl386.exe16.SSCall
+ 89 stdcall -noname -i386 -register FT_PrologPrime() krnl386.exe16.FT_PrologPrime
+ 90 stdcall -noname -i386 -register QT_ThunkPrime() krnl386.exe16.QT_ThunkPrime
+ 91 stdcall -noname -i386 PK16FNF(ptr) krnl386.exe16.PK16FNF
+ 92 stdcall -noname -i386 GetPK16SysVar() krnl386.exe16.GetPK16SysVar
+ 93 stdcall -noname -i386 GetpWin16Lock(ptr) krnl386.exe16.GetpWin16Lock
+ 94 stdcall -noname -i386 _CheckNotSysLevel(ptr) krnl386.exe16._CheckNotSysLevel
+ 95 stdcall -noname -i386 _ConfirmSysLevel(ptr) krnl386.exe16._ConfirmSysLevel
+ 96 stdcall -noname -i386 _ConfirmWin16Lock() krnl386.exe16._ConfirmWin16Lock
+ 97 stdcall -noname -i386 _EnterSysLevel(ptr) krnl386.exe16._EnterSysLevel
+ 98 stdcall -noname -i386 _LeaveSysLevel(ptr) krnl386.exe16._LeaveSysLevel
+ 99 stdcall -i386 @(long) krnl386.exe16._KERNEL32_99
+100 stdcall -i386 @(long long long) krnl386.exe16._KERNEL32_100
+101 stub -i386 @
+102 stub -i386 @
+103 stub -i386 @
+104 stub -i386 @
+105 stub -i386 @
+106 stub -i386 @
+107 stub -i386 @
+108 stub -i386 @
+109 stub -i386 @
+110 stub -i386 @
+111 stub -i386 @
+112 stub -i386 @
+113 stub -i386 @
+114 stub -i386 @
+115 stub -i386 @
+116 stub -i386 @
+117 stub -i386 @
-119 stub @
-120 stub @
-121 stub @
-122 stub @
+119 stub -i386 @
+120 stub -i386 @
+121 stub -i386 @
+122 stub -i386 @
# functions exported by name, ordinal doesn't matter
@@ -144,7 +144,7 @@
@ stdcall AddVectoredExceptionHandler(long ptr) ntdll.RtlAddVectoredExceptionHandler
@ stdcall AllocConsole()
@ stub -i386 AllocLSCallback
-@ stdcall -i386 AllocSLCallback(ptr ptr)
+@ stdcall -i386 AllocSLCallback(ptr ptr) krnl386.exe16.AllocSLCallback
@ stub AllocateUserPhysicalPages
@ stdcall AreFileApisANSI()
@ stdcall AssignProcessToJobObject(ptr ptr)
@@ -341,23 +341,23 @@
@ stub ExpungeConsoleCommandHistoryA
@ stub ExpungeConsoleCommandHistoryW
@ stub ExtendVirtualBuffer
-@ stdcall -i386 -norelay FT_Exit0()
-@ stdcall -i386 -norelay FT_Exit12()
-@ stdcall -i386 -norelay FT_Exit16()
-@ stdcall -i386 -norelay FT_Exit20()
-@ stdcall -i386 -norelay FT_Exit24()
-@ stdcall -i386 -norelay FT_Exit28()
-@ stdcall -i386 -norelay FT_Exit32()
-@ stdcall -i386 -norelay FT_Exit36()
-@ stdcall -i386 -norelay FT_Exit40()
-@ stdcall -i386 -norelay FT_Exit44()
-@ stdcall -i386 -norelay FT_Exit48()
-@ stdcall -i386 -norelay FT_Exit4()
-@ stdcall -i386 -norelay FT_Exit52()
-@ stdcall -i386 -norelay FT_Exit56()
-@ stdcall -i386 -norelay FT_Exit8()
-@ stdcall -i386 -register FT_Prolog()
-@ stdcall -i386 -register FT_Thunk()
+@ stdcall -i386 -norelay FT_Exit0() krnl386.exe16.FT_Exit0
+@ stdcall -i386 -norelay FT_Exit12() krnl386.exe16.FT_Exit12
+@ stdcall -i386 -norelay FT_Exit16() krnl386.exe16.FT_Exit16
+@ stdcall -i386 -norelay FT_Exit20() krnl386.exe16.FT_Exit20
+@ stdcall -i386 -norelay FT_Exit24() krnl386.exe16.FT_Exit24
+@ stdcall -i386 -norelay FT_Exit28() krnl386.exe16.FT_Exit28
+@ stdcall -i386 -norelay FT_Exit32() krnl386.exe16.FT_Exit32
+@ stdcall -i386 -norelay FT_Exit36() krnl386.exe16.FT_Exit36
+@ stdcall -i386 -norelay FT_Exit40() krnl386.exe16.FT_Exit40
+@ stdcall -i386 -norelay FT_Exit44() krnl386.exe16.FT_Exit44
+@ stdcall -i386 -norelay FT_Exit48() krnl386.exe16.FT_Exit48
+@ stdcall -i386 -norelay FT_Exit4() krnl386.exe16.FT_Exit4
+@ stdcall -i386 -norelay FT_Exit52() krnl386.exe16.FT_Exit52
+@ stdcall -i386 -norelay FT_Exit56() krnl386.exe16.FT_Exit56
+@ stdcall -i386 -norelay FT_Exit8() krnl386.exe16.FT_Exit8
+@ stdcall -i386 -register FT_Prolog() krnl386.exe16.FT_Prolog
+@ stdcall -i386 -register FT_Thunk() krnl386.exe16.FT_Thunk
@ stdcall FatalAppExitA(long str)
@ stdcall FatalAppExitW(long wstr)
@ stdcall FatalExit(long)
@@ -412,15 +412,15 @@
@ stdcall FreeConsole()
@ stdcall FreeEnvironmentStringsA(ptr)
@ stdcall FreeEnvironmentStringsW(ptr)
-@ stub FreeLSCallback
+@ stub -i386 FreeLSCallback
@ stdcall FreeLibrary(long)
@ stdcall FreeLibraryAndExitThread(long long)
@ stdcall FreeResource(long)
-@ stdcall -i386 FreeSLCallback(long)
+@ stdcall -i386 FreeSLCallback(long) krnl386.exe16.FreeSLCallback
@ stub FreeUserPhysicalPages
@ stub FreeVirtualBuffer
@ stdcall GenerateConsoleCtrlEvent(long long)
-@ stdcall -i386 Get16DLLAddress(long str)
+@ stdcall -i386 Get16DLLAddress(long str) krnl386.exe16.Get16DLLAddress
@ stdcall GetACP()
@ stdcall GetAtomNameA(long ptr long)
@ stdcall GetAtomNameW(long ptr long)
@@ -536,8 +536,8 @@
@ stdcall GetGeoInfoW(long long ptr long long)
@ stdcall GetHandleContext(long)
@ stdcall GetHandleInformation(long ptr)
-@ stub GetLSCallbackTarget
-@ stub GetLSCallbackTemplate
+@ stub -i386 GetLSCallbackTarget
+@ stub -i386 GetLSCallbackTemplate
@ stdcall GetLargestConsoleWindowSize(long)
@ stdcall GetLastError()
@ stub GetLinguistLangSize
@@ -608,8 +608,8 @@
@ stdcall GetProfileStringA(str str str ptr long)
@ stdcall GetProfileStringW(wstr wstr wstr ptr long)
@ stdcall GetQueuedCompletionStatus(long ptr ptr ptr long)
-@ stub GetSLCallbackTarget
-@ stub GetSLCallbackTemplate
+@ stub -i386 GetSLCallbackTarget
+@ stub -i386 GetSLCallbackTemplate
@ stdcall GetShortPathNameA(str ptr long)
@ stdcall GetShortPathNameW(wstr ptr long)
@ stdcall GetStartupInfoA(ptr)
@@ -744,18 +744,18 @@
@ stdcall IsDBCSLeadByte(long)
@ stdcall IsDBCSLeadByteEx(long long)
@ stdcall IsDebuggerPresent()
-@ stub IsLSCallback
+@ stub -i386 IsLSCallback
@ stdcall IsProcessInJob(long long ptr)
@ stdcall IsProcessorFeaturePresent(long)
-@ stub IsSLCallback
+@ stub -i386 IsSLCallback
@ stdcall IsSystemResumeAutomatic()
@ stdcall IsValidCodePage(long)
@ stdcall IsValidLanguageGroup(long long)
@ stdcall IsValidLocale(long long)
# @ stub IsValidUILanguage
@ stdcall IsWow64Process(ptr ptr)
-@ stdcall -i386 -register K32Thk1632Epilog()
-@ stdcall -i386 -register K32Thk1632Prolog()
+@ stdcall -i386 -register K32Thk1632Epilog() krnl386.exe16.K32Thk1632Epilog
+@ stdcall -i386 -register K32Thk1632Prolog() krnl386.exe16.K32Thk1632Prolog
@ stdcall LCIDToLocaleName(long ptr long long)
@ stdcall LCMapStringA(long long str long ptr long)
@ stdcall LCMapStringW(long long wstr long ptr long)
@@ -793,15 +793,15 @@
@ stdcall LockFileEx(long long long long long ptr)
@ stdcall LockResource(long)
@ stdcall MakeCriticalSectionGlobal(ptr)
-@ stdcall -i386 -norelay MapHInstLS()
-@ stdcall -i386 -norelay MapHInstLS_PN()
-@ stdcall -i386 -norelay MapHInstSL()
-@ stdcall -i386 -norelay MapHInstSL_PN()
-@ stdcall MapHModuleLS(long)
-@ stdcall MapHModuleSL(long)
-@ stdcall MapLS(ptr)
-@ stdcall MapSL(long)
-@ stdcall MapSLFix(long)
+@ stdcall -i386 -norelay MapHInstLS() krnl386.exe16.MapHInstLS
+@ stdcall -i386 -norelay MapHInstLS_PN() krnl386.exe16.MapHInstLS_PN
+@ stdcall -i386 -norelay MapHInstSL() krnl386.exe16.MapHInstSL
+@ stdcall -i386 -norelay MapHInstSL_PN() krnl386.exe16.MapHInstSL_PN
+@ stdcall -i386 MapHModuleLS(long) krnl386.exe16.MapHModuleLS
+@ stdcall -i386 MapHModuleSL(long) krnl386.exe16.MapHModuleSL
+@ stdcall -i386 MapLS(ptr) krnl386.exe16.MapLS
+@ stdcall -i386 MapSL(long) krnl386.exe16.MapSL
+@ stdcall -i386 MapSLFix(long) krnl386.exe16.MapSLFix
# @ stub MapUserPhysicalPages
# @ stub MapUserPhysicalPagesScatter
@ stdcall MapViewOfFile(long long long long long)
@@ -841,7 +841,7 @@
@ stdcall OpenSemaphoreA(long long str)
@ stdcall OpenSemaphoreW(long long wstr)
@ stdcall OpenThread(long long long)
-@ stdcall OpenVxDHandle(long)
+@ stdcall -i386 OpenVxDHandle(long)
@ stdcall OpenWaitableTimerA(long long str)
@ stdcall OpenWaitableTimerW(long long wstr)
@ stdcall OutputDebugStringA(str)
@@ -853,8 +853,8 @@
@ stdcall PrepareTape(ptr long long)
@ stub PrivCopyFileExW
@ stub PrivMoveFileIdentityW
-@ stdcall PrivateFreeLibrary(long)
-@ stdcall PrivateLoadLibrary(str)
+@ stdcall -i386 PrivateFreeLibrary(long) krnl386.exe16.PrivateFreeLibrary
+@ stdcall -i386 PrivateLoadLibrary(str) krnl386.exe16.PrivateLoadLibrary
@ stdcall Process32First (ptr ptr)
@ stdcall Process32FirstW (ptr ptr)
@ stdcall Process32Next (ptr ptr)
@@ -862,7 +862,7 @@
@ stdcall ProcessIdToSessionId(long ptr)
@ stdcall PulseEvent(long)
@ stdcall PurgeComm(long long)
-@ stdcall -i386 -register QT_Thunk()
+@ stdcall -i386 -register QT_Thunk() krnl386.exe16.QT_Thunk
@ stdcall QueryActCtxW(long ptr ptr long ptr long ptr)
@ stdcall QueryDepthSList(ptr) ntdll.RtlQueryDepthSList
@ stdcall QueryDosDeviceA(str ptr long)
@@ -934,26 +934,26 @@
@ stdcall -arch=x86_64 RtlUnwindEx(long long ptr long ptr) ntdll.RtlUnwindEx
@ stdcall -arch=x86_64 RtlVirtualUnwind(long long long ptr ptr ptr ptr ptr) ntdll.RtlVirtualUnwind
@ stdcall RtlZeroMemory(ptr long) ntdll.RtlZeroMemory
-@ stdcall -i386 -norelay SMapLS()
-@ stdcall -i386 -norelay SMapLS_IP_EBP_12()
-@ stdcall -i386 -norelay SMapLS_IP_EBP_16()
-@ stdcall -i386 -norelay SMapLS_IP_EBP_20()
-@ stdcall -i386 -norelay SMapLS_IP_EBP_24()
-@ stdcall -i386 -norelay SMapLS_IP_EBP_28()
-@ stdcall -i386 -norelay SMapLS_IP_EBP_32()
-@ stdcall -i386 -norelay SMapLS_IP_EBP_36()
-@ stdcall -i386 -norelay SMapLS_IP_EBP_40()
-@ stdcall -i386 -norelay SMapLS_IP_EBP_8()
-@ stdcall -i386 -norelay SUnMapLS()
-@ stdcall -i386 -norelay SUnMapLS_IP_EBP_12()
-@ stdcall -i386 -norelay SUnMapLS_IP_EBP_16()
-@ stdcall -i386 -norelay SUnMapLS_IP_EBP_20()
-@ stdcall -i386 -norelay SUnMapLS_IP_EBP_24()
-@ stdcall -i386 -norelay SUnMapLS_IP_EBP_28()
-@ stdcall -i386 -norelay SUnMapLS_IP_EBP_32()
-@ stdcall -i386 -norelay SUnMapLS_IP_EBP_36()
-@ stdcall -i386 -norelay SUnMapLS_IP_EBP_40()
-@ stdcall -i386 -norelay SUnMapLS_IP_EBP_8()
+@ stdcall -i386 -norelay SMapLS() krnl386.exe16.SMapLS
+@ stdcall -i386 -norelay SMapLS_IP_EBP_12() krnl386.exe16.SMapLS_IP_EBP_12
+@ stdcall -i386 -norelay SMapLS_IP_EBP_16() krnl386.exe16.SMapLS_IP_EBP_16
+@ stdcall -i386 -norelay SMapLS_IP_EBP_20() krnl386.exe16.SMapLS_IP_EBP_20
+@ stdcall -i386 -norelay SMapLS_IP_EBP_24() krnl386.exe16.SMapLS_IP_EBP_24
+@ stdcall -i386 -norelay SMapLS_IP_EBP_28() krnl386.exe16.SMapLS_IP_EBP_28
+@ stdcall -i386 -norelay SMapLS_IP_EBP_32() krnl386.exe16.SMapLS_IP_EBP_32
+@ stdcall -i386 -norelay SMapLS_IP_EBP_36() krnl386.exe16.SMapLS_IP_EBP_36
+@ stdcall -i386 -norelay SMapLS_IP_EBP_40() krnl386.exe16.SMapLS_IP_EBP_40
+@ stdcall -i386 -norelay SMapLS_IP_EBP_8() krnl386.exe16.SMapLS_IP_EBP_8
+@ stdcall -i386 -norelay SUnMapLS() krnl386.exe16.SUnMapLS
+@ stdcall -i386 -norelay SUnMapLS_IP_EBP_12() krnl386.exe16.SUnMapLS_IP_EBP_12
+@ stdcall -i386 -norelay SUnMapLS_IP_EBP_16() krnl386.exe16.SUnMapLS_IP_EBP_16
+@ stdcall -i386 -norelay SUnMapLS_IP_EBP_20() krnl386.exe16.SUnMapLS_IP_EBP_20
+@ stdcall -i386 -norelay SUnMapLS_IP_EBP_24() krnl386.exe16.SUnMapLS_IP_EBP_24
+@ stdcall -i386 -norelay SUnMapLS_IP_EBP_28() krnl386.exe16.SUnMapLS_IP_EBP_28
+@ stdcall -i386 -norelay SUnMapLS_IP_EBP_32() krnl386.exe16.SUnMapLS_IP_EBP_32
+@ stdcall -i386 -norelay SUnMapLS_IP_EBP_36() krnl386.exe16.SUnMapLS_IP_EBP_36
+@ stdcall -i386 -norelay SUnMapLS_IP_EBP_40() krnl386.exe16.SUnMapLS_IP_EBP_40
+@ stdcall -i386 -norelay SUnMapLS_IP_EBP_8() krnl386.exe16.SUnMapLS_IP_EBP_8
@ stdcall ScrollConsoleScreenBufferA(long ptr ptr ptr ptr)
@ stdcall ScrollConsoleScreenBufferW(long ptr ptr ptr ptr)
@ stdcall SearchPathA(str str str long ptr ptr)
@@ -1088,7 +1088,7 @@
@ stdcall TermsrvAppInstallMode()
@ stdcall Thread32First(long ptr)
@ stdcall Thread32Next(long ptr)
-@ stdcall -i386 ThunkConnect32(ptr str str str ptr ptr)
+@ stdcall -i386 ThunkConnect32(ptr str str str ptr ptr) krnl386.exe16.ThunkConnect32
@ stdcall TlsAlloc()
@ stub TlsAllocInternal
@ stdcall TlsFree(long)
@@ -1101,10 +1101,10 @@
@ stub TrimVirtualBuffer
@ stdcall TryEnterCriticalSection(ptr) ntdll.RtlTryEnterCriticalSection
@ stdcall TzSpecificLocalTimeToSystemTime(ptr ptr ptr)
-@ stdcall -i386 UTRegister(long str str str ptr ptr ptr)
-@ stdcall -i386 UTUnRegister(long)
-@ stdcall UnMapLS(long)
-@ stdcall -i386 -norelay UnMapSLFixArray(long long)
+@ stdcall -i386 UTRegister(long str str str ptr ptr ptr) krnl386.exe16.UTRegister
+@ stdcall -i386 UTUnRegister(long) krnl386.exe16.UTUnRegister
+@ stdcall -i386 UnMapLS(long) krnl386.exe16.UnMapLS
+@ stdcall -i386 -norelay UnMapSLFixArray(long long) krnl386.exe16.UnMapSLFixArray
@ stdcall UnhandledExceptionFilter(ptr)
@ stdcall UninitializeCriticalSection(ptr)
@ stdcall UnlockFile(long long long long long)
@@ -1210,47 +1210,47 @@
################################################################
# Wine extensions: Win16 functions that are needed by other dlls
#
-@ stdcall _lclose16(long)
-@ stdcall AllocCStoDSAlias16(long)
-@ stdcall AllocSelectorArray16(long)
-@ stdcall ConvertDialog32To16(ptr long ptr)
-@ stdcall FarGetOwner16(long)
-@ stdcall FarSetOwner16(long long)
-@ stdcall FindResource16(long str str)
-@ stdcall FreeResource16(long)
-@ stdcall FreeSelector16(long)
-@ stdcall GetCurrentPDB16()
-@ stdcall GetCurrentTask()
-@ stdcall GetDOSEnvironment16()
-@ stdcall GetExePtr(long)
-@ stdcall GetExpWinVer16(long)
-@ stdcall GetModuleHandle16(str)
-@ stdcall GetSelectorLimit16(long)
-@ stdcall GlobalDOSAlloc16(long)
-@ stdcall GlobalDOSFree16(long)
-@ stdcall GlobalFlags16(long)
-@ stdcall GlobalReAlloc16(long long long)
-@ stdcall InitTask16(ptr)
-@ stdcall IsBadReadPtr16(long long)
-@ stdcall IsTask16(long)
-@ stdcall LoadModule16(str long)
-@ stdcall LoadResource16(long long)
-@ stdcall LocalAlloc16(long long)
-@ stdcall LocalInit16(long long long)
-@ stdcall LocalLock16(long)
-@ stdcall LocalUnlock16(long)
-@ stdcall LocalReAlloc16(long long long)
-@ stdcall LocalFree16(long)
-@ stdcall LocalSize16(long)
-@ stdcall LocalCompact16(long)
-@ stdcall LocalCountFree16()
-@ stdcall LocalHeapSize16()
-@ stdcall LockResource16(long)
-@ stdcall SelectorAccessRights16(long long long)
-@ stdcall SetSelectorBase(long long)
-@ stdcall SetSelectorLimit16(long long)
-@ stdcall SizeofResource16(long long)
-@ stdcall WinExec16(str long)
+@ stdcall -i386 _lclose16(long) krnl386.exe16._lclose16
+@ stdcall -i386 AllocCStoDSAlias16(long) krnl386.exe16.AllocCStoDSAlias16
+@ stdcall -i386 AllocSelectorArray16(long) krnl386.exe16.AllocSelectorArray16
+@ stdcall -i386 ConvertDialog32To16(ptr long ptr) krnl386.exe16.ConvertDialog32To16
+@ stdcall -i386 FarGetOwner16(long) krnl386.exe16.FarGetOwner16
+@ stdcall -i386 FarSetOwner16(long long) krnl386.exe16.FarSetOwner16
+@ stdcall -i386 FindResource16(long str str) krnl386.exe16.FindResource16
+@ stdcall -i386 FreeResource16(long) krnl386.exe16.FreeResource16
+@ stdcall -i386 FreeSelector16(long) krnl386.exe16.FreeSelector16
+@ stdcall -i386 GetCurrentPDB16() krnl386.exe16.GetCurrentPDB16
+@ stdcall -i386 GetCurrentTask() krnl386.exe16.GetCurrentTask
+@ stdcall -i386 GetDOSEnvironment16() krnl386.exe16.GetDOSEnvironment16
+@ stdcall -i386 GetExePtr(long) krnl386.exe16.GetExePtr
+@ stdcall -i386 GetExpWinVer16(long) krnl386.exe16.GetExpWinVer16
+@ stdcall -i386 GetModuleHandle16(str) krnl386.exe16.GetModuleHandle16
+@ stdcall -i386 GetSelectorLimit16(long) krnl386.exe16.GetSelectorLimit16
+@ stdcall -i386 GlobalDOSAlloc16(long) krnl386.exe16.GlobalDOSAlloc16
+@ stdcall -i386 GlobalDOSFree16(long) krnl386.exe16.GlobalDOSFree16
+@ stdcall -i386 GlobalFlags16(long) krnl386.exe16.GlobalFlags16
+@ stdcall -i386 GlobalReAlloc16(long long long) krnl386.exe16.GlobalReAlloc16
+@ stdcall -i386 InitTask16(ptr) krnl386.exe16.InitTask16
+@ stdcall -i386 IsBadReadPtr16(long long) krnl386.exe16.IsBadReadPtr16
+@ stdcall -i386 IsTask16(long) krnl386.exe16.IsTask16
+@ stdcall -i386 LoadModule16(str long) krnl386.exe16.LoadModule16
+@ stdcall -i386 LoadResource16(long long) krnl386.exe16.LoadResource16
+@ stdcall -i386 LocalAlloc16(long long) krnl386.exe16.LocalAlloc16
+@ stdcall -i386 LocalInit16(long long long) krnl386.exe16.LocalInit16
+@ stdcall -i386 LocalLock16(long) krnl386.exe16.LocalLock16
+@ stdcall -i386 LocalUnlock16(long) krnl386.exe16.LocalUnlock16
+@ stdcall -i386 LocalReAlloc16(long long long) krnl386.exe16.LocalReAlloc16
+@ stdcall -i386 LocalFree16(long) krnl386.exe16.LocalFree16
+@ stdcall -i386 LocalSize16(long) krnl386.exe16.LocalSize16
+@ stdcall -i386 LocalCompact16(long) krnl386.exe16.LocalCompact16
+@ stdcall -i386 LocalCountFree16() krnl386.exe16.LocalCountFree16
+@ stdcall -i386 LocalHeapSize16() krnl386.exe16.LocalHeapSize16
+@ stdcall -i386 LockResource16(long) krnl386.exe16.LockResource16
+@ stdcall -i386 SelectorAccessRights16(long long long) krnl386.exe16.SelectorAccessRights16
+@ stdcall -i386 SetSelectorBase(long long) krnl386.exe16.SetSelectorBase
+@ stdcall -i386 SetSelectorLimit16(long long) krnl386.exe16.SetSelectorLimit16
+@ stdcall -i386 SizeofResource16(long long) krnl386.exe16.SizeofResource16
+@ stdcall -i386 WinExec16(str long) krnl386.exe16.WinExec16
################################################################
# Wine internal extensions
@@ -1258,11 +1258,11 @@
# All functions must be prefixed with '__wine_' (for internal functions)
# or 'wine_' (for user-visible functions) to avoid namespace conflicts.
-# 16-bit relays
+# 16-bit relays (for backwards compatibility)
@ cdecl -i386 __wine_dll_register_16(ptr str)
@ cdecl -i386 __wine_dll_unregister_16(ptr)
-@ varargs -i386 -private __wine_call_from_16_regs()
-@ cdecl -i386 __wine_emulate_instruction(ptr ptr)
+@ stub -i386 __wine_call_from_16_regs
+@ cdecl -i386 __wine_emulate_instruction(ptr ptr) krnl386.exe16.__wine_emulate_instruction
# Unix files
@ cdecl wine_get_unix_file_name(wstr)
diff --git a/dlls/kernel32/kernel_main.c b/dlls/kernel32/kernel_main.c
index f0b0443..28bb97d 100644
--- a/dlls/kernel32/kernel_main.c
+++ b/dlls/kernel32/kernel_main.c
@@ -33,10 +33,8 @@
#include "winternl.h"
#include "wownt32.h"
-#include "wine/winbase16.h"
#include "wine/library.h"
#include "kernel_private.h"
-#include "kernel16_private.h"
#include "console_private.h"
#include "wine/debug.h"
@@ -47,32 +45,6 @@
static ULONGLONG server_start_time;
/***********************************************************************
- * KERNEL thread initialisation routine
- */
-static void thread_attach(void)
-{
- /* allocate the 16-bit stack (FIXME: should be done lazily) */
- HGLOBAL16 hstack = WOWGlobalAlloc16( GMEM_FIXED, 0x10000 );
- kernel_get_thread_data()->stack_sel = GlobalHandleToSel16( hstack );
- NtCurrentTeb()->WOW32Reserved = (void *)MAKESEGPTR( kernel_get_thread_data()->stack_sel,
- 0x10000 - sizeof(STACK16FRAME) );
- memset( (char *)GlobalLock16(hstack) + 0x10000 - sizeof(STACK16FRAME), 0, sizeof(STACK16FRAME) );
-}
-
-
-/***********************************************************************
- * KERNEL thread finalisation routine
- */
-static void thread_detach(void)
-{
- /* free the 16-bit stack */
- WOWGlobalFree16( kernel_get_thread_data()->stack_sel );
- NtCurrentTeb()->WOW32Reserved = 0;
- if (NtCurrentTeb()->Tib.SubSystemTib) TASK_ExitTask();
-}
-
-
-/***********************************************************************
* set_entry_point
*/
static void set_entry_point( HMODULE module, const char *name, DWORD rva )
@@ -156,8 +128,6 @@
{
/* create the shared heap for broken win95 native dlls */
HeapCreate( HEAP_SHARED, 0, 0 );
- /* setup emulation of protected instructions from 32-bit code */
- RtlAddVectoredExceptionHandler( TRUE, INSTR_vectored_handler );
}
#endif
@@ -176,10 +146,7 @@
* TBD when not using wineserver handles for console handles
*/
- /* Create 16-bit task */
- LoadLibrary16( "krnl386.exe" );
- thread_attach();
- TASK_CreateMainTask();
+ LoadLibraryA( "krnl386.exe16" );
return TRUE;
}
@@ -191,13 +158,8 @@
switch(reason)
{
case DLL_PROCESS_ATTACH:
+ DisableThreadLibraryCalls( hinst );
return process_attach( hinst );
- case DLL_THREAD_ATTACH:
- thread_attach();
- break;
- case DLL_THREAD_DETACH:
- thread_detach();
- break;
case DLL_PROCESS_DETACH:
WritePrivateProfileSectionW( NULL, NULL, NULL );
break;
diff --git a/dlls/kernel32/kernel_private.h b/dlls/kernel32/kernel_private.h
index df753d7..4b295e7 100644
--- a/dlls/kernel32/kernel_private.h
+++ b/dlls/kernel32/kernel_private.h
@@ -85,11 +85,6 @@
extern BOOL NLS_IsUnicodeOnlyLcid(LCID);
-/* vxd.c */
-typedef BOOL (WINAPI *DeviceIoProc)(DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPOVERLAPPED);
-extern DeviceIoProc VXD_get_proc( HANDLE handle );
-extern HANDLE VXD_Open( LPCWSTR filename, DWORD access, LPSECURITY_ATTRIBUTES sa );
-
/* environ.c */
extern void ENV_CopyStartupInformation(void);
diff --git a/dlls/kernel32/module.c b/dlls/kernel32/module.c
index 76e1b0f..aaa5551 100644
--- a/dlls/kernel32/module.c
+++ b/dlls/kernel32/module.c
@@ -1065,3 +1065,28 @@
RaiseException( EXCEPTION_WINE_STUB, EH_NONCONTINUABLE, 2, args );
return NULL;
}
+
+
+#ifdef __i386__
+
+/***********************************************************************
+ * __wine_dll_register_16 (KERNEL32.@)
+ *
+ * No longer used.
+ */
+void __wine_dll_register_16( const IMAGE_DOS_HEADER *header, const char *file_name )
+{
+ ERR( "loading old style 16-bit dll %s no longer supported\n", file_name );
+}
+
+
+/***********************************************************************
+ * __wine_dll_unregister_16 (KERNEL32.@)
+ *
+ * No longer used.
+ */
+void __wine_dll_unregister_16( const IMAGE_DOS_HEADER *header )
+{
+}
+
+#endif
diff --git a/dlls/krnl386.exe16/Makefile.in b/dlls/krnl386.exe16/Makefile.in
new file mode 100644
index 0000000..e055628
--- /dev/null
+++ b/dlls/krnl386.exe16/Makefile.in
@@ -0,0 +1,42 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR = @srcdir@
+VPATH = @srcdir@
+MODULE = krnl386.exe16
+IMPORTS = kernel32 ntdll
+EXTRADLLFLAGS = -Wb,--subsystem,win16,--dll-name,kernel
+EXTRARCFLAGS = -O res16
+
+C_SRCS = \
+ atom.c \
+ dosmem.c \
+ error.c \
+ file.c \
+ global.c \
+ instr.c \
+ kernel.c \
+ local.c \
+ ne_module.c \
+ ne_segment.c \
+ registry.c \
+ relay.c \
+ resource.c \
+ selector.c \
+ snoop.c \
+ syslevel.c \
+ task.c \
+ thunk.c \
+ utthunk.c \
+ vxd.c \
+ wowthunk.c
+
+RC_SRCS = version.rc
+
+EXTRA_OBJS = relay16asm.o
+
+@MAKE_DLL_RULES@
+
+relay16asm.o: $(WINEBUILD)
+ $(WINEBUILD) $(WINEBUILDFLAGS) -o $@ --relay16
+
+@DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/kernel32/atom16.c b/dlls/krnl386.exe16/atom.c
similarity index 100%
rename from dlls/kernel32/atom16.c
rename to dlls/krnl386.exe16/atom.c
diff --git a/dlls/kernel32/dosmem.c b/dlls/krnl386.exe16/dosmem.c
similarity index 100%
rename from dlls/kernel32/dosmem.c
rename to dlls/krnl386.exe16/dosmem.c
diff --git a/dlls/kernel32/error16.c b/dlls/krnl386.exe16/error.c
similarity index 100%
rename from dlls/kernel32/error16.c
rename to dlls/krnl386.exe16/error.c
diff --git a/dlls/kernel32/file16.c b/dlls/krnl386.exe16/file.c
similarity index 100%
rename from dlls/kernel32/file16.c
rename to dlls/krnl386.exe16/file.c
diff --git a/dlls/kernel32/global16.c b/dlls/krnl386.exe16/global.c
similarity index 100%
rename from dlls/kernel32/global16.c
rename to dlls/krnl386.exe16/global.c
diff --git a/dlls/kernel32/instr.c b/dlls/krnl386.exe16/instr.c
similarity index 99%
rename from dlls/kernel32/instr.c
rename to dlls/krnl386.exe16/instr.c
index c3aea2d..8fe4e99 100644
--- a/dlls/kernel32/instr.c
+++ b/dlls/krnl386.exe16/instr.c
@@ -23,8 +23,6 @@
#include "config.h"
#include "wine/port.h"
-#ifdef __i386__
-
#include <stdarg.h>
#include "windef.h"
@@ -922,5 +920,3 @@
FIXME("(DosProc=%p): stub\n", DosProc);
return NULL;
}
-
-#endif /* __i386__ */
diff --git a/dlls/kernel32/kernel16.c b/dlls/krnl386.exe16/kernel.c
similarity index 93%
rename from dlls/kernel32/kernel16.c
rename to dlls/krnl386.exe16/kernel.c
index fabe2d8..b6fbbcb 100644
--- a/dlls/kernel32/kernel16.c
+++ b/dlls/krnl386.exe16/kernel.c
@@ -36,6 +36,53 @@
static DWORD process_dword;
+/***********************************************************************
+ * KERNEL thread initialisation routine
+ */
+static void thread_attach(void)
+{
+ /* allocate the 16-bit stack (FIXME: should be done lazily) */
+ HGLOBAL16 hstack = WOWGlobalAlloc16( GMEM_FIXED, 0x10000 );
+ kernel_get_thread_data()->stack_sel = GlobalHandleToSel16( hstack );
+ NtCurrentTeb()->WOW32Reserved = (void *)MAKESEGPTR( kernel_get_thread_data()->stack_sel,
+ 0x10000 - sizeof(STACK16FRAME) );
+ memset( (char *)GlobalLock16(hstack) + 0x10000 - sizeof(STACK16FRAME), 0, sizeof(STACK16FRAME) );
+}
+
+
+/***********************************************************************
+ * KERNEL thread finalisation routine
+ */
+static void thread_detach(void)
+{
+ /* free the 16-bit stack */
+ WOWGlobalFree16( kernel_get_thread_data()->stack_sel );
+ NtCurrentTeb()->WOW32Reserved = 0;
+ if (NtCurrentTeb()->Tib.SubSystemTib) TASK_ExitTask();
+}
+
+
+/**************************************************************************
+ * DllMain
+ */
+BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
+{
+ switch(reason)
+ {
+ case DLL_PROCESS_ATTACH:
+ LoadLibrary16( "krnl386.exe" );
+ /* fall through */
+ case DLL_THREAD_ATTACH:
+ thread_attach();
+ break;
+ case DLL_THREAD_DETACH:
+ thread_detach();
+ break;
+ }
+ return TRUE;
+}
+
+
/**************************************************************************
* DllEntryPoint (KERNEL.669)
*/
@@ -48,6 +95,9 @@
if (done) return TRUE;
done = 1;
+ /* setup emulation of protected instructions from 32-bit code */
+ if (GetVersion() & 0x80000000) RtlAddVectoredExceptionHandler( TRUE, INSTR_vectored_handler );
+
/* Initialize 16-bit thunking entry points */
if (!WOWTHUNK_Init()) return FALSE;
@@ -68,6 +118,7 @@
/* Initialize KERNEL.THHOOK */
TASK_InstallTHHook(MapSL((SEGPTR)GetProcAddress16( inst, (LPCSTR)332 )));
+ TASK_CreateMainTask();
/* Initialize the real-mode selector entry points */
#define SET_ENTRY_POINT( num, addr ) \
diff --git a/dlls/kernel32/kernel16_private.h b/dlls/krnl386.exe16/kernel16_private.h
similarity index 99%
rename from dlls/kernel32/kernel16_private.h
rename to dlls/krnl386.exe16/kernel16_private.h
index 0509471..4c739a5 100644
--- a/dlls/kernel32/kernel16_private.h
+++ b/dlls/krnl386.exe16/kernel16_private.h
@@ -290,7 +290,6 @@
return (struct kernel_thread_data *)NtCurrentTeb()->SystemReserved1;
}
-#ifdef __i386__
#define DEFINE_REGS_ENTRYPOINT( name, args ) \
__ASM_GLOBAL_FUNC( name, \
".byte 0x68\n\t" /* pushl $__regs_func */ \
@@ -298,6 +297,5 @@
".byte 0x6a," #args "\n\t" /* pushl $args */ \
"call " __ASM_NAME("__wine_call_from_32_regs") "\n\t" \
"ret $(4*" #args ")" ) /* fake ret to make copy protections happy */
-#endif
#endif /* __WINE_KERNEL16_PRIVATE_H */
diff --git a/dlls/kernel32/krnl386.exe.spec b/dlls/krnl386.exe16/krnl386.exe16.spec
similarity index 71%
rename from dlls/kernel32/krnl386.exe.spec
rename to dlls/krnl386.exe16/krnl386.exe16.spec
index 60560c5..8e08ff5 100644
--- a/dlls/kernel32/krnl386.exe.spec
+++ b/dlls/krnl386.exe16/krnl386.exe16.spec
@@ -527,3 +527,207 @@
# Win95 krnl386.exe also exports ordinals 802-864,
# however, those seem to be only callback stubs that are
# never called directly by other modules ...
+
+################################################################
+# 32-bit version of the various 16-bit functions exported by kernel32
+#
+@ stdcall -arch=win32 -register VxDCall0(long) VxDCall
+@ stdcall -arch=win32 -register VxDCall1(long) VxDCall
+@ stdcall -arch=win32 -register VxDCall2(long) VxDCall
+@ stdcall -arch=win32 -register VxDCall3(long) VxDCall
+@ stdcall -arch=win32 -register VxDCall4(long) VxDCall
+@ stdcall -arch=win32 -register VxDCall5(long) VxDCall
+@ stdcall -arch=win32 -register VxDCall6(long) VxDCall
+@ stdcall -arch=win32 -register VxDCall7(long) VxDCall
+@ stdcall -arch=win32 -register VxDCall8(long) VxDCall
+@ stdcall -arch=win32 k32CharToOemA(str ptr)
+@ stdcall -arch=win32 k32CharToOemBuffA(str ptr long)
+@ stdcall -arch=win32 k32OemToCharA(ptr ptr)
+@ stdcall -arch=win32 k32OemToCharBuffA(ptr ptr long)
+@ stdcall -arch=win32 k32LoadStringA(long long ptr long)
+@ varargs -arch=win32 k32wsprintfA(str str)
+@ stdcall -arch=win32 k32wvsprintfA(ptr str ptr)
+@ stdcall -arch=win32 -register CommonUnimpStub()
+@ stdcall -arch=win32 GetProcessDword16(long long)
+@ stdcall -arch=win32 DosFileHandleToWin32Handle(long)
+@ stdcall -arch=win32 Win32HandleToDosFileHandle(long)
+@ stdcall -arch=win32 DisposeLZ32Handle(long)
+@ stdcall -arch=win32 GlobalAlloc16(long long)
+@ stdcall -arch=win32 GlobalLock16(long)
+@ stdcall -arch=win32 GlobalUnlock16(long)
+@ stdcall -arch=win32 GlobalFix16(long)
+@ stdcall -arch=win32 GlobalUnfix16(long)
+@ stdcall -arch=win32 GlobalWire16(long)
+@ stdcall -arch=win32 GlobalUnWire16(long)
+@ stdcall -arch=win32 GlobalFree16(long)
+@ stdcall -arch=win32 GlobalSize16(long)
+@ stdcall -arch=win32 HouseCleanLogicallyDeadHandles()
+@ stdcall -arch=win32 GetWin16DOSEnv()
+@ stdcall -arch=win32 LoadLibrary16(str)
+@ stdcall -arch=win32 FreeLibrary16(long)
+@ stdcall -arch=win32 GetProcAddress16(long str) WIN32_GetProcAddress16
+@ stdcall -arch=win32 -register AllocMappedBuffer()
+@ stdcall -arch=win32 -register FreeMappedBuffer()
+@ stdcall -arch=win32 -register OT_32ThkLSF()
+@ stdcall -arch=win32 ThunkInitLSF(long str long str str)
+@ stdcall -arch=win32 -register LogApiThkLSF(str)
+@ stdcall -arch=win32 ThunkInitLS(long str long str str)
+@ stdcall -arch=win32 -register LogApiThkSL(str)
+@ stdcall -arch=win32 -register Common32ThkLS()
+@ stdcall -arch=win32 ThunkInitSL(long str long str str)
+@ stdcall -arch=win32 -register LogCBThkSL(str)
+@ stdcall -arch=win32 ReleaseThunkLock(ptr)
+@ stdcall -arch=win32 RestoreThunkLock(long)
+@ stdcall -arch=win32 -register W32S_BackTo32()
+@ stdcall -arch=win32 GetThunkBuff()
+@ stdcall -arch=win32 GetThunkStuff(str str)
+@ stdcall -arch=win32 K32WOWCallback16(long long)
+@ stdcall -arch=win32 K32WOWCallback16Ex(ptr long long ptr ptr)
+@ stdcall -arch=win32 K32WOWGetVDMPointer(long long long)
+@ stdcall -arch=win32 K32WOWHandle32(long long)
+@ stdcall -arch=win32 K32WOWHandle16(long long)
+@ stdcall -arch=win32 K32WOWGlobalAlloc16(long long)
+@ stdcall -arch=win32 K32WOWGlobalLock16(long)
+@ stdcall -arch=win32 K32WOWGlobalUnlock16(long)
+@ stdcall -arch=win32 K32WOWGlobalFree16(long)
+@ stdcall -arch=win32 K32WOWGlobalAllocLock16(long long ptr)
+@ stdcall -arch=win32 K32WOWGlobalUnlockFree16(long)
+@ stdcall -arch=win32 K32WOWGlobalLockSize16(long ptr)
+@ stdcall -arch=win32 K32WOWYield16()
+@ stdcall -arch=win32 K32WOWDirectedYield16(long)
+@ stdcall -arch=win32 K32WOWGetVDMPointerFix(long long long)
+@ stdcall -arch=win32 K32WOWGetVDMPointerUnfix(long)
+@ stdcall -arch=win32 K32WOWGetDescriptor(long long)
+@ stdcall -arch=win32 _KERNEL32_86(ptr)
+@ stdcall -arch=win32 SSOnBigStack()
+@ varargs -arch=win32 SSCall(long long ptr)
+@ stdcall -arch=win32 -register FT_PrologPrime()
+@ stdcall -arch=win32 -register QT_ThunkPrime()
+@ stdcall -arch=win32 PK16FNF(ptr)
+@ stdcall -arch=win32 GetPK16SysVar()
+@ stdcall -arch=win32 GetpWin16Lock(ptr)
+@ stdcall -arch=win32 _CheckNotSysLevel(ptr)
+@ stdcall -arch=win32 _ConfirmSysLevel(ptr)
+@ stdcall -arch=win32 _ConfirmWin16Lock()
+@ stdcall -arch=win32 _EnterSysLevel(ptr)
+@ stdcall -arch=win32 _LeaveSysLevel(ptr)
+@ stdcall -arch=win32 _KERNEL32_99(long)
+@ stdcall -arch=win32 _KERNEL32_100(long long long)
+
+@ stdcall -arch=win32 AllocSLCallback(ptr ptr)
+@ stdcall -arch=win32 -norelay FT_Exit0()
+@ stdcall -arch=win32 -norelay FT_Exit12()
+@ stdcall -arch=win32 -norelay FT_Exit16()
+@ stdcall -arch=win32 -norelay FT_Exit20()
+@ stdcall -arch=win32 -norelay FT_Exit24()
+@ stdcall -arch=win32 -norelay FT_Exit28()
+@ stdcall -arch=win32 -norelay FT_Exit32()
+@ stdcall -arch=win32 -norelay FT_Exit36()
+@ stdcall -arch=win32 -norelay FT_Exit40()
+@ stdcall -arch=win32 -norelay FT_Exit44()
+@ stdcall -arch=win32 -norelay FT_Exit48()
+@ stdcall -arch=win32 -norelay FT_Exit4()
+@ stdcall -arch=win32 -norelay FT_Exit52()
+@ stdcall -arch=win32 -norelay FT_Exit56()
+@ stdcall -arch=win32 -norelay FT_Exit8()
+@ stdcall -arch=win32 -register FT_Prolog()
+@ stdcall -arch=win32 -register FT_Thunk()
+@ stdcall -arch=win32 FreeSLCallback(long)
+@ stdcall -arch=win32 Get16DLLAddress(long str)
+@ stdcall -arch=win32 -register K32Thk1632Epilog()
+@ stdcall -arch=win32 -register K32Thk1632Prolog()
+@ stdcall -arch=win32 -norelay MapHInstLS()
+@ stdcall -arch=win32 -norelay MapHInstLS_PN()
+@ stdcall -arch=win32 -norelay MapHInstSL()
+@ stdcall -arch=win32 -norelay MapHInstSL_PN()
+@ stdcall -arch=win32 MapHModuleLS(long)
+@ stdcall -arch=win32 MapHModuleSL(long)
+@ stdcall -arch=win32 MapLS(ptr)
+@ stdcall -arch=win32 MapSL(long)
+@ stdcall -arch=win32 MapSLFix(long)
+@ stdcall -arch=win32 PrivateFreeLibrary(long)
+@ stdcall -arch=win32 PrivateLoadLibrary(str)
+@ stdcall -arch=win32 -register QT_Thunk()
+@ stdcall -arch=win32 -norelay SMapLS()
+@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_12()
+@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_16()
+@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_20()
+@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_24()
+@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_28()
+@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_32()
+@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_36()
+@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_40()
+@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_8()
+@ stdcall -arch=win32 -norelay SUnMapLS()
+@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_12()
+@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_16()
+@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_20()
+@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_24()
+@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_28()
+@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_32()
+@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_36()
+@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_40()
+@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_8()
+@ stdcall -arch=win32 ThunkConnect32(ptr str str str ptr ptr)
+@ stdcall -arch=win32 UTRegister(long str str str ptr ptr ptr)
+@ stdcall -arch=win32 UTUnRegister(long)
+@ stdcall -arch=win32 UnMapLS(long)
+@ stdcall -arch=win32 -norelay UnMapSLFixArray(long long)
+@ stdcall -arch=win32 _lclose16(long)
+
+################################################################
+# 16-bit symbols not available from kernel32 but used by other 16-bit dlls
+#
+@ stdcall -arch=win32 AllocCStoDSAlias16(long)
+@ stdcall -arch=win32 AllocSelectorArray16(long)
+@ stdcall -arch=win32 ConvertDialog32To16(ptr long ptr)
+@ stdcall -arch=win32 FarGetOwner16(long)
+@ stdcall -arch=win32 FarSetOwner16(long long)
+@ stdcall -arch=win32 FindResource16(long str str)
+@ stdcall -arch=win32 FreeResource16(long)
+@ stdcall -arch=win32 FreeSelector16(long)
+@ stdcall -arch=win32 GetCurrentPDB16()
+@ stdcall -arch=win32 GetCurrentTask()
+@ stdcall -arch=win32 GetDOSEnvironment16()
+@ stdcall -arch=win32 GetExePtr(long)
+@ stdcall -arch=win32 GetExpWinVer16(long)
+@ stdcall -arch=win32 GetModuleHandle16(str)
+@ stdcall -arch=win32 GetSelectorLimit16(long)
+@ stdcall -arch=win32 GlobalDOSAlloc16(long)
+@ stdcall -arch=win32 GlobalDOSFree16(long)
+@ stdcall -arch=win32 GlobalFlags16(long)
+@ stdcall -arch=win32 GlobalReAlloc16(long long long)
+@ stdcall -arch=win32 InitTask16(ptr)
+@ stdcall -arch=win32 IsBadReadPtr16(long long)
+@ stdcall -arch=win32 IsTask16(long)
+@ stdcall -arch=win32 LoadModule16(str long)
+@ stdcall -arch=win32 LoadResource16(long long)
+@ stdcall -arch=win32 LocalAlloc16(long long)
+@ stdcall -arch=win32 LocalInit16(long long long)
+@ stdcall -arch=win32 LocalLock16(long)
+@ stdcall -arch=win32 LocalUnlock16(long)
+@ stdcall -arch=win32 LocalReAlloc16(long long long)
+@ stdcall -arch=win32 LocalFree16(long)
+@ stdcall -arch=win32 LocalSize16(long)
+@ stdcall -arch=win32 LocalCompact16(long)
+@ stdcall -arch=win32 LocalCountFree16()
+@ stdcall -arch=win32 LocalHeapSize16()
+@ stdcall -arch=win32 LockResource16(long)
+@ stdcall -arch=win32 SelectorAccessRights16(long long long)
+@ stdcall -arch=win32 SetSelectorBase(long long)
+@ stdcall -arch=win32 SetSelectorLimit16(long long)
+@ stdcall -arch=win32 SizeofResource16(long long)
+@ stdcall -arch=win32 WinExec16(str long)
+
+################################################################
+# Wine internal extensions
+#
+# All functions must be prefixed with '__wine_' (for internal functions)
+# or 'wine_' (for user-visible functions) to avoid namespace conflicts.
+
+# 16-bit relays
+@ cdecl -arch=win32 -private __wine_emulate_instruction(ptr ptr)
+
+# VxDs
+@ cdecl -arch=win32 -private __wine_vxd_open(wstr long ptr)
+@ cdecl -arch=win32 -private __wine_vxd_get_proc(long)
diff --git a/dlls/kernel32/local16.c b/dlls/krnl386.exe16/local.c
similarity index 100%
rename from dlls/kernel32/local16.c
rename to dlls/krnl386.exe16/local.c
diff --git a/dlls/kernel32/ne_module.c b/dlls/krnl386.exe16/ne_module.c
similarity index 99%
rename from dlls/kernel32/ne_module.c
rename to dlls/krnl386.exe16/ne_module.c
index 51e2eb5..82e4576 100644
--- a/dlls/kernel32/ne_module.c
+++ b/dlls/krnl386.exe16/ne_module.c
@@ -90,7 +90,6 @@
/* patch all the flat cs references of the code segment if necessary */
static inline void patch_code_segment( NE_MODULE *pModule )
{
-#ifdef __i386__
int i;
CALLFROM16 *call;
SEGTABLEENTRY *pSeg = NE_SEG_TABLE( pModule );
@@ -112,7 +111,6 @@
if (TRACE_ON(relay)) /* patch relay functions to all point to relay_call_from_16 */
for (i = 0; call[i].pushl == 0x68; i++) call[i].relay = relay_call_from_16;
-#endif
}
@@ -2168,8 +2166,6 @@
context->Eax = (DWORD)MapHModuleSL( context->Eax );
}
-#ifdef __i386__
-
/***************************************************************************
* MapHInstLS (KERNEL32.@)
*/
@@ -2205,5 +2201,3 @@
"pushl %eax\n\t"
"call " __ASM_NAME("MapHModuleSL") __ASM_STDCALL(4) "\n"
"1:\tret" )
-
-#endif /* __i386__ */
diff --git a/dlls/kernel32/ne_segment.c b/dlls/krnl386.exe16/ne_segment.c
similarity index 100%
rename from dlls/kernel32/ne_segment.c
rename to dlls/krnl386.exe16/ne_segment.c
diff --git a/dlls/kernel32/registry16.c b/dlls/krnl386.exe16/registry.c
similarity index 100%
rename from dlls/kernel32/registry16.c
rename to dlls/krnl386.exe16/registry.c
diff --git a/dlls/kernel32/relay16.c b/dlls/krnl386.exe16/relay.c
similarity index 100%
rename from dlls/kernel32/relay16.c
rename to dlls/krnl386.exe16/relay.c
diff --git a/dlls/kernel32/resource16.c b/dlls/krnl386.exe16/resource.c
similarity index 100%
rename from dlls/kernel32/resource16.c
rename to dlls/krnl386.exe16/resource.c
diff --git a/dlls/kernel32/selector.c b/dlls/krnl386.exe16/selector.c
similarity index 99%
rename from dlls/kernel32/selector.c
rename to dlls/krnl386.exe16/selector.c
index 2142720..3d04d6e 100644
--- a/dlls/kernel32/selector.c
+++ b/dlls/krnl386.exe16/selector.c
@@ -89,11 +89,9 @@
wine_ldt_get_entry( sel, &entry );
if (wine_ldt_is_empty( &entry )) return sel; /* error */
-#ifdef __i386__
/* Check if we are freeing current %fs selector */
if (!((wine_get_fs() ^ sel) & ~3))
WARN("Freeing %%fs selector (%04x), not good.\n", wine_get_fs() );
-#endif /* __i386__ */
wine_ldt_free_entries( sel, 1 );
return 0;
}
@@ -523,7 +521,6 @@
return MapSL(sptr);
}
-#ifdef __i386__
/***********************************************************************
* UnMapSLFixArray (KERNEL32.@)
@@ -618,5 +615,3 @@
DEFINE_SUnMapLS(32)
DEFINE_SUnMapLS(36)
DEFINE_SUnMapLS(40)
-
-#endif /* __i386__ */
diff --git a/dlls/kernel32/snoop16.c b/dlls/krnl386.exe16/snoop.c
similarity index 96%
rename from dlls/kernel32/snoop16.c
rename to dlls/krnl386.exe16/snoop.c
index c6c3032..42fa8d1 100644
--- a/dlls/kernel32/snoop16.c
+++ b/dlls/krnl386.exe16/snoop.c
@@ -36,8 +36,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(snoop);
-#ifdef __i386__
-
#include "pshpack1.h"
static void WINAPI SNOOP16_Entry(FARPROC proc, LPBYTE args, CONTEXT86 *context);
@@ -343,13 +341,3 @@
HIWORD(ret->origreturn),LOWORD(ret->origreturn));
ret->origreturn = NULL; /* mark as empty */
}
-#else /* !__i386__ */
-void SNOOP16_RegisterDLL(HMODULE16 hModule,LPCSTR name) {
- if (!TRACE_ON(snoop)) return;
- FIXME("snooping works only on i386 for now.\n");
-}
-
-FARPROC16 SNOOP16_GetProcAddress16(HMODULE16 hmod,DWORD ordinal,FARPROC16 origfun) {
- return origfun;
-}
-#endif /* !__i386__ */
diff --git a/dlls/kernel32/syslevel.c b/dlls/krnl386.exe16/syslevel.c
similarity index 99%
rename from dlls/kernel32/syslevel.c
rename to dlls/krnl386.exe16/syslevel.c
index b37ec7b..88b7ea9 100644
--- a/dlls/kernel32/syslevel.c
+++ b/dlls/krnl386.exe16/syslevel.c
@@ -108,9 +108,7 @@
TRACE("(%p, level %d): thread %x count after %d\n",
lock, lock->level, GetCurrentThreadId(), thread_data->sys_count[lock->level] );
-#ifdef __i386__
if (lock == &Win16Mutex) CallTo16_TebSelector = wine_get_fs();
-#endif
}
/************************************************************************
diff --git a/dlls/kernel32/task.c b/dlls/krnl386.exe16/task.c
similarity index 100%
rename from dlls/kernel32/task.c
rename to dlls/krnl386.exe16/task.c
diff --git a/dlls/kernel32/thunk.c b/dlls/krnl386.exe16/thunk.c
similarity index 99%
rename from dlls/kernel32/thunk.c
rename to dlls/krnl386.exe16/thunk.c
index fc9c3b4..2f8562c 100644
--- a/dlls/kernel32/thunk.c
+++ b/dlls/krnl386.exe16/thunk.c
@@ -31,8 +31,6 @@
# include <unistd.h>
#endif
-#ifdef __i386__
-
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
@@ -2538,5 +2536,3 @@
DPRINTF(") calling address was 0x%08x\n",calladdr);
return 0;
}
-
-#endif /* __i386__ */
diff --git a/dlls/kernel32/utthunk.c b/dlls/krnl386.exe16/utthunk.c
similarity index 99%
rename from dlls/kernel32/utthunk.c
rename to dlls/krnl386.exe16/utthunk.c
index d3333a2..a1889fa 100644
--- a/dlls/kernel32/utthunk.c
+++ b/dlls/krnl386.exe16/utthunk.c
@@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#ifdef __i386__
-
#include <stdarg.h>
#include "wine/winbase16.h"
@@ -325,5 +323,3 @@
FIXME("(%08x, %08x, %08x, %08x): stub\n", x1, x2, x3, x4 );
return 0;
}
-
-#endif /* __i386__ */
diff --git a/dlls/kernel32/version16.rc b/dlls/krnl386.exe16/version.rc
similarity index 100%
rename from dlls/kernel32/version16.rc
rename to dlls/krnl386.exe16/version.rc
diff --git a/dlls/kernel32/vxd.c b/dlls/krnl386.exe16/vxd.c
similarity index 96%
rename from dlls/kernel32/vxd.c
rename to dlls/krnl386.exe16/vxd.c
index d7b05a8..a420805 100644
--- a/dlls/kernel32/vxd.c
+++ b/dlls/krnl386.exe16/vxd.c
@@ -134,7 +134,7 @@
}
/* retrieve the DeviceIoControl function for a Vxd given a file handle */
-DeviceIoProc VXD_get_proc( HANDLE handle )
+DeviceIoProc __wine_vxd_get_proc( HANDLE handle )
{
DeviceIoProc ret = NULL;
int status, i;
@@ -171,7 +171,7 @@
/* load a VxD and return a file handle to it */
-HANDLE VXD_Open( LPCWSTR filenameW, DWORD access, SECURITY_ATTRIBUTES *sa )
+HANDLE __wine_vxd_open( LPCWSTR filenameW, DWORD access, SECURITY_ATTRIBUTES *sa )
{
static const WCHAR dotVxDW[] = {'.','v','x','d',0};
int i;
@@ -179,12 +179,6 @@
HMODULE module;
WCHAR *p, name[16];
- if (!(GetVersion() & 0x80000000)) /* there are no VxDs on NT */
- {
- SetLastError( ERROR_FILE_NOT_FOUND );
- return 0;
- }
-
/* normalize the filename */
if (strlenW( filenameW ) >= sizeof(name)/sizeof(WCHAR) - 4 ||
diff --git a/dlls/kernel32/wowthunk.c b/dlls/krnl386.exe16/wowthunk.c
similarity index 98%
rename from dlls/kernel32/wowthunk.c
rename to dlls/krnl386.exe16/wowthunk.c
index 5dbb4ee..6b24373 100644
--- a/dlls/kernel32/wowthunk.c
+++ b/dlls/krnl386.exe16/wowthunk.c
@@ -37,9 +37,6 @@
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(thunk);
-
-#ifdef __i386__
-
WINE_DECLARE_DEBUG_CHANNEL(relay);
WINE_DECLARE_DEBUG_CHANNEL(snoop);
@@ -301,16 +298,6 @@
}
-#else /* __i386__ */
-
-BOOL WOWTHUNK_Init(void)
-{
- return TRUE;
-}
-
-#endif /* __i386__ */
-
-
/*
* 32-bit WOW routines (in WOW32, but actually forwarded to KERNEL32)
*/
@@ -535,7 +522,6 @@
BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
DWORD cbArgs, LPVOID pArgs, LPDWORD pdwRetCode )
{
-#ifdef __i386__
/*
* Arguments must be prepared in the correct order by the caller
* (both for PASCAL and CDECL calling convention), so we simply
@@ -674,9 +660,6 @@
SYSLEVEL_CheckNotLevel( 2 );
}
}
-#else
- assert(0); /* cannot call to 16-bit on non-Intel architectures */
-#endif /* __i386__ */
return TRUE; /* success */
}