winedos: Move 16-bit VxD support back into kernel.
This commit is contained in:
parent
475b7d226c
commit
e7715126eb
|
@ -118,7 +118,6 @@ dlls/sti/sti_wia.h
|
||||||
dlls/sti/sti_wia_p.c
|
dlls/sti/sti_wia_p.c
|
||||||
dlls/urlmon/urlmon_urlmon.h
|
dlls/urlmon/urlmon_urlmon.h
|
||||||
dlls/urlmon/urlmon_urlmon_p.c
|
dlls/urlmon/urlmon_urlmon_p.c
|
||||||
dlls/wprocs.dll16
|
|
||||||
include/activaut.h
|
include/activaut.h
|
||||||
include/activdbg.h
|
include/activdbg.h
|
||||||
include/activscp.h
|
include/activscp.h
|
||||||
|
|
|
@ -18,7 +18,7 @@ DOCSUBDIRS = $(DLLSUBDIRS)
|
||||||
# 16-bit dlls
|
# 16-bit dlls
|
||||||
|
|
||||||
WIN16_FILES = \
|
WIN16_FILES = \
|
||||||
wprocs.dll16
|
|
||||||
|
|
||||||
@MAKE_RULES@
|
@MAKE_RULES@
|
||||||
|
|
||||||
|
@ -28,9 +28,6 @@ all: $(BUILDSUBDIRS) @WIN16_FILES@
|
||||||
|
|
||||||
# Placeholders for 16-bit libraries
|
# Placeholders for 16-bit libraries
|
||||||
|
|
||||||
wprocs.dll16:
|
|
||||||
echo "winedos.dll" >$@
|
|
||||||
|
|
||||||
# Import libraries
|
# Import libraries
|
||||||
|
|
||||||
STATIC_IMPLIBEXT = $(IMPLIBEXT:def=def.a)
|
STATIC_IMPLIBEXT = $(IMPLIBEXT:def=def.a)
|
||||||
|
|
|
@ -298,4 +298,43 @@ static inline struct kernel_thread_data *kernel_get_thread_data(void)
|
||||||
"call " __ASM_NAME("__wine_call_from_32_regs") "\n\t" \
|
"call " __ASM_NAME("__wine_call_from_32_regs") "\n\t" \
|
||||||
"ret $(4*" #args ")" ) /* fake ret to make copy protections happy */
|
"ret $(4*" #args ")" ) /* fake ret to make copy protections happy */
|
||||||
|
|
||||||
|
#define AX_reg(context) ((WORD)(context)->Eax)
|
||||||
|
#define BX_reg(context) ((WORD)(context)->Ebx)
|
||||||
|
#define CX_reg(context) ((WORD)(context)->Ecx)
|
||||||
|
#define DX_reg(context) ((WORD)(context)->Edx)
|
||||||
|
#define SI_reg(context) ((WORD)(context)->Esi)
|
||||||
|
#define DI_reg(context) ((WORD)(context)->Edi)
|
||||||
|
|
||||||
|
#define AL_reg(context) ((BYTE)(context)->Eax)
|
||||||
|
#define AH_reg(context) ((BYTE)((context)->Eax >> 8))
|
||||||
|
#define BL_reg(context) ((BYTE)(context)->Ebx)
|
||||||
|
#define BH_reg(context) ((BYTE)((context)->Ebx >> 8))
|
||||||
|
#define CL_reg(context) ((BYTE)(context)->Ecx)
|
||||||
|
#define CH_reg(context) ((BYTE)((context)->Ecx >> 8))
|
||||||
|
#define DL_reg(context) ((BYTE)(context)->Edx)
|
||||||
|
#define DH_reg(context) ((BYTE)((context)->Edx >> 8))
|
||||||
|
|
||||||
|
#define SET_CFLAG(context) ((context)->EFlags |= 0x0001)
|
||||||
|
#define RESET_CFLAG(context) ((context)->EFlags &= ~0x0001)
|
||||||
|
#define SET_ZFLAG(context) ((context)->EFlags |= 0x0040)
|
||||||
|
#define RESET_ZFLAG(context) ((context)->EFlags &= ~0x0040)
|
||||||
|
#define ISV86(context) ((context)->EFlags & 0x00020000)
|
||||||
|
|
||||||
|
#define SET_AX(context,val) ((void)((context)->Eax = ((context)->Eax & ~0xffff) | (WORD)(val)))
|
||||||
|
#define SET_BX(context,val) ((void)((context)->Ebx = ((context)->Ebx & ~0xffff) | (WORD)(val)))
|
||||||
|
#define SET_CX(context,val) ((void)((context)->Ecx = ((context)->Ecx & ~0xffff) | (WORD)(val)))
|
||||||
|
#define SET_DX(context,val) ((void)((context)->Edx = ((context)->Edx & ~0xffff) | (WORD)(val)))
|
||||||
|
#define SET_SI(context,val) ((void)((context)->Esi = ((context)->Esi & ~0xffff) | (WORD)(val)))
|
||||||
|
#define SET_DI(context,val) ((void)((context)->Edi = ((context)->Edi & ~0xffff) | (WORD)(val)))
|
||||||
|
|
||||||
|
#define SET_AL(context,val) ((void)((context)->Eax = ((context)->Eax & ~0xff) | (BYTE)(val)))
|
||||||
|
#define SET_BL(context,val) ((void)((context)->Ebx = ((context)->Ebx & ~0xff) | (BYTE)(val)))
|
||||||
|
#define SET_CL(context,val) ((void)((context)->Ecx = ((context)->Ecx & ~0xff) | (BYTE)(val)))
|
||||||
|
#define SET_DL(context,val) ((void)((context)->Edx = ((context)->Edx & ~0xff) | (BYTE)(val)))
|
||||||
|
|
||||||
|
#define SET_AH(context,val) ((void)((context)->Eax = ((context)->Eax & ~0xff00) | (((BYTE)(val)) << 8)))
|
||||||
|
#define SET_BH(context,val) ((void)((context)->Ebx = ((context)->Ebx & ~0xff00) | (((BYTE)(val)) << 8)))
|
||||||
|
#define SET_CH(context,val) ((void)((context)->Ecx = ((context)->Ecx & ~0xff00) | (((BYTE)(val)) << 8)))
|
||||||
|
#define SET_DH(context,val) ((void)((context)->Edx = ((context)->Edx & ~0xff00) | (((BYTE)(val)) << 8)))
|
||||||
|
|
||||||
#endif /* __WINE_KERNEL16_PRIVATE_H */
|
#endif /* __WINE_KERNEL16_PRIVATE_H */
|
||||||
|
|
|
@ -523,11 +523,29 @@
|
||||||
703 stub CallProc32WFix
|
703 stub CallProc32WFix
|
||||||
704 pascal -register SSConfirmSmallStack() SSConfirmSmallStack
|
704 pascal -register SSConfirmSmallStack() SSConfirmSmallStack
|
||||||
|
|
||||||
|
|
||||||
# Win95 krnl386.exe also exports ordinals 802-864,
|
# Win95 krnl386.exe also exports ordinals 802-864,
|
||||||
# however, those seem to be only callback stubs that are
|
# however, those seem to be only callback stubs that are
|
||||||
# never called directly by other modules ...
|
# never called directly by other modules ...
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# VxD entry points
|
||||||
|
#
|
||||||
|
901 pascal -register __wine_vxd_vmm() __wine_vxd_vmm
|
||||||
|
905 pascal -register __wine_vxd_timer() __wine_vxd_timer
|
||||||
|
909 pascal -register __wine_vxd_reboot() __wine_vxd_reboot
|
||||||
|
910 pascal -register __wine_vxd_vdd() __wine_vxd_vdd
|
||||||
|
912 pascal -register __wine_vxd_vmd() __wine_vxd_vmd
|
||||||
|
914 pascal -register __wine_vxd_comm() __wine_vxd_comm
|
||||||
|
#915 pascal -register __wine_vxd_printer() __wine_vxd_printer
|
||||||
|
923 pascal -register __wine_vxd_shell() __wine_vxd_shell
|
||||||
|
933 pascal -register __wine_vxd_pagefile() __wine_vxd_pagefile
|
||||||
|
938 pascal -register __wine_vxd_apm() __wine_vxd_apm
|
||||||
|
939 pascal -register __wine_vxd_vxdloader() __wine_vxd_vxdloader
|
||||||
|
945 pascal -register __wine_vxd_win32s() __wine_vxd_win32s
|
||||||
|
951 pascal -register __wine_vxd_configmg() __wine_vxd_configmg
|
||||||
|
955 pascal -register __wine_vxd_enable() __wine_vxd_enable
|
||||||
|
1990 pascal -register __wine_vxd_timerapi() __wine_vxd_timerapi
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# 32-bit version of the various 16-bit functions exported by kernel32
|
# 32-bit version of the various 16-bit functions exported by kernel32
|
||||||
#
|
#
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,8 +5,6 @@ VPATH = @srcdir@
|
||||||
MODULE = winedos.dll
|
MODULE = winedos.dll
|
||||||
IMPORTS = user32 kernel32 ntdll
|
IMPORTS = user32 kernel32 ntdll
|
||||||
|
|
||||||
SPEC_SRCS16 = wprocs.spec
|
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
devices.c \
|
devices.c \
|
||||||
dma.c \
|
dma.c \
|
||||||
|
@ -36,7 +34,6 @@ C_SRCS = \
|
||||||
soundblaster.c \
|
soundblaster.c \
|
||||||
timer.c \
|
timer.c \
|
||||||
vga.c \
|
vga.c \
|
||||||
vxd.c \
|
|
||||||
xms.c
|
xms.c
|
||||||
|
|
||||||
@MAKE_DLL_RULES@
|
@MAKE_DLL_RULES@
|
||||||
|
|
|
@ -39,8 +39,8 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(int);
|
WINE_DEFAULT_DEBUG_CHANNEL(int);
|
||||||
|
|
||||||
/* base WPROCS.DLL ordinal number for VxDs */
|
/* base KERNEL ordinal number for VxDs */
|
||||||
#define VXD_BASE 400
|
#define VXD_BASE 900
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -432,8 +432,7 @@ static void do_int2f_16( CONTEXT86 *context )
|
||||||
|
|
||||||
case 0x84: /* Get device API entry point */
|
case 0x84: /* Get device API entry point */
|
||||||
{
|
{
|
||||||
HMODULE16 mod = GetModuleHandle16("wprocs");
|
HMODULE16 mod = GetModuleHandle16("kernel");
|
||||||
if (mod < 32) mod = LoadLibrary16( "wprocs" );
|
|
||||||
addr = (DWORD)GetProcAddress16( mod, (LPCSTR)(VXD_BASE + BX_reg(context)) );
|
addr = (DWORD)GetProcAddress16( mod, (LPCSTR)(VXD_BASE + BX_reg(context)) );
|
||||||
if (!addr) /* not supported */
|
if (!addr) /* not supported */
|
||||||
ERR("Accessing unknown VxD %04x - Expect a failure now.\n", BX_reg(context) );
|
ERR("Accessing unknown VxD %04x - Expect a failure now.\n", BX_reg(context) );
|
||||||
|
|
1682
dlls/winedos/vxd.c
1682
dlls/winedos/vxd.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue