diff -ru bdwgc.orig/include/private/gcconfig.h bdwgc/include/private/gcconfig.h
--- bdwgc.orig/include/private/gcconfig.h
+++ bdwgc/include/private/gcconfig.h
@@ -102,6 +102,27 @@ EXTERN_C_BEGIN
# define LINUX
#endif
+# if defined(__midipix__)
+# define MIDIPIX
+# include <fcntl.h>
+# include <sys/select.h>
+
+# include <psxtypes/psxtypes.h>
+# include <pemagine/pemagine.h>
+# include <ntapi/nt_thread.h>
+
+int __gc_data_start_mark__[1];
+int __gc_data_end_mark__[1];
+#endif
+
+# ifdef MIDIPIX
+# define OS_TYPE "MIDIPIX"
+# define DATASTART ((ptr_t)__gc_data_start_mark__)
+# define DATAEND ((ptr_t)__gc_data_end_mark__)
+# define STACKBOTTOM (ptr_t)(((nt_tib *)pe_get_teb_address())->stack_base)
+# define USE_MMAP_ANON
+# endif
+
/* And one for NetBSD: */
#if defined(__NetBSD__)
# define NETBSD
@@ -505,7 +526,7 @@ EXTERN_C_BEGIN
# define mach_type_known
#elif (defined(__i386__) || defined(i386) || defined(__X86__)) \
&& (defined(ANY_BSD) || defined(DARWIN) || defined(EMBOX) \
- || defined(LINUX) || defined(QNX))
+ || defined(LINUX) || defined(QNX) || defined(MIDIPIX))
# define I386
# define mach_type_known
#elif (defined(__ia64) || defined(__ia64__)) && defined(LINUX)
@@ -558,7 +579,7 @@ EXTERN_C_BEGIN
#elif (defined(__x86_64) || defined(__x86_64__) || defined(__amd64__) \
|| defined(__X86_64__)) \
&& (defined(ANY_BSD) || defined(COSMO) || defined(DARWIN) \
- || defined(LINUX) || defined(QNX))
+ || defined(LINUX) || defined(QNX) || defined(MIDIPIX))
# define X86_64
# define mach_type_known
#endif
@@ -1540,6 +1561,13 @@ extern char *_STACKTOP;
# define DATAEND ((ptr_t)(&_end))
# define GETPAGESIZE() 4096
# endif
+# ifdef MIDIPIX
+# define OS_TYPE "MIDIPIX"
+# define DATASTART ((ptr_t)__gc_data_start_mark__)
+# define DATAEND ((ptr_t)__gc_data_end_mark__)
+# define STACKBOTTOM (ptr_t)(((nt_tib *)pe_get_teb_address())->stack_base)
+# define USE_MMAP_ANON
+# endif
# ifdef DARWIN
# define DARWIN_DONT_PARSE_STACK 1
# define STACKBOTTOM ((ptr_t)0xc0000000)
@@ -2604,7 +2632,7 @@ EXTERN_C_BEGIN
#if defined(AIX) || defined(ANY_BSD) || defined(BSD) || defined(COSMO) \
|| defined(DARWIN) || defined(DGUX) || defined(HAIKU) || defined(HPUX) \
|| defined(HURD) || defined(IRIX5) || defined(LINUX) || defined(OSF1) \
- || defined(QNX) || defined(SVR4)
+ || defined(QNX) || defined(SVR4) || defined(MIDIPIX)
# define UNIX_LIKE /* Basic Unix-like system calls work. */
#endif