pkgsrc/lang/guile/patches/patch-ae
2008-02-19 23:33:35 +00:00

65 lines
2 KiB
Text

$NetBSD: patch-ae,v 1.14 2008/02/19 23:33:35 gdt Exp $
support for NetBSD/alpha, NetBSD/sparc64, and NetBSD/x86_64
--- libguile/gc_os_dep.c.orig 2008-02-16 13:50:24.000000000 -0500
+++ libguile/gc_os_dep.c
@@ -132,7 +132,7 @@ typedef int GC_bool;
# define NETBSD
# define mach_type_known
# endif
-# if defined(__NetBSD__) && defined(__sparc__)
+# if defined(__NetBSD__) && (defined(__sparc__) || defined(__sparc_v9__))
# define SPARC
# define NETBSD
# define mach_type_known
@@ -304,6 +304,11 @@ typedef int GC_bool;
# define NETBSD
# define mach_type_known
# endif
+# if defined(__NetBSD__) && defined(__x86_64__)
+# define X86_64
+# define NETBSD
+# define mach_type_known
+# endif
# if defined(bsdi) && defined(i386)
# define I386
# define BSDI
@@ -444,12 +449,12 @@ scm_get_stack_base ()
/*
* For each architecture and OS, the following need to be defined:
*
- * CPP_WORD_SZ is a simple integer constant representing the word size.
+ * CPP_WORDSZ is a simple integer constant representing the word size.
* in bits. We assume byte addressibility, where a byte has 8 bits.
- * We also assume CPP_WORD_SZ is either 32 or 64.
+ * We also assume CPP_WORDSZ is either 32 or 64.
* (We care about the length of pointers, not hardware
* bus widths. Thus a 64 bit processor with a C compiler that uses
- * 32 bit pointers should use CPP_WORD_SZ of 32, not 64. Default is 32.)
+ * 32 bit pointers should use CPP_WORDSZ of 32, not 64. Default is 32.)
*
* MACH_TYPE is a string representation of the machine type.
* OS_TYPE is analogous for the OS.
@@ -994,6 +999,21 @@ scm_get_stack_base ()
# endif
# endif
+# ifdef X86_64
+# define MACH_TYPE "X86_64"
+# define ALIGNMENT 8
+# define ALIGN_DOUBLE
+# define CPP_WORDSZ 64
+# ifdef NETBSD
+# define OS_TYPE "NETBSD"
+# endif
+# if defined(NETBSD)
+# define HEURISTIC2
+ extern char etext;
+# define DATASTART ((ptr_t)(&etext))
+# endif
+# endif
+
# ifdef NS32K
# define MACH_TYPE "NS32K"
# define ALIGNMENT 4