gc.h (GC_INIT): Add DATASTART and DATAEND roots on AIX.

* 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.

From-SVN: r49218
This commit is contained in:
David Edelsohn 2002-01-25 18:06:24 +00:00 committed by David Edelsohn
parent 01a2ccd010
commit 6cb3421f1f
4 changed files with 32 additions and 6 deletions

View 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,

View 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
*/

View File

@ -1174,10 +1174,19 @@
# 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
@ -1582,7 +1591,7 @@
# 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

View File

@ -1,4 +1,3 @@
.csect
.set r0,0
.set r1,1
.set r2,2
@ -32,10 +31,18 @@
.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)
@ -103,3 +110,5 @@
mtlr r0
ai r1,r1,64
br
.long 0
.byte 0,0,0,0,0,0,0,0