summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryce McKinlay <bryce@waitaki.otago.ac.nz>2002-02-13 05:38:39 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2002-02-13 05:38:39 +0000
commitca77b9e123f2a889909da2e7b6cb6c5dd83a7ffc (patch)
tree79f2aaa7627d8e3d1e0b25a205cabcf95160d735
parent0ec4e2a87f7a535d82c608aaa80a30f79a91130a (diff)
downloadgcc-ca77b9e123f2a889909da2e7b6cb6c5dd83a7ffc.tar.gz
dbg_mlc.c (GC_debug_generic_malloc): Removed.
* 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. From-SVN: r49720
-rw-r--r--boehm-gc/ChangeLog10
-rw-r--r--boehm-gc/Makefile.am4
-rw-r--r--boehm-gc/Makefile.in4
-rw-r--r--boehm-gc/dbg_mlc.c29
-rw-r--r--boehm-gc/mips_sgi_mach_dep.S41
-rw-r--r--boehm-gc/sparc_mach_dep.S67
6 files changed, 122 insertions, 33 deletions
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 <bryce@waitaki.otago.ac.nz>
+
+ * 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 <rth@redhat.com>
* 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 <sys/regdef.h>
+#include <sys/asm.h>
+
+# 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
+
+
+
+
+
+
+