+2008-04-15 Jonathan Chambers <joncham@gmail.com>
+ * include/private/gcconfig.h: Backport GC7 code to support Win64.
+ * win32_threads.c: Backport GC7 code to support Win64.
+
2008-02-07 Massimiliano Mantione <massi@ximian.com>
* include/gc.h: (GCEventType): Added start-stop the world events.
* pthread_stop_world.c: (GC_stop_world and GC_start_world): hooked
# else
# if (defined(_MSDOS) || defined(_MSC_VER)) && (_M_IX86 >= 300) \
|| defined(_WIN32) && !defined(__CYGWIN32__) && !defined(__CYGWIN__)
-# define I386
-# define MSWIN32 /* or Win32s */
-# define mach_type_known
-# endif
-# if defined(_MSC_VER) && defined(_M_IA64)
-# define IA64
-# define MSWIN32 /* Really win64, but we don't treat 64-bit */
- /* variants as a differnt platform. */
+# if defined(__LP64__) || defined(_WIN64)\r
+# define X86_64\r
+# else\r
+# define I386\r
+# endif\r
+# define MSWIN32 /* or Win64 */\r
+# define mach_type_known\r
+# endif\r
+# if defined(_MSC_VER) && defined(_M_IA64)\r
+# define IA64\r
+# define MSWIN32 /* Really win64, but we don't treat 64-bit */\r
+ /* variants as a differnt platform. */\r
# endif
# endif
# if defined(__DJGPP__)
# define PUSH4(r1,r2,r3,r4) PUSH2(r1,r2), PUSH2(r3,r4)
# if defined(I386)
PUSH4(Edi,Esi,Ebx,Edx), PUSH2(Ecx,Eax), PUSH1(Ebp);
- sp = (ptr_t)context.Esp;
+ sp = (ptr_t)context.Esp;\r
+# elif defined(X86_64)\r
+ PUSH4(Rax,Rcx,Rdx,Rbx); PUSH2(Rbp, Rsi); PUSH1(Rdi);\r
+ PUSH4(R8, R9, R10, R11); PUSH4(R12, R13, R14, R15);\r
+ sp = (ptr_t)context.Rsp;
# elif defined(ARM32)
PUSH4(R0,R1,R2,R3),PUSH4(R4,R5,R6,R7),PUSH4(R8,R9,R10,R11),PUSH1(R12);
sp = (ptr_t)context.Sp;