[BACK]Return to gcconfig.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gc

Diff for /OpenXM_contrib/gc/Attic/gcconfig.h between version 1.1 and 1.1.1.3

version 1.1, 1999/11/27 10:58:32 version 1.1.1.3, 2000/12/01 14:48:26
Line 13 
Line 13 
  * modified is included with the above copyright notice.   * modified is included with the above copyright notice.
  */   */
   
 #ifndef CONFIG_H  #ifndef GCCONFIG_H
   
 # define CONFIG_H  # define GCCONFIG_H
   
 /* Machine dependent parameters.  Some tuning parameters can be found   */  /* Machine dependent parameters.  Some tuning parameters can be found   */
 /* near the top of gc_private.h.                                        */  /* near the top of gc_private.h.                                        */
Line 43 
Line 43 
 #    define OPENBSD  #    define OPENBSD
 #    define mach_type_known  #    define mach_type_known
 # endif  # endif
   # if defined(__OpenBSD__) && defined(__sparc__)
   #    define SPARC
   #    define OPENBSD
   #    define mach_type_known
   # endif
 # if defined(__NetBSD__) && defined(m68k)  # if defined(__NetBSD__) && defined(m68k)
 #    define M68K  #    define M68K
 #    define NETBSD  #    define NETBSD
 #    define mach_type_known  #    define mach_type_known
 # endif  # endif
   # if defined(__NetBSD__) && defined(arm32)
   #    define ARM32
   #    define NETBSD
   #    define mach_type_known
   # endif
 # if defined(vax)  # if defined(vax)
 #    define VAX  #    define VAX
 #    ifdef ultrix  #    ifdef ultrix
Line 59 
Line 69 
 # endif  # endif
 # if defined(mips) || defined(__mips)  # if defined(mips) || defined(__mips)
 #    define MIPS  #    define MIPS
 #    if defined(ultrix) || defined(__ultrix) || defined(__NetBSD__)  #    if !defined(LINUX)
 #       define ULTRIX  #      if defined(ultrix) || defined(__ultrix) || defined(__NetBSD__)
 #    else  #        define ULTRIX
 #       if defined(_SYSTYPE_SVR4) || defined(SYSTYPE_SVR4) || defined(__SYSTYPE_SVR4__)  #      else
 #         define IRIX5   /* or IRIX 6.X */  #        if defined(_SYSTYPE_SVR4) || defined(SYSTYPE_SVR4) \
 #       else              || defined(__SYSTYPE_SVR4__)
 #         define RISCOS  /* or IRIX 4.X */  #          define IRIX5   /* or IRIX 6.X */
 #       endif  #        else
 #    endif  #          define RISCOS  /* or IRIX 4.X */
   #        endif
   #      endif
   #    endif /* !LINUX */
 #    define mach_type_known  #    define mach_type_known
 # endif  # endif
 # if defined(sequent) && defined(i386)  # if defined(sequent) && defined(i386)
Line 100 
Line 113 
 #     endif  #     endif
 #   define mach_type_known  #   define mach_type_known
 # endif  # endif
 # if defined(sparc) && defined(unix) && !defined(sun) && !defined(linux)  # if defined(sparc) && defined(unix) && !defined(sun) && !defined(linux) \
        && !defined(__OpenBSD__)
 #   define SPARC  #   define SPARC
 #   define DRSNX  #   define DRSNX
 #   define mach_type_known  #   define mach_type_known
Line 124 
Line 138 
 #   define SYSV  #   define SYSV
 #   define mach_type_known  #   define mach_type_known
 # endif  # endif
 # if defined(_PA_RISC1_0) || defined(_PA_RISC1_1) \  # if defined(_PA_RISC1_0) || defined(_PA_RISC1_1) || defined(_PA_RISC2_0) \
      || defined(hppa) || defined(__hppa__)       || defined(hppa) || defined(__hppa__)
 #   define HP_PA  #   define HP_PA
   #   ifndef LINUX
   #     define HPUX
   #   endif
 #   define mach_type_known  #   define mach_type_known
 # endif  # endif
 # if defined(LINUX) && defined(i386)  # if defined(LINUX) && (defined(i386) || defined(__i386__))
 #    define I386  #    define I386
 #    define mach_type_known  #    define mach_type_known
 # endif  # endif
   # if defined(LINUX) && (defined(__ia64__) || defined(__ia64))
   #    define IA64
   #    define mach_type_known
   # endif
 # if defined(LINUX) && defined(powerpc)  # if defined(LINUX) && defined(powerpc)
 #    define POWERPC  #    define POWERPC
 #    define mach_type_known  #    define mach_type_known
Line 141 
Line 162 
 #    define M68K  #    define M68K
 #    define mach_type_known  #    define mach_type_known
 # endif  # endif
 # if defined(linux) && defined(sparc)  # if defined(LINUX) && (defined(sparc) || defined(__sparc__))
 #    define SPARC  #    define SPARC
 #    define LINUX  
 #    define mach_type_known  #    define mach_type_known
 # endif  # endif
   # if defined(LINUX) && defined(arm)
   #    define ARM32
   #    define mach_type_known
   # endif
 # if defined(__alpha) || defined(__alpha__)  # if defined(__alpha) || defined(__alpha__)
 #   define ALPHA  #   define ALPHA
 #   if !defined(LINUX)  #   if !defined(LINUX)
Line 153 
Line 177 
 #   endif  #   endif
 #   define mach_type_known  #   define mach_type_known
 # endif  # endif
 # if defined(_AMIGA)  # if defined(_AMIGA) && !defined(AMIGA)
 #   define M68K  
 #   define AMIGA  #   define AMIGA
   # endif
   # ifdef AMIGA
   #   define M68K
 #   define mach_type_known  #   define mach_type_known
 # endif  # endif
 # if defined(THINK_C) || defined(__MWERKS__) && !defined(__powerc)  # if defined(THINK_C) || defined(__MWERKS__) && !defined(__powerc)
Line 168 
Line 194 
 #   define MACOS  #   define MACOS
 #   define mach_type_known  #   define mach_type_known
 # endif  # endif
   # if defined(macosx)
   #    define MACOSX
   #    define POWERPC
   #    define mach_type_known
   # endif
 # if defined(NeXT) && defined(mc68000)  # if defined(NeXT) && defined(mc68000)
 #   define M68K  #   define M68K
 #   define NEXT  #   define NEXT
Line 231 
Line 262 
 #   define CYGWIN32  #   define CYGWIN32
 #   define mach_type_known  #   define mach_type_known
 # endif  # endif
   # if defined(__MINGW32__)
   #   define I386
   #   define MSWIN32
   #   define mach_type_known
   # endif
 # if defined(__BORLANDC__)  # if defined(__BORLANDC__)
 #   define I386  #   define I386
 #   define MSWIN32  #   define MSWIN32
Line 241 
Line 277 
 #   define UTS4  #   define UTS4
 #   define mach_type_known  #   define mach_type_known
 # endif  # endif
   # if defined(__pj__)
   #   define PJ
   #   define mach_type_known
   # endif
 /* Ivan Demakov */  /* Ivan Demakov */
 # if defined(__WATCOMC__) && defined(__386__)  # if defined(__WATCOMC__) && defined(__386__)
 #   define I386  #   define I386
Line 295 
Line 335 
                     /*                  (CX_UX and DGUX)                */                      /*                  (CX_UX and DGUX)                */
                     /*             S370       ==> 370-like machine      */                      /*             S370       ==> 370-like machine      */
                     /*                  running Amdahl UTS4             */                      /*                  running Amdahl UTS4             */
                       /*             ARM32      ==> Intel StrongARM       */
                       /*             IA64       ==> Intel IA64            */
                       /*                            (e.g. Itanium)        */
   
   
 /*  /*
Line 343 
Line 386 
  *              to the nearest plausible page boundary, and use that instead   *              to the nearest plausible page boundary, and use that instead
  *              of STACKBOTTOM.   *              of STACKBOTTOM.
  *   *
    * Gustavo Rodriguez-Rivera points out that on most (all?) Unix machines,
    * the value of environ is a pointer that can serve as STACKBOTTOM.
    * I expect that HEURISTIC2 can be replaced by this approach, which
    * interferes far less with debugging.
    *
  * If no expression for STACKBOTTOM can be found, and neither of the above   * If no expression for STACKBOTTOM can be found, and neither of the above
  * heuristics are usable, the collector can still be used with all of the above   * heuristics are usable, the collector can still be used with all of the above
  * undefined, provided one of the following is done:   * undefined, provided one of the following is done:
Line 380 
Line 428 
  *   *
  * An architecture may define DYNAMIC_LOADING if dynamic_load.c   * An architecture may define DYNAMIC_LOADING if dynamic_load.c
  * defined GC_register_dynamic_libraries() for the architecture.   * defined GC_register_dynamic_libraries() for the architecture.
    *
    * An architecture may define PREFETCH(x) to preload the cache with *x.
    * This defaults to a no-op.
    *
    * PREFETCH_FOR_WRITE(x) is used if *x is about to be written.
    *
    * An architecture may also define CLEAR_DOUBLE(x) to be a fast way to
    * clear the two words at GC_malloc-aligned address x.  By default,
    * word stores of 0 are used instead.
  */   */
   
   
Line 486 
Line 543 
   
 # ifdef POWERPC  # ifdef POWERPC
 #   define MACH_TYPE "POWERPC"  #   define MACH_TYPE "POWERPC"
 #   define ALIGNMENT 2  
 #   ifdef MACOS  #   ifdef MACOS
   #     define ALIGNMENT 2  /* Still necessary?  Could it be 4?   */
 #     ifndef __LOWMEM__  #     ifndef __LOWMEM__
 #     include <LowMem.h>  #     include <LowMem.h>
 #     endif  #     endif
Line 497 
Line 554 
 #     define DATAEND  /* not needed */  #     define DATAEND  /* not needed */
 #   endif  #   endif
 #   ifdef LINUX  #   ifdef LINUX
   #     define ALIGNMENT 4        /* Guess.  Can someone verify?  */
                                   /* This was 2, but that didn't sound right. */
 #     define OS_TYPE "LINUX"  #     define OS_TYPE "LINUX"
 #     define HEURISTIC1  #     define HEURISTIC1
   #     define DYNAMIC_LOADING
 #     undef STACK_GRAN  #     undef STACK_GRAN
 #     define STACK_GRAN 0x10000000  #     define STACK_GRAN 0x10000000
 #     define DATASTART GC_data_start          /* Stack usually starts at 0x80000000 */
   #     define LINUX_DATA_START
       extern int _end;        extern int _end;
 #     define DATAEND (&_end)  #     define DATAEND (&_end)
 #   endif  #   endif
   #   ifdef MACOSX
   #     define ALIGNMENT 4
   #     define OS_TYPE "MACOSX"
   #     define DATASTART ((ptr_t) get_etext())
   #     define STACKBOTTOM ((ptr_t) 0xc0000000)
   #     define DATAEND    /* not needed */
   #   endif
 # endif  # endif
   
 # ifdef VAX  # ifdef VAX
Line 593 
Line 661 
 #   ifdef LINUX  #   ifdef LINUX
 #     define OS_TYPE "LINUX"  #     define OS_TYPE "LINUX"
 #     ifdef __ELF__  #     ifdef __ELF__
 #         define DATASTART GC_data_start  #       define LINUX_DATA_START
 #         define DYNAMIC_LOADING  #       define DYNAMIC_LOADING
 #     else  #     else
           Linux Sparc non elf ?            Linux Sparc non elf ?
 #     endif  #     endif
Line 603 
Line 671 
 #     define SVR4  #     define SVR4
 #     define STACKBOTTOM ((ptr_t) 0xf0000000)  #     define STACKBOTTOM ((ptr_t) 0xf0000000)
 #   endif  #   endif
   #   ifdef OPENBSD
   #     define OS_TYPE "OPENBSD"
   #     define STACKBOTTOM ((ptr_t) 0xf8000000)
   #     define DATASTART ((ptr_t)(&etext))
   #   endif
 # endif  # endif
   
 # ifdef I386  # ifdef I386
Line 657 
Line 730 
 #   endif  #   endif
 #   ifdef LINUX  #   ifdef LINUX
 #       define OS_TYPE "LINUX"  #       define OS_TYPE "LINUX"
 #       define STACKBOTTOM ((ptr_t)0xc0000000)  #       define LINUX_STACKBOTTOM
         /* Appears to be 0xe0000000 for at least one 2.1.91 kernel.     */  #       if 0
         /* Probably needs to be more flexible, but I don't yet          */  #         define HEURISTIC1
         /* fully understand how flexible.                               */  #         undef STACK_GRAN
   #         define STACK_GRAN 0x10000000
             /* STACKBOTTOM is usually 0xc0000000, but this changes with   */
             /* different kernel configurations.  In particular, systems   */
             /* with 2GB physical memory will usually move the user        */
             /* address space limit, and hence initial SP to 0x80000000.   */
   #       endif
 #       if !defined(LINUX_THREADS) || !defined(REDIRECT_MALLOC)  #       if !defined(LINUX_THREADS) || !defined(REDIRECT_MALLOC)
 #           define MPROTECT_VDB  #           define MPROTECT_VDB
 #       else  #       else
Line 676 
Line 755 
 #            endif  #            endif
 #            include <features.h>  #            include <features.h>
 #            if defined(__GLIBC__) && __GLIBC__ >= 2  #            if defined(__GLIBC__) && __GLIBC__ >= 2
                  extern int __data_start;  #                define LINUX_DATA_START
 #                define DATASTART ((ptr_t)(&__data_start))  
 #            else  #            else
                  extern char **__environ;                   extern char **__environ;
 #                define DATASTART ((ptr_t)(&__environ))  #                define DATASTART ((ptr_t)(&__environ))
Line 696 
Line 774 
              extern int etext;               extern int etext;
 #            define DATASTART ((ptr_t)((((word) (&etext)) + 0xfff) & ~0xfff))  #            define DATASTART ((ptr_t)((((word) (&etext)) + 0xfff) & ~0xfff))
 #       endif  #       endif
   #       ifdef USE_I686_PREFETCH
   #         define PREFETCH(x) \
               __asm__ __volatile__ ("     prefetchnta     %0": : "m"(*(char *)(x)))
               /* Empirically prefetcht0 is much more effective at reducing        */
               /* cache miss stalls for the targetted load instructions.  But it   */
               /* seems to interfere enough with other cache traffic that the net  */
               /* result is worse than prefetchnta.                                */
   #         if 0
               /* Using prefetches for write seems to have a slight negative       */
               /* impact on performance, at least for a PIII/500.                  */
   #           define PREFETCH_FOR_WRITE(x) \
                 __asm__ __volatile__ ("   prefetcht0      %0": : "m"(*(char *)(x)))
   #         endif
   #       endif
   #       ifdef USE_3DNOW_PREFETCH
   #         define PREFETCH(x) \
               __asm__ __volatile__ ("     prefetch        %0": : "m"(*(char *)(x)))
   #         define PREFETCH_FOR_WRITE(x)
               __asm__ __volatile__ ("     prefetchw       %0": : "m"(*(char *)(x)))
   #       endif
 #   endif  #   endif
 #   ifdef CYGWIN32  #   ifdef CYGWIN32
 #       define OS_TYPE "CYGWIN32"  #       define OS_TYPE "CYGWIN32"
Line 806 
Line 904 
   
 # ifdef MIPS  # ifdef MIPS
 #   define MACH_TYPE "MIPS"  #   define MACH_TYPE "MIPS"
 #   ifndef IRIX5  
 #     define DATASTART (ptr_t)0x10000000  
                               /* Could probably be slightly higher since */  
                               /* startup code allocates lots of stuff.   */  
 #   else  
       extern int _fdata;  
 #     define DATASTART ((ptr_t)(&_fdata))  
 #     ifdef USE_MMAP  
 #         define HEAP_START (ptr_t)0x30000000  
 #     else  
 #         define HEAP_START DATASTART  
 #     endif  
                               /* Lowest plausible heap address.         */  
                               /* In the MMAP case, we map there.        */  
                               /* In either case it is used to identify  */  
                               /* heap sections so they're not           */  
                               /* considered as roots.                   */  
 #   endif /* IRIX5 */  
 #   define HEURISTIC2  
 /* #   define STACKBOTTOM ((ptr_t)0x7fff8000)  sometimes also works.  */  /* #   define STACKBOTTOM ((ptr_t)0x7fff8000)  sometimes also works.  */
   #   ifdef LINUX
         /* This was developed for a linuxce style platform.  Probably     */
         /* needs to be tweaked for workstation class machines.            */
   #     define OS_TYPE "LINUX"
         extern int __data_start;
   #     define DATASTART ((ptr_t)(&__data_start))
   #     define ALIGNMENT 4
   #     define USE_GENERIC_PUSH_REGS 1
   #     define STACKBOTTOM 0x80000000
           /* In many cases, this should probably use LINUX_STACKBOTTOM    */
           /* instead. But some kernel versions seem to give the wrong     */
           /* value from /proc.                                            */
   #   endif /* Linux */
 #   ifdef ULTRIX  #   ifdef ULTRIX
   #       define HEURISTIC2
   #       define DATASTART (ptr_t)0x10000000
                                 /* Could probably be slightly higher since */
                                 /* startup code allocates lots of stuff.   */
 #       define OS_TYPE "ULTRIX"  #       define OS_TYPE "ULTRIX"
 #       define ALIGNMENT 4  #       define ALIGNMENT 4
 #   endif  #   endif
 #   ifdef RISCOS  #   ifdef RISCOS
   #       define HEURISTIC2
   #       define DATASTART (ptr_t)0x10000000
 #       define OS_TYPE "RISCOS"  #       define OS_TYPE "RISCOS"
 #       define ALIGNMENT 4  /* Required by hardware */  #       define ALIGNMENT 4  /* Required by hardware */
 #   endif  #   endif
 #   ifdef IRIX5  #   ifdef IRIX5
   #       define HEURISTIC2
           extern int _fdata;
   #       define DATASTART ((ptr_t)(&_fdata))
   #       ifdef USE_MMAP
   #         define HEAP_START (ptr_t)0x30000000
   #       else
   #         define HEAP_START DATASTART
   #       endif
                                 /* Lowest plausible heap address.         */
                                 /* In the MMAP case, we map there.        */
                                 /* In either case it is used to identify  */
                                 /* heap sections so they're not           */
                                 /* considered as roots.                   */
 #       define OS_TYPE "IRIX5"  #       define OS_TYPE "IRIX5"
 #       define MPROTECT_VDB  #       define MPROTECT_VDB
 #       ifdef _MIPS_SZPTR  #       ifdef _MIPS_SZPTR
Line 862 
Line 973 
 # endif  # endif
   
 # ifdef HP_PA  # ifdef HP_PA
       /* OS is assumed to be HP/UX        */
 #   define MACH_TYPE "HP_PA"  #   define MACH_TYPE "HP_PA"
 #   define ALIGNMENT 4  #   define OS_TYPE "HPUX"
 #   define ALIGN_DOUBLE  #   ifdef __LP64__
   #     define CPP_WORDSZ 64
   #     define ALIGNMENT 8
   #   else
   #     define CPP_WORDSZ 32
   #     define ALIGNMENT 4
   #     define ALIGN_DOUBLE
   #   endif
     extern int __data_start;      extern int __data_start;
 #   define DATASTART ((ptr_t)(&__data_start))  #   define DATASTART ((ptr_t)(&__data_start))
 #   if 0  #   if 0
Line 877 
Line 996 
         /* this.)                                                       */          /* this.)                                                       */
 #       define STACKBOTTOM ((ptr_t) 0x7b033000)  /* from /etc/conf/h/param.h */  #       define STACKBOTTOM ((ptr_t) 0x7b033000)  /* from /etc/conf/h/param.h */
 #   else  #   else
 #       define HEURISTIC2          /* Gustavo Rodriguez-Rivera suggested changing HEURISTIC2       */
           /* to this.  We'll probably do this on other platforms, too.    */
           /* For now I'll use it where I can test it.                     */
           extern char ** environ;
   #       define STACKBOTTOM ((ptr_t)environ)
 #   endif  #   endif
 #   define STACK_GROWS_UP  #   define STACK_GROWS_UP
 #   define DYNAMIC_LOADING  #   define DYNAMIC_LOADING
   #   ifndef HPUX_THREADS
   #     define MPROTECT_VDB
   #   endif
 #   include <unistd.h>  #   include <unistd.h>
 #   define GETPAGESIZE() sysconf(_SC_PAGE_SIZE)  #   define GETPAGESIZE() sysconf(_SC_PAGE_SIZE)
         /* They misspelled the Posix macro?     */  
 # endif  # endif
   
 # ifdef ALPHA  # ifdef ALPHA
 #   define MACH_TYPE "ALPHA"  #   define MACH_TYPE "ALPHA"
 #   define ALIGNMENT 8  #   define ALIGNMENT 8
   #   define USE_GENERIC_PUSH_REGS
           /* Gcc and probably the DEC/Compaq compiler spill pointers to preserved */
           /* fp registers in some cases when the target is a 21264.  The assembly */
           /* code doesn't handle that yet, and version dependencies make that a   */
           /* bit tricky.  Do the easy thing for now.                              */
 #   ifdef OSF1  #   ifdef OSF1
 #       define OS_TYPE "OSF1"  #       define OS_TYPE "OSF1"
 #       define DATASTART ((ptr_t) 0x140000000)  #       define DATASTART ((ptr_t) 0x140000000)
         extern _end;          extern int _end;
 #       define DATAEND ((ptr_t) &_end)  #       define DATAEND ((ptr_t) &_end)
 #       define HEURISTIC2  #       define HEURISTIC2
         /* Normally HEURISTIC2 is too conervative, since                */          /* Normally HEURISTIC2 is too conervative, since                */
Line 909 
Line 1039 
 #       define CPP_WORDSZ 64  #       define CPP_WORDSZ 64
 #       define STACKBOTTOM ((ptr_t) 0x120000000)  #       define STACKBOTTOM ((ptr_t) 0x120000000)
 #       ifdef __ELF__  #       ifdef __ELF__
             extern int __data_start;  #         define LINUX_DATA_START
 #           define DATASTART &__data_start  #         define DYNAMIC_LOADING
 #           define DYNAMIC_LOADING            /* This doesn't work if the collector is in a dynamic library. */
 #       else  #       else
 #           define DATASTART ((ptr_t) 0x140000000)  #           define DATASTART ((ptr_t) 0x140000000)
 #       endif  #       endif
Line 923 
Line 1053 
 #   endif  #   endif
 # endif  # endif
   
   # ifdef IA64
   #   define MACH_TYPE "IA64"
   #   define ALIGN_DOUBLE
           /* Requires 16 byte alignment for malloc */
   #   define ALIGNMENT 8
   #   define USE_GENERIC_PUSH_REGS
           /* We need to get preserved registers in addition to register windows.  */
           /* That's easiest to do with setjmp.                                    */
   #   ifdef HPUX
           --> needs work
   #   endif
   #   ifdef LINUX
   #       define OS_TYPE "LINUX"
   #       define CPP_WORDSZ 64
           /* This should really be done through /proc, but that   */
           /* requires we run on an IA64 kernel.                   */
   #       define STACKBOTTOM ((ptr_t) 0xa000000000000000l)
           /* We also need the base address of the register stack  */
           /* backing store.  There is probably a better way to    */
           /* get that, too ...                                    */
   #       define BACKING_STORE_BASE ((ptr_t) 0x9fffffff80000000l)
   #       if 1
   #           define SEARCH_FOR_DATA_START
   #           define DATASTART GC_data_start
   #       else
               extern int data_start;
   #           define DATASTART ((ptr_t)(&data_start))
   #       endif
   #       define DYNAMIC_LOADING
   #       define MPROTECT_VDB
                   /* Requires Linux 2.3.47 or later.      */
           extern int _end;
   #       define DATAEND (&_end)
   #       define PREFETCH(x) \
             __asm__ ("    lfetch  [%0]": : "r"((void *)(x)))
   #       define PREFETCH_FOR_WRITE(x) \
             __asm__ ("    lfetch.excl     [%0]": : "r"((void *)(x)))
   #       define CLEAR_DOUBLE(x) \
             __asm__ ("    stf.spill       [%0]=f0": : "r"((void *)(x)))
   #   endif
   # endif
   
 # ifdef M88K  # ifdef M88K
 #   define MACH_TYPE "M88K"  #   define MACH_TYPE "M88K"
 #   define ALIGNMENT 4  #   define ALIGNMENT 4
Line 953 
Line 1125 
 #       define HEURISTIC2  #       define HEURISTIC2
 # endif  # endif
   
   # if defined(PJ)
   #   define ALIGNMENT 4
       extern int _etext;
   #   define DATASTART ((ptr_t)(&_etext))
   #   define HEURISTIC1
   # endif
   
   # ifdef ARM32
   #   define CPP_WORDSZ 32
   #   define MACH_TYPE "ARM32"
   #   define ALIGNMENT 4
   #   ifdef NETBSD
   #       define OS_TYPE "NETBSD"
   #       define HEURISTIC2
           extern char etext;
   #       define DATASTART ((ptr_t)(&etext))
   #       define USE_GENERIC_PUSH_REGS
   #   endif
   #   ifdef LINUX
   #       define OS_TYPE "LINUX"
   #       define HEURISTIC1
   #       undef STACK_GRAN
   #       define STACK_GRAN 0x10000000
   #       define USE_GENERIC_PUSH_REGS
   #       ifdef __ELF__
   #            define DYNAMIC_LOADING
   #            include <features.h>
   #            if defined(__GLIBC__) && __GLIBC__ >= 2
   #                define LINUX_DATA_START
   #            else
                    extern char **__environ;
   #                define DATASTART ((ptr_t)(&__environ))
                                 /* hideous kludge: __environ is the first */
                                 /* word in crt0.o, and delimits the start */
                                 /* of the data segment, no matter which   */
                                 /* ld options were passed through.        */
                                 /* We could use _etext instead, but that  */
                                 /* would include .rodata, which may       */
                                 /* contain large read-only data tables    */
                                 /* that we'd rather not scan.             */
   #            endif
                extern int _end;
   #            define DATAEND (&_end)
   #       else
                extern int etext;
   #            define DATASTART ((ptr_t)((((word) (&etext)) + 0xfff) & ~0xfff))
   #       endif
   #   endif
   #endif
   
   #ifdef LINUX_DATA_START
       /* Some Linux distributions arrange to define __data_start.  Some   */
       /* define data_start as a weak symbol.  The latter is technically   */
       /* broken, since the user program may define data_start, in which   */
       /* case we lose.  Nonetheless, we try both, prefering __data_start. */
       /* We assume gcc.   */
   #   pragma weak __data_start
       extern int __data_start;
   #   pragma weak data_start
       extern int data_start;
   #   define DATASTART ((ptr_t)(&__data_start != 0? &__data_start : &data_start))
   #endif
   
 # ifndef STACK_GROWS_UP  # ifndef STACK_GROWS_UP
 #   define STACK_GROWS_DOWN  #   define STACK_GROWS_DOWN
 # endif  # endif
Line 995 
Line 1230 
 #   define SUNOS5SIGS  #   define SUNOS5SIGS
 # endif  # endif
   
   # if defined(HPUX)
   #   define SUNOS5SIGS
   # endif
   
 # if CPP_WORDSZ != 32 && CPP_WORDSZ != 64  # if CPP_WORDSZ != 32 && CPP_WORDSZ != 64
    -> bad word size     -> bad word size
 # endif  # endif
Line 1021 
Line 1260 
 #   undef MPROTECT_VDB  #   undef MPROTECT_VDB
 # endif  # endif
   
   # ifdef USE_MUNMAP
   #   undef MPROTECT_VDB  /* Can't deal with address space holes. */
   # endif
   
 # if !defined(PCR_VDB) && !defined(PROC_VDB) && !defined(MPROTECT_VDB)  # if !defined(PCR_VDB) && !defined(PROC_VDB) && !defined(MPROTECT_VDB)
 #   define DEFAULT_VDB  #   define DEFAULT_VDB
 # endif  # endif
   
   # ifndef PREFETCH
   #   define PREFETCH(x)
   #   define NO_PREFETCH
   # endif
   
   # ifndef PREFETCH_FOR_WRITE
   #   define PREFETCH_FOR_WRITE(x)
   #   define NO_PREFETCH_FOR_WRITE
   # endif
   
   # ifndef CACHE_LINE_SIZE
   #   define CACHE_LINE_SIZE 32   /* Wild guess   */
   # endif
   
   # ifndef CLEAR_DOUBLE
   #   define CLEAR_DOUBLE(x) \
           ((word*)x)[0] = 0; \
           ((word*)x)[1] = 0;
   # endif /* CLEAR_DOUBLE */
   
 # if defined(_SOLARIS_PTHREADS) && !defined(SOLARIS_THREADS)  # if defined(_SOLARIS_PTHREADS) && !defined(SOLARIS_THREADS)
 #   define SOLARIS_THREADS  #   define SOLARIS_THREADS
 # endif  # endif
Line 1040 
Line 1303 
 # if defined(SOLARIS_THREADS) && !defined(SUNOS5)  # if defined(SOLARIS_THREADS) && !defined(SUNOS5)
 --> inconsistent configuration  --> inconsistent configuration
 # endif  # endif
   # if defined(HPUX_THREADS) && !defined(HPUX)
   --> inconsistent configuration
   # endif
 # if defined(PCR) || defined(SRC_M3) || \  # if defined(PCR) || defined(SRC_M3) || \
         defined(SOLARIS_THREADS) || defined(WIN32_THREADS) || \          defined(SOLARIS_THREADS) || defined(WIN32_THREADS) || \
         defined(IRIX_THREADS) || defined(LINUX_THREADS) || \          defined(IRIX_THREADS) || defined(LINUX_THREADS) || \
         defined(IRIX_JDK_THREADS)          defined(IRIX_JDK_THREADS) || defined(HPUX_THREADS)
 #   define THREADS  #   define THREADS
 # endif  # endif
   
Line 1058 
Line 1324 
                                 /* include assembly code to do it well. */                                  /* include assembly code to do it well. */
 # endif  # endif
   
 # endif  # endif /* GCCONFIG_H */

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.1.3

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>