1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include <sys/regdef.h>
- #include <sys/asm.h>
- /* This file must be preprocessed. But the SGI assembler always does */
- /* that. Furthermore, a generic preprocessor won't do, since some of */
- /* the SGI-supplied include files rely on behavior of the MIPS */
- /* assembler. Hence we treat and name this file as though it required */
- /* no preprocessing. */
- # 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 == _ABIO32)
- 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
|