* 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
+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,
# 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
*/
# 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
- .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