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:
parent
01a2ccd010
commit
6cb3421f1f
@ -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,
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user