|
Last change
on this file was 132, checked in by cinc, 19 years ago |
|
Boehm-Demers-Weiser garbage collector. Single-threaded for OS/2.
|
|
File size:
1.2 KB
|
| Line | |
|---|
| 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
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.