27d54b2a6c
libffi: * src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external _MIPS_SIM_NABI32, _MIPS_SIM_ABI32. libstdc++-v3: * config/cpu/mips/atomicity.h (__atomic_add): Use _ABIO32 instead of external _MIPS_SIM_ABI32. boehm-gc: * mips_sgi_mach_dep.s: Use _ABIO32 instead of external _MIPS_SIM_ABI32. gcc: * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Define _ABIO32. Use it in _MIPS_SIM definition. * config/mips/mips.h (CRT_CALL_STATIC_FUNCTION): Likewise. From-SVN: r72713
47 lines
1.2 KiB
ArmAsm
47 lines
1.2 KiB
ArmAsm
#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
|