summaryrefslogtreecommitdiff
path: root/boehm-gc/mips_sgi_mach_dep.s
diff options
context:
space:
mode:
authorTom Tromey <tromey@gcc.gnu.org>1999-04-07 08:01:30 +0000
committerTom Tromey <tromey@gcc.gnu.org>1999-04-07 08:01:30 +0000
commit73ffefd017128fecccdd52aa8b6fb9f042e0bbb8 (patch)
treee6d8fcc8767be9361e18c552ee43ecfc3b4fdea8 /boehm-gc/mips_sgi_mach_dep.s
parentc46bb2fd3d0119fff60915dbefc4e0aa3147e8a2 (diff)
downloadgcc-73ffefd017128fecccdd52aa8b6fb9f042e0bbb8.tar.gz
Initial revision
From-SVN: r26246
Diffstat (limited to 'boehm-gc/mips_sgi_mach_dep.s')
-rw-r--r--boehm-gc/mips_sgi_mach_dep.s40
1 files changed, 40 insertions, 0 deletions
diff --git a/boehm-gc/mips_sgi_mach_dep.s b/boehm-gc/mips_sgi_mach_dep.s
new file mode 100644
index 00000000000..03c4b98060c
--- /dev/null
+++ b/boehm-gc/mips_sgi_mach_dep.s
@@ -0,0 +1,40 @@
+#include <sys/regdef.h>
+#include <sys/asm.h>
+
+# define call_push(x) move $4,x; jal GC_push_one
+
+ .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