* include/gc.h (GC_INIT): Add DATASTART and DATAEND roots on AIX.
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2002 18:06:24 +0000 (18:06 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2002 18:06:24 +0000 (18:06 +0000)
* include/private/gcconfig.h (RS6000): Add 64-bit AIX support.
Define USE_GENERIC_PUSH_REGS.  Use AIX _data and _end symbols for
DATASTART and DATAEND roots.
* rs6000_mach_dep.s: Add function descriptor and traceback table.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49218 138bc75d-0d04-0410-961f-82ee72b054a4

boehm-gc/ChangeLog
boehm-gc/include/gc.h
boehm-gc/include/private/gcconfig.h
boehm-gc/rs6000_mach_dep.s

index 83e266a..df5c8e1 100644 (file)
@@ -1,3 +1,11 @@
+2002-01-25  David Edelsohn  <edelsohn@gnu.org>
+
+       * include/gc.h (GC_INIT): Add DATASTART and DATAEND roots on AIX.
+       * include/private/gcconfig.h (RS6000): Add 64-bit AIX support.
+       Define USE_GENERIC_PUSH_REGS.  Use AIX _data and _end symbols for
+       DATASTART and DATAEND roots.
+       * rs6000_mach_dep.s: Add function descriptor and traceback table.
+
 2001-12-16  Jeff Sturm  <jsturm@one-point.com>
 
        * dyn_load.c: Define ElfW (if needed) for all targets,
index c73ecc0..7d5bd25 100644 (file)
@@ -888,7 +888,7 @@ extern void GC_thr_init();  /* Needed for Solaris/X86       */
 #   define GC_INIT() { extern end, etext; \
                       GC_noop(&end, &etext); }
 #else
-# if defined(__CYGWIN32__) && defined(GC_USE_DLL)
+# if (defined(__CYGWIN32__) && defined(GC_USE_DLL)) || defined (_AIX)
     /*
      * Similarly gnu-win32 DLLs need explicit initialization
      */
index 75405dc..1c92ee3 100644 (file)
 
 # ifdef RS6000
 #   define MACH_TYPE "RS6000"
-#   define ALIGNMENT 4
-#   define DATASTART ((ptr_t)0x20000000)
+#   ifdef __64BIT__
+#     define ALIGNMENT 8
+#     define CPP_WORDSZ 64
+#   else
+#     define ALIGNMENT 4
+#     define CPP_WORDSZ 32
+#   endif
+    extern int _data, _end;
+#   define DATASTART ((ptr_t)((ulong)&_data))
+#   define DATAEND ((ptr_t)((ulong)&_end))
     extern int errno;
 #   define STACKBOTTOM ((ptr_t)((ulong)&errno))
+#   define USE_GENERIC_PUSH_REGS
 #   define DYNAMIC_LOADING
        /* For really old versions of AIX, this may have to be removed. */
 # endif
 
 # if defined(SVR4) || defined(LINUX) || defined(IRIX) || defined(HPUX) \
     || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \
-    || defined(BSD) || defined(AIX) || defined(MACOSX) || defined(OSF1)
+    || defined(BSD) || defined(_AIX) || defined(MACOSX) || defined(OSF1)
 #   define UNIX_LIKE   /* Basic Unix-like system calls work.   */
 # endif
 
index e0dbe80..12bf9a8 100644 (file)
@@ -1,4 +1,3 @@
-    .csect
     .set   r0,0
     .set   r1,1
     .set   r2,2
     .set   r30,30
     .set   r31,31
 
+    .extern .GC_push_one
  # Mark from machine registers that are saved by C compiler
     .globl  .GC_push_regs
+.csect .text[PR]
+    .align 2
+    .globl  GC_push_regs
+    .globl  .GC_push_regs
+.csect GC_push_regs[DS]
+GC_push_regs:
+    .long .GC_push_regs, TOC[tc0], 0
+.csect .text[PR]
 .GC_push_regs:
-    .extern .GC_push_one
     stu            r1,-64(r1)  # reserve stack frame
     mflr    r0         # save link register
     st      r0,0x48(r1)
     mtlr    r0
     ai      r1,r1,64
     br
+    .long 0
+    .byte 0,0,0,0,0,0,0,0