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/urlmon/urlmon_urlmon.h
|
||||
dlls/urlmon/urlmon_urlmon_p.c
|
||||
dlls/wprocs.dll16
|
||||
include/activaut.h
|
||||
include/activdbg.h
|
||||
include/activscp.h
|
||||
|
|
|
@ -18,7 +18,7 @@ DOCSUBDIRS = $(DLLSUBDIRS)
|
|||
# 16-bit dlls
|
||||
|
||||
WIN16_FILES = \
|
||||
wprocs.dll16
|
||||
|
||||
|
||||
@MAKE_RULES@
|
||||
|
||||
|
@ -28,9 +28,6 @@ all: $(BUILDSUBDIRS) @WIN16_FILES@
|
|||
|
||||
# Placeholders for 16-bit libraries
|
||||
|
||||
wprocs.dll16:
|
||||
echo "winedos.dll" >$@
|
||||
|
||||
# Import libraries
|
||||
|
||||
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" \
|
||||
"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 */
|
||||
|
|
|
@ -523,11 +523,29 @@
|
|||
703 stub CallProc32WFix
|
||||
704 pascal -register SSConfirmSmallStack() SSConfirmSmallStack
|
||||
|
||||
|
||||
# Win95 krnl386.exe also exports ordinals 802-864,
|
||||
# however, those seem to be only callback stubs that are
|
||||
# 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
|
||||
#
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,8 +5,6 @@ VPATH = @srcdir@
|
|||
MODULE = winedos.dll
|
||||
IMPORTS = user32 kernel32 ntdll
|
||||
|
||||
SPEC_SRCS16 = wprocs.spec
|
||||
|
||||
C_SRCS = \
|
||||
devices.c \
|
||||
dma.c \
|
||||
|
@ -36,7 +34,6 @@ C_SRCS = \
|
|||
soundblaster.c \
|
||||
timer.c \
|
||||
vga.c \
|
||||
vxd.c \
|
||||
xms.c
|
||||
|
||||
@MAKE_DLL_RULES@
|
||||
|
|
|
@ -39,8 +39,8 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(int);
|
||||
|
||||
/* base WPROCS.DLL ordinal number for VxDs */
|
||||
#define VXD_BASE 400
|
||||
/* base KERNEL ordinal number for VxDs */
|
||||
#define VXD_BASE 900
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -432,8 +432,7 @@ static void do_int2f_16( CONTEXT86 *context )
|
|||
|
||||
case 0x84: /* Get device API entry point */
|
||||
{
|
||||
HMODULE16 mod = GetModuleHandle16("wprocs");
|
||||
if (mod < 32) mod = LoadLibrary16( "wprocs" );
|
||||
HMODULE16 mod = GetModuleHandle16("kernel");
|
||||
addr = (DWORD)GetProcAddress16( mod, (LPCSTR)(VXD_BASE + BX_reg(context)) );
|
||||
if (!addr) /* not supported */
|
||||
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