$NetBSD: patch-ae,v 1.13 2007/07/20 00:09:22 gdt Exp $ support for NetBSD/alpha, NetBSD/sparc64, and NetBSD/x86_64 --- libguile/gc_os_dep.c.orig 2007-05-09 16:22:03.000000000 -0400 +++ libguile/gc_os_dep.c @@ -110,6 +110,11 @@ typedef int GC_bool; # define OPENBSD # define mach_type_known # endif +# if defined(__NetBSD__) && defined(__alpha__) +# define ALPHA +# define NETBSD +# define mach_type_known +# endif # if defined(__NetBSD__) && defined(__powerpc__) # define POWERPC # define NETBSD @@ -127,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 @@ -246,7 +251,7 @@ typedef int GC_bool; # endif # if defined(__alpha) || defined(__alpha__) # define ALPHA -# if !defined(LINUX) +# if !defined(LINUX) && !defined(NETBSD) # define OSF1 /* a.k.a Digital Unix */ # endif # define mach_type_known @@ -299,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 @@ -439,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. @@ -989,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