From d3f5de6dbda955a123762f80d53cbdde8c4290b2 Mon Sep 17 00:00:00 2001 From: bryce Date: Wed, 13 Feb 2002 05:38:39 +0000 Subject: * dbg_mlc.c (GC_debug_generic_malloc): Removed. * sparc_mach_dep.S: Rename from sparc_mach_dep.s as it is a preprocessor file. * mips_sgi_mach_dep.S: Likewise. * Makefile.am: Update for above changes. * Makefile.in: Rebuilt. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49720 138bc75d-0d04-0410-961f-82ee72b054a4 --- boehm-gc/ChangeLog | 10 +++++++ boehm-gc/Makefile.am | 4 +-- boehm-gc/Makefile.in | 4 +-- boehm-gc/dbg_mlc.c | 29 ------------------- boehm-gc/mips_sgi_mach_dep.S | 41 +++++++++++++++++++++++++++ boehm-gc/sparc_mach_dep.S | 67 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 122 insertions(+), 33 deletions(-) create mode 100644 boehm-gc/mips_sgi_mach_dep.S create mode 100644 boehm-gc/sparc_mach_dep.S (limited to 'boehm-gc') diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index 2f4a1730aa9..a4fe942c62a 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,3 +1,13 @@ +2002-02-13 Bryce McKinlay + + * dbg_mlc.c (GC_debug_generic_malloc): Removed. + + * sparc_mach_dep.S: Rename from sparc_mach_dep.s as it is a + preprocessor file. + * mips_sgi_mach_dep.S: Likewise. + * Makefile.am: Update for above changes. + * Makefile.in: Rebuilt. + 2002-02-12 Richard Henderson * configure.in: Re-apply 2001-06-26 configure change. diff --git a/boehm-gc/Makefile.am b/boehm-gc/Makefile.am index 40970729f44..2876ece464b 100644 --- a/boehm-gc/Makefile.am +++ b/boehm-gc/Makefile.am @@ -39,8 +39,8 @@ libgcjgc_la_DEPENDENCIES = @addobjs@ libgcjgc_la_LDFLAGS = -version-info 1:1:0 -rpath $(toolexeclibdir) EXTRA_libgcjgc_la_SOURCES = alpha_mach_dep.s \ -mips_sgi_mach_dep.s mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \ -rs6000_mach_dep.s sparc_mach_dep.s sparc_netbsd_mach_dep.s \ +mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \ +rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \ sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s AM_CXXFLAGS = @GC_CFLAGS@ diff --git a/boehm-gc/Makefile.in b/boehm-gc/Makefile.in index 4460d67289b..740883c4444 100644 --- a/boehm-gc/Makefile.in +++ b/boehm-gc/Makefile.in @@ -124,8 +124,8 @@ libgcjgc_la_DEPENDENCIES = @addobjs@ libgcjgc_la_LDFLAGS = -version-info 1:1:0 -rpath $(toolexeclibdir) EXTRA_libgcjgc_la_SOURCES = alpha_mach_dep.s \ -mips_sgi_mach_dep.s mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \ -rs6000_mach_dep.s sparc_mach_dep.s sparc_netbsd_mach_dep.s \ +mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \ +rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \ sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s diff --git a/boehm-gc/dbg_mlc.c b/boehm-gc/dbg_mlc.c index e875c880f07..57de3dab28c 100644 --- a/boehm-gc/dbg_mlc.c +++ b/boehm-gc/dbg_mlc.c @@ -429,35 +429,6 @@ void GC_start_debugging() return (GC_store_debug_info(result, (word)lb, s, (word)i)); } -# ifdef __STDC__ - GC_PTR GC_debug_generic_malloc(size_t lb, int k, GC_EXTRA_PARAMS) -# else - GC_PTR GC_debug_malloc(lb, k, s, i) - size_t lb; - int k; - char * s; - int i; -# ifdef GC_ADD_CALLER - --> GC_ADD_CALLER not implemented for K&R C -# endif -# endif -{ - GC_PTR result = GC_generic_malloc(lb + DEBUG_BYTES, k); - - if (result == 0) { - GC_err_printf1("GC_debug_malloc(%ld) returning NIL (", - (unsigned long) lb); - GC_err_puts(s); - GC_err_printf1(":%ld)\n", (unsigned long)i); - return(0); - } - if (!GC_debugging_started) { - GC_start_debugging(); - } - ADD_CALL_CHAIN(result, ra); - return (GC_store_debug_info(result, (word)lb, s, (word)i)); -} - # ifdef DBG_HDRS_ALL /* * An allocation function for internal use. diff --git a/boehm-gc/mips_sgi_mach_dep.S b/boehm-gc/mips_sgi_mach_dep.S new file mode 100644 index 00000000000..bae9b5ebfe4 --- /dev/null +++ b/boehm-gc/mips_sgi_mach_dep.S @@ -0,0 +1,41 @@ +#include +#include + +# define call_push(x) move $4,x; jal GC_push_one + + .option pic2 + .text +/* Mark from machine registers that are saved by C compiler */ +# define FRAMESZ 32 +# define RAOFF FRAMESZ-SZREG +# define GPOFF FRAMESZ-(2*SZREG) + NESTED(GC_push_regs, FRAMESZ, ra) + .mask 0x80000000,-SZREG # inform debugger of saved ra loc + move t0,gp + SETUP_GPX(t8) + PTR_SUBU sp,FRAMESZ +# ifdef SETUP_GP64 + SETUP_GP64(GPOFF, GC_push_regs) +# endif + SAVE_GP(GPOFF) + REG_S ra,RAOFF(sp) +# if (_MIPS_SIM == _MIPS_SIM_ABI32) + call_push($2) + call_push($3) +# endif + call_push($16) + call_push($17) + call_push($18) + call_push($19) + call_push($20) + call_push($21) + call_push($22) + call_push($23) + call_push($30) + REG_L ra,RAOFF(sp) +# ifdef RESTORE_GP64 + RESTORE_GP64 +# endif + PTR_ADDU sp,FRAMESZ + j ra + .end GC_push_regs diff --git a/boehm-gc/sparc_mach_dep.S b/boehm-gc/sparc_mach_dep.S new file mode 100644 index 00000000000..9f3a4b0a99d --- /dev/null +++ b/boehm-gc/sparc_mach_dep.S @@ -0,0 +1,67 @@ +! SPARCompiler 3.0 and later apparently no longer handles +! asm outside functions. So we need a separate .s file +! This is only set up for SunOS 5, not SunOS 4. +! Assumes this is called before the stack contents are +! examined. + + .seg "text" + .globl GC_save_regs_in_stack + .globl GC_push_regs +GC_save_regs_in_stack: +GC_push_regs: +#if defined(__arch64__) || defined(__sparcv9) + save %sp,-128,%sp + flushw + ret + restore %sp,2047+128,%o0 +#else /* 32 bit SPARC */ + ta 0x3 ! ST_FLUSH_WINDOWS + mov %sp,%o0 + retl + nop +#endif /* 32 bit SPARC */ +.GC_save_regs_in_stack_end: + .size GC_save_regs_in_stack,.GC_save_regs_in_stack_end-GC_save_regs_in_stack + + + .globl GC_clear_stack_inner +GC_clear_stack_inner: +#if defined(__arch64__) || defined(__sparcv9) + mov %sp,%o2 ! Save sp + add %sp,2047-8,%o3 ! p = sp+bias-8 + add %o1,-2047-192,%sp ! Move sp out of the way, + ! so that traps still work. + ! Includes some extra words + ! so we can be sloppy below. +loop: + stx %g0,[%o3] ! *(long *)p = 0 + cmp %o3,%o1 + bgu,pt %xcc, loop ! if (p > limit) goto loop + asm("add %o3,-8,%o3 ! p -= 8 (delay slot) + retl + mov %o2,%sp ! Restore sp., delay slot +#else /* 32 bit SPARC */ + mov %sp,%o2 ! Save sp + add %sp,-8,%o3 ! p = sp-8 + clr %g1 ! [g0,g1] = 0 + add %o1,-0x60,%sp ! Move sp out of the way, + ! so that traps still work. + ! Includes some extra words + ! so we can be sloppy below. +loop: + std %g0,[%o3] ! *(long long *)p = 0 + cmp %o3,%o1 + bgu loop ! if (p > limit) goto loop + add %o3,-8,%o3 ! p -= 8 (delay slot) + retl + mov %o2,%sp ! Restore sp., delay slot +#endif /* 32 bit SPARC */ +.GC_clear_stack_inner_end: + .size GC_clear_stack_inner,.GC_clear_stack_inner_end-GC_clear_stack_inner + + + + + + + -- cgit v1.2.1