Add support for running on the Windows 10 Kernel (resend)
André Hentschel
nerv at dawncrow.de
Fri Apr 1 12:08:15 CDT 2016
---
dlls/kernel32/heap.c | 4 ++--
dlls/ntdll/cdrom.c | 28 ++++++++++++++--------------
dlls/ntdll/directory.c | 6 +++---
dlls/ntdll/file.c | 4 ++--
dlls/ntdll/nt.c | 2 +-
dlls/ntdll/signal_arm.c | 2 +-
dlls/ntdll/signal_arm64.c | 4 ++++
dlls/ntdll/signal_i386.c | 4 ++--
dlls/ntdll/signal_x86_64.c | 4 ++--
dlls/ws2_32/socket.c | 2 +-
libs/wine/ldt.c | 8 ++++----
libs/wine/mmap.c | 4 ++--
loader/main.c | 2 +-
server/fd.c | 2 +-
server/ptrace.c | 4 ++--
tools/winebuild/main.c | 2 +-
16 files changed, 43 insertions(+), 39 deletions(-)
diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c
index eeed785..12e31e2 100644
--- a/dlls/kernel32/heap.c
+++ b/dlls/kernel32/heap.c
@@ -1150,7 +1150,7 @@ BOOL WINAPI GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpmemex )
SYSTEM_INFO si;
#ifdef linux
FILE *f;
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
DWORDLONG total;
#ifdef __APPLE__
unsigned int val;
@@ -1229,7 +1229,7 @@ BOOL WINAPI GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpmemex )
}
fclose( f );
}
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
total = 0;
lpmemex->ullAvailPhys = 0;
diff --git a/dlls/ntdll/cdrom.c b/dlls/ntdll/cdrom.c
index ee36045..ad03759 100644
--- a/dlls/ntdll/cdrom.c
+++ b/dlls/ntdll/cdrom.c
@@ -473,7 +473,7 @@ static NTSTATUS CDROM_SyncCache(int dev, int fd)
cdrom_cache[dev].toc_good = 1;
return STATUS_SUCCESS;
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
int i, tsz;
struct ioc_toc_header hdr;
@@ -783,7 +783,7 @@ static NTSTATUS CDROM_ResetAudio(int fd)
{
#if defined(linux)
return CDROM_GetStatusCode(ioctl(fd, CDROMRESET));
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
return CDROM_GetStatusCode(ioctl(fd, CDIOCRESET, NULL));
#else
FIXME("not supported on this O/S\n");
@@ -800,7 +800,7 @@ static NTSTATUS CDROM_SetTray(int fd, BOOL doEject)
{
#if defined(linux)
return CDROM_GetStatusCode(ioctl(fd, doEject ? CDROMEJECT : CDROMCLOSETRAY));
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
return CDROM_GetStatusCode((ioctl(fd, CDIOCALLOW, NULL)) ||
(ioctl(fd, doEject ? CDIOCEJECT : CDIOCCLOSE, NULL)) ||
(ioctl(fd, CDIOCPREVENT, NULL)));
@@ -822,7 +822,7 @@ static NTSTATUS CDROM_ControlEjection(int fd, const PREVENT_MEDIA_REMOVAL* rmv)
{
#if defined(linux)
return CDROM_GetStatusCode(ioctl(fd, CDROM_LOCKDOOR, rmv->PreventMediaRemoval));
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
return CDROM_GetStatusCode(ioctl(fd, (rmv->PreventMediaRemoval) ? CDIOCPREVENT : CDIOCALLOW, NULL));
#else
FIXME("not supported on this O/S\n");
@@ -977,7 +977,7 @@ static NTSTATUS CDROM_ReadQChannel(int dev, int fd, const CDROM_SUB_Q_DATA_FORMA
end:
ret = CDROM_GetStatusCode(io);
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
SUB_Q_HEADER* hdr = (SUB_Q_HEADER*)data;
int io;
struct ioc_read_subchannel read_sc;
@@ -1134,7 +1134,7 @@ static NTSTATUS CDROM_Verify(int dev, int fd)
return STATUS_SUCCESS;
else
return STATUS_NO_MEDIA_IN_DEVICE;
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
int ret;
ret = ioctl(fd, CDIOCSTART, NULL);
if(ret == 0)
@@ -1187,7 +1187,7 @@ static NTSTATUS CDROM_PlayAudioMSF(int fd, const CDROM_PLAY_AUDIO_MSF* audio_msf
msf.cdmsf_min1, msf.cdmsf_sec1, msf.cdmsf_frame1);
end:
ret = CDROM_GetStatusCode(io);
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
struct ioc_play_msf msf;
int io;
@@ -1232,7 +1232,7 @@ static NTSTATUS CDROM_SeekAudioMSF(int dev, int fd, const CDROM_SEEK_AUDIO_MSF*
#if defined(linux)
struct cdrom_msf0 msf;
struct cdrom_subchnl sc;
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
struct ioc_play_msf msf;
struct ioc_read_subchannel read_sc;
struct cd_sub_channel_info sc;
@@ -1285,7 +1285,7 @@ static NTSTATUS CDROM_SeekAudioMSF(int dev, int fd, const CDROM_SEEK_AUDIO_MSF*
return CDROM_GetStatusCode(ioctl(fd, CDROMSEEK, &msf));
}
return STATUS_SUCCESS;
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
read_sc.address_format = CD_MSF_FORMAT;
read_sc.track = 0;
read_sc.data_len = sizeof(sc);
@@ -1326,7 +1326,7 @@ static NTSTATUS CDROM_PauseAudio(int fd)
{
#if defined(linux)
return CDROM_GetStatusCode(ioctl(fd, CDROMPAUSE));
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
return CDROM_GetStatusCode(ioctl(fd, CDIOCPAUSE, NULL));
#else
FIXME(": not supported on this O/S\n");
@@ -1343,7 +1343,7 @@ static NTSTATUS CDROM_ResumeAudio(int fd)
{
#if defined(linux)
return CDROM_GetStatusCode(ioctl(fd, CDROMRESUME));
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
return CDROM_GetStatusCode(ioctl(fd, CDIOCRESUME, NULL));
#else
FIXME("not supported on this O/S\n");
@@ -1360,7 +1360,7 @@ static NTSTATUS CDROM_StopAudio(int fd)
{
#if defined(linux)
return CDROM_GetStatusCode(ioctl(fd, CDROMSTOP));
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
return CDROM_GetStatusCode(ioctl(fd, CDIOCSTOP, NULL));
#else
FIXME("not supported on this O/S\n");
@@ -1388,7 +1388,7 @@ static NTSTATUS CDROM_GetVolume(int fd, VOLUME_CONTROL* vc)
vc->PortVolume[3] = volc.channel3;
}
return CDROM_GetStatusCode(io);
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
struct ioc_vol volc;
int io;
@@ -1423,7 +1423,7 @@ static NTSTATUS CDROM_SetVolume(int fd, const VOLUME_CONTROL* vc)
volc.channel3 = vc->PortVolume[3];
return CDROM_GetStatusCode(ioctl(fd, CDROMVOLCTRL, &volc));
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__DragonFly__)
struct ioc_vol volc;
volc.vol[0] = vc->PortVolume[0];
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index 93fe594..626a75b 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -336,7 +336,7 @@ static char *get_default_com_device( int num )
ret = RtlAllocateHeap( GetProcessHeap(), 0, sizeof("/dev/ttyS256") );
if (!ret) return NULL;
sprintf( ret, "/dev/ttyS%d", num - 1 );
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__)
ret = RtlAllocateHeap( GetProcessHeap(), 0, sizeof("/dev/cuau256") );
if (!ret) return NULL;
sprintf( ret, "/dev/cuau%d", num - 1 );
@@ -608,7 +608,7 @@ static char *parse_mount_entries( FILE *f, dev_t dev, ino_t ino )
}
#endif
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__DragonFly__)
#include <fstab.h>
static char *parse_mount_entries( FILE *f, dev_t dev, ino_t ino )
{
@@ -1054,7 +1054,7 @@ static int get_dir_case_sensitivity_attr( const char *dir )
*/
static BOOLEAN get_dir_case_sensitivity_stat( const char *dir )
{
-#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__)
struct statfs stfs;
if (statfs( dir, &stfs ) == -1) return FALSE;
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 46fea51..351c756 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -2968,7 +2968,7 @@ NTSTATUS WINAPI NtQueryAttributesFile( const OBJECT_ATTRIBUTES *attr, FILE_BASIC
}
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
/* helper for FILE_GetDeviceInfo to hide some platform differences in fstatfs */
static inline void get_device_info_fstatfs( FILE_FS_DEVICE_INFORMATION *info, const char *fstypename,
unsigned int flags )
@@ -3089,7 +3089,7 @@ static NTSTATUS get_device_info( int fd, FILE_FS_DEVICE_INFORMATION *info )
info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
break;
}
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
struct statfs stfs;
if (fstatfs( fd, &stfs ) < 0)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 47d7b31..6cfdc5f 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -2621,7 +2621,7 @@ NTSTATUS WINAPI NtPowerInformation(
cpu_power[i].CurrentIdleState = 0; /* FIXME */
}
}
-#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__DragonFly__)
{
int num;
size_t valSize = sizeof(num);
diff --git a/dlls/ntdll/signal_arm.c b/dlls/ntdll/signal_arm.c
index cb5f67d..c3bd6fd 100644
--- a/dlls/ntdll/signal_arm.c
+++ b/dlls/ntdll/signal_arm.c
@@ -98,7 +98,7 @@ typedef struct ucontext
# define ERROR_sig(context) REG_sig(error_code, context)
# define TRAP_sig(context) REG_sig(trap_no, context)
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__)
/* All Registers access - only for local access */
# define REGn_sig(reg_num, context) ((context)->uc_mcontext.__gregs[reg_num])
diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c
index 14c5260..32dfdc3 100644
--- a/dlls/ntdll/signal_arm64.c
+++ b/dlls/ntdll/signal_arm64.c
@@ -81,6 +81,10 @@ static pthread_key_t teb_key;
/* Exceptions */
# define FAULT_sig(context) REG_sig(fault_address, context)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__)
+
+#error Please define registers for those platforms
+
#endif /* linux */
static const size_t teb_size = 0x2000; /* we reserve two pages for the TEB */
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 59dca6c..d677fc8 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -260,7 +260,7 @@ typedef struct trapframe ucontext_t;
#define FPU_sig(context) NULL /* FIXME */
#define FPUX_sig(context) NULL /* FIXME */
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__DragonFly__)
#include <machine/trap.h>
@@ -485,7 +485,7 @@ extern void DECLSPEC_NORETURN __wine_restore_regs( const CONTEXT *context );
enum i386_trap_code
{
TRAP_x86_UNKNOWN = -1, /* Unknown fault (TRAP_sig not defined) */
-#if defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
TRAP_x86_DIVIDE = T_DIVIDE, /* Division by zero exception */
TRAP_x86_TRCTRAP = T_TRCTRAP, /* Single-step exception */
TRAP_x86_NMI = T_NMI, /* NMI interrupt */
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index a79fd6e..2fc95af 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -172,7 +172,7 @@ static inline int arch_prctl( int func, void *ptr ) { return syscall( __NR_arch_
#define FPU_sig(context) ((XMM_SAVE_AREA32 *)((context)->uc_mcontext.fpregs))
-#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__)
#define RAX_sig(context) ((context)->uc_mcontext.mc_rax)
#define RBX_sig(context) ((context)->uc_mcontext.mc_rbx)
@@ -2837,7 +2837,7 @@ void signal_init_thread( TEB *teb )
#if defined __linux__
arch_prctl( ARCH_SET_GS, teb );
-#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
+#elif defined (__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__)
amd64_set_gsbase( teb );
#elif defined(__NetBSD__)
sysarch( X86_64_SET_GSBASE, &teb );
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index f62c9cd..a891a11 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -163,7 +163,7 @@
#define IP_UNICAST_IF 50
#endif
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__DragonFly__)
# define sipx_network sipx_addr.x_net
# define sipx_node sipx_addr.x_host.c_host
#endif /* __FreeBSD__ */
diff --git a/libs/wine/ldt.c b/libs/wine/ldt.c
index 0946407..29d1d2c 100644
--- a/libs/wine/ldt.c
+++ b/libs/wine/ldt.c
@@ -87,7 +87,7 @@ static inline int set_thread_area( struct modify_ldt_s *ptr )
#endif
#endif
-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__DragonFly__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__OpenBSD__) || defined(__DragonFly__)
#include <machine/segments.h>
#include <machine/sysarch.h>
#endif /* __NetBSD__ || __FreeBSD__ || __OpenBSD__ */
@@ -180,7 +180,7 @@ static int internal_set_entry( unsigned short sel, const LDT_ENTRY *entry )
if ((ret = modify_ldt(0x11, &ldt_info, sizeof(ldt_info))) < 0)
perror( "modify_ldt" );
}
-#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__DragonFly__)
+#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__OpenBSD__) || defined(__DragonFly__)
{
LDT_ENTRY entry_copy = *entry;
/* The kernel will only let us set LDTs with user priority level */
@@ -392,7 +392,7 @@ unsigned short wine_ldt_alloc_fs(void)
if (errno != ENOSYS) perror( "set_thread_area" );
}
else global_fs_sel = (ldt_info.entry_number << 3) | 3;
-#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__)
global_fs_sel = GSEL( GUFS_SEL, SEL_UPL );
#endif
}
@@ -420,7 +420,7 @@ void wine_ldt_init_fs( unsigned short sel, const LDT_ENTRY *entry )
ldt_info.entry_number = sel >> 3;
fill_modify_ldt_struct( &ldt_info, entry );
if ((ret = set_thread_area( &ldt_info ) < 0)) perror( "set_thread_area" );
-#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__DragonFly__)
i386_set_fsbase( wine_ldt_get_base( entry ));
#endif
}
diff --git a/libs/wine/mmap.c b/libs/wine/mmap.c
index 1a3ca59..02ab05f 100644
--- a/libs/wine/mmap.c
+++ b/libs/wine/mmap.c
@@ -205,7 +205,7 @@ void *wine_anon_mmap( void *start, size_t size, int prot, int flags )
if (!(flags & MAP_FIXED))
{
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__DragonFly__)
/* Even FreeBSD 5.3 does not properly support NULL here. */
if( start == NULL ) start = (void *)0x110000;
#endif
@@ -379,7 +379,7 @@ void mmap_init(void)
char *base = stack_ptr - ((unsigned int)stack_ptr & granularity_mask) - (granularity_mask + 1);
if (base > user_space_limit) reserve_area( user_space_limit, base );
base = stack_ptr - ((unsigned int)stack_ptr & granularity_mask) + (granularity_mask + 1);
-#if defined(linux) || defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__DragonFly__)
+#if defined(linux) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__DragonFly__)
/* Heuristic: assume the stack is near the end of the address */
/* space, this avoids a lot of futile allocation attempts */
end = (char *)(((unsigned long)base + 0x0fffffff) & 0xf0000000);
diff --git a/loader/main.c b/loader/main.c
index bb752b5..e8a3827 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -191,7 +191,7 @@ static int pre_exec(void)
return 1; /* we have a preloader on x86-64 */
}
-#elif (defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__DragonFly__))
+#elif (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__DragonFly__))
static int pre_exec(void)
{
diff --git a/server/fd.c b/server/fd.c
index 1fd1ce7..22fd694 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -933,7 +933,7 @@ static int is_device_removable( dev_t dev, int unix_fd )
return (stfs.f_type == 0x9660 || /* iso9660 */
stfs.f_type == 0x9fa1 || /* supermount */
stfs.f_type == 0x15013346); /* udf */
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__APPLE__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__DragonFly__) || defined(__APPLE__)
struct statfs stfs;
if (fstatfs( unix_fd, &stfs ) == -1) return 0;
diff --git a/server/ptrace.c b/server/ptrace.c
index cb436b6..5792f8f 100644
--- a/server/ptrace.c
+++ b/server/ptrace.c
@@ -204,7 +204,7 @@ static int waitpid_thread( struct thread *thread, int signal )
/* send a signal to a specific thread */
static inline int tkill( int tgid, int pid, int sig )
{
-#ifdef __linux__
+#if defined(__linux__) || defined(__WinNT_kernel__)
int ret = syscall( __NR_tgkill, tgid, pid, sig );
if (ret < 0 && errno == ENOSYS) ret = syscall( __NR_tkill, pid, sig );
return ret;
@@ -648,7 +648,7 @@ void set_thread_context( struct thread *thread, const context_t *context, unsign
}
#elif defined(__i386__) && defined(PTRACE_GETDBREGS) && defined(PTRACE_SETDBREGS) && \
- (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__))
+ (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__WinNT_kernel__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__))
#include <machine/reg.h>
diff --git a/tools/winebuild/main.c b/tools/winebuild/main.c
index 09ebb34..1bd6556 100644
--- a/tools/winebuild/main.c
+++ b/tools/winebuild/main.c
@@ -67,7 +67,7 @@ enum target_platform target_platform = PLATFORM_APPLE;
enum target_platform target_platform = PLATFORM_FREEBSD;
#elif defined(__sun)
enum target_platform target_platform = PLATFORM_SOLARIS;
-#elif defined(_WIN32)
+#elif defined(_WIN32) || defined(__WinNT_kernel__)
enum target_platform target_platform = PLATFORM_WINDOWS;
#else
enum target_platform target_platform = PLATFORM_UNSPECIFIED;
--
1.9.1
More information about the wine-patches
mailing list