diff options
author | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-16 09:01:40 +0000 |
---|---|---|
committer | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-16 09:01:40 +0000 |
commit | fa4ee1f113cb5cb7452551cdd2a608656c06a45c (patch) | |
tree | 483dc5098530e605b23e445c94fcdfdfec0d9b23 /boehm-gc/mach_dep.c | |
parent | 380cddab526fcf3c2f33dc8ebeb61c2d42703f41 (diff) | |
download | gcc-fa4ee1f113cb5cb7452551cdd2a608656c06a45c.tar.gz |
* Makefile.am, acinclude.m4, configure.in: Imported GC 6.1 Alpha 1
and merged local changes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46283 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'boehm-gc/mach_dep.c')
-rw-r--r-- | boehm-gc/mach_dep.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/boehm-gc/mach_dep.c b/boehm-gc/mach_dep.c index 776bf6909bc..35e9264bd85 100644 --- a/boehm-gc/mach_dep.c +++ b/boehm-gc/mach_dep.c @@ -492,8 +492,9 @@ ptr_t cold_gc_frame; /* On IA64, we also need to flush register windows. But they end */ /* up on the other side of the stack segment. */ /* Returns the backing store pointer for the register stack. */ +/* We implement this as a separate file in HP/UX. */ # ifdef IA64 -# ifdef __GNUC__ +# ifdef LINUX asm(" .text"); asm(" .psr abi64"); asm(" .psr lsb"); @@ -510,12 +511,25 @@ ptr_t cold_gc_frame; asm(" mov r8=ar.bsp"); asm(" br.ret.sptk.few rp"); asm(" .endp GC_save_regs_in_stack"); -# else - void GC_save_regs_in_stack() { - asm(" flushrs"); - asm(" ;;"); - asm(" mov r8=ar.bsp"); - asm(" br.ret.sptk.few rp"); +# endif /* LINUX */ +# if 0 /* Other alternatives that don't work on HP/UX */ + word GC_save_regs_in_stack() { +# if USE_BUILTINS + __builtin_ia64_flushrs(); + return __builtin_ia64_bsp(); +# else +# ifdef HPUX + _asm(" flushrs"); + _asm(" ;;"); + _asm(" mov r8=ar.bsp"); + _asm(" br.ret.sptk.few rp"); +# else + asm(" flushrs"); + asm(" ;;"); + asm(" mov r8=ar.bsp"); + asm(" br.ret.sptk.few rp"); +# endif +# endif } # endif # endif |