root/gc/mips_sgi_mach_dep.s

/* [<][>][^][v][top][bottom][index][help] */
   1 #include <sys/regdef.h>
   2 #include <sys/asm.h>
   3 /* This file must be preprocessed.  But the SGI assembler always does   */
   4 /* that.  Furthermore, a generic preprocessor won't do, since some of   */
   5 /* the SGI-supplied include files rely on behavior of the MIPS          */
   6 /* assembler.  Hence we treat and name this file as though it required  */
   7 /* no preprocessing.                                                    */
   8 
   9 # define call_push(x)     move    $4,x;    jal     GC_push_one
  10 
  11     .option pic2
  12     .text
  13 /* Mark from machine registers that are saved by C compiler */
  14 #   define FRAMESZ 32
  15 #   define RAOFF FRAMESZ-SZREG
  16 #   define GPOFF FRAMESZ-(2*SZREG)
  17     NESTED(GC_push_regs, FRAMESZ, ra)
  18     .mask 0x80000000,-SZREG     # inform debugger of saved ra loc
  19     move        t0,gp
  20     SETUP_GPX(t8)
  21     PTR_SUBU    sp,FRAMESZ
  22 #   ifdef SETUP_GP64
  23       SETUP_GP64(GPOFF, GC_push_regs)
  24 #   endif
  25     SAVE_GP(GPOFF)
  26     REG_S       ra,RAOFF(sp)
  27 #   if (_MIPS_SIM == _MIPS_SIM_ABI32)
  28         call_push($2)
  29         call_push($3)
  30 #   endif
  31     call_push($16)
  32     call_push($17)
  33     call_push($18)
  34     call_push($19)
  35     call_push($20)
  36     call_push($21)
  37     call_push($22)
  38     call_push($23)
  39     call_push($30)
  40     REG_L       ra,RAOFF(sp)
  41 #   ifdef RESTORE_GP64
  42       RESTORE_GP64
  43 #   endif
  44     PTR_ADDU    sp,FRAMESZ
  45     j           ra
  46     .end    GC_push_regs

/* [<][>][^][v][top][bottom][index][help] */