OSDN Git Service

2009-12-09 Matthias Klose <doko@ubuntu.com>
[pf3gnuchains/gcc-fork.git] / boehm-gc / mips_sgi_mach_dep.s
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 == _ABIO32)
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