mips.h (CRT_CALL_STATIC_FUNCTION): Define so as to set $gp before the call.

* config/mips/mips.h (CRT_CALL_STATIC_FUNCTION): Define so as
to set $gp before the call.

From-SVN: r61310
This commit is contained in:
Alexandre Oliva 2003-01-15 07:42:21 +00:00 committed by Alexandre Oliva
parent 553eb139b1
commit 3c0121e4eb
2 changed files with 33 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2003-01-15 Alexandre Oliva <aoliva@redhat.com>
* config/mips/mips.h (CRT_CALL_STATIC_FUNCTION): Define so as
to set $gp before the call.
2003-01-14 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.c (alpha_expand_mov): Use correct mode

View file

@ -4674,3 +4674,31 @@ while (0)
/* Generate calls to memcpy, etc., not bcopy, etc. */
#define TARGET_MEM_FUNCTIONS
/* Since the bits of the _init and _fini function is spread across
many object files, each potentially with its own GP, we must assume
we need to load our GP. We don't preserve $gp or $ra, since each
init/fini chunk is supposed to initialize $gp, and crti/crtn
already take care of preserving $ra and, when appropriate, $gp. */
#if _MIPS_SIM == _MIPS_SIM_ABI32
#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
asm (SECTION_OP "\n\
.set noreorder\n\
bal 1f\n\
nop\n\
1: .cpload $31\n\
.set reorder\n\
jal " USER_LABEL_PREFIX #FUNC "\n\
" TEXT_SECTION_ASM_OP);
#elif (defined _ABIN32 && _MIPS_SIM == _ABIN32) \
|| (defined _ABI64 && _MIPS_SIM == _ABI64)
#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
asm (SECTION_OP "\n\
.set noreorder\n\
bal 1f\n\
nop\n\
1: .set reorder\n\
.cpsetup $31, $2, 1b\n\
jal " USER_LABEL_PREFIX #FUNC "\n\
" TEXT_SECTION_ASM_OP);
#endif