03c4b98060cc36b0c1e136f0ddfe161140efaa68
[gcc.git] / boehm-gc / mips_sgi_mach_dep.s
1 #include <sys/regdef.h>
2 #include <sys/asm.h>
3
4 # define call_push(x) move $4,x; jal GC_push_one
5
6 .text
7 /* Mark from machine registers that are saved by C compiler */
8 # define FRAMESZ 32
9 # define RAOFF FRAMESZ-SZREG
10 # define GPOFF FRAMESZ-(2*SZREG)
11 NESTED(GC_push_regs, FRAMESZ, ra)
12 .mask 0x80000000,-SZREG # inform debugger of saved ra loc
13 move t0,gp
14 SETUP_GPX(t8)
15 PTR_SUBU sp,FRAMESZ
16 # ifdef SETUP_GP64
17 SETUP_GP64(GPOFF, GC_push_regs)
18 # endif
19 SAVE_GP(GPOFF)
20 REG_S ra,RAOFF(sp)
21 # if (_MIPS_SIM == _MIPS_SIM_ABI32)
22 call_push($2)
23 call_push($3)
24 # endif
25 call_push($16)
26 call_push($17)
27 call_push($18)
28 call_push($19)
29 call_push($20)
30 call_push($21)
31 call_push($22)
32 call_push($23)
33 call_push($30)
34 REG_L ra,RAOFF(sp)
35 # ifdef RESTORE_GP64
36 RESTORE_GP64
37 # endif
38 PTR_ADDU sp,FRAMESZ
39 j ra
40 .end GC_push_regs