Module Name: src Committed By: matt Date: Sun Jun 30 08:00:35 UTC 2013
Modified Files: src/lib/csu/arch/mips: crtbegin.h crti.S crtn.S Log Message: For O32, don't save $gp on the stack, save $s0 instead and just keep $gp in $s0. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/lib/csu/arch/mips/crtbegin.h cvs rdiff -u -r1.1 -r1.2 src/lib/csu/arch/mips/crti.S \ src/lib/csu/arch/mips/crtn.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/csu/arch/mips/crtbegin.h diff -u src/lib/csu/arch/mips/crtbegin.h:1.2 src/lib/csu/arch/mips/crtbegin.h:1.3 --- src/lib/csu/arch/mips/crtbegin.h:1.2 Tue Jun 25 16:51:14 2013 +++ src/lib/csu/arch/mips/crtbegin.h Sun Jun 30 08:00:34 2013 @@ -32,8 +32,7 @@ __asm( "\n\t" #ifdef __mips_o32 ".set noreorder" "\n\t" ".set nomacro" "\n\t" - "lw $28,16($sp)" "\n\t" - "nop" "\n\t" + "move $28,$16" "\n\t" "lw $25,%got(__do_global_ctors_aux)($28)" "\n\t" "nop" "\n\t" "addiu $25,$25,%lo(__do_global_ctors_aux)" "\n\t" @@ -52,8 +51,7 @@ __asm( "\n\t" #ifdef __mips_o32 ".set noreorder" "\n\t" ".set nomacro" "\n\t" - "lw $28,16($sp)" "\n\t" - "nop" "\n\t" + "move $28,$16" "\n\t" "lw $25,%got(__do_global_dtors_aux)($28)" "\n\t" "nop" "\n\t" "addiu $25,$25,%lo(__do_global_dtors_aux)" "\n\t" Index: src/lib/csu/arch/mips/crti.S diff -u src/lib/csu/arch/mips/crti.S:1.1 src/lib/csu/arch/mips/crti.S:1.2 --- src/lib/csu/arch/mips/crti.S:1.1 Sat Jun 22 02:37:09 2013 +++ src/lib/csu/arch/mips/crti.S Sun Jun 30 08:00:34 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: crti.S,v 1.1 2013/06/22 02:37:09 matt Exp $ */ +/* $NetBSD: crti.S,v 1.2 2013/06/30 08:00:34 matt Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include <mips/asm.h> -RCSID("$NetBSD: crti.S,v 1.1 2013/06/22 02:37:09 matt Exp $") +RCSID("$NetBSD: crti.S,v 1.2 2013/06/30 08:00:34 matt Exp $") #include "sysident.S" @@ -39,16 +39,22 @@ RCSID("$NetBSD: crti.S,v 1.1 2013/06/22 NESTED_NOPROFILE(_init, CALLFRAME_SIZ, ra) SETUP_GP PTR_SUBU sp, sp, CALLFRAME_SIZ # allocate stack frame - SAVE_GP(CALLFRAME_GP) - SETUP_GP64(CALLFRAME_GP, _init) REG_S ra, CALLFRAME_RA(sp) # save RA +#ifdef __mips_o32 + REG_S s0, CALLFRAME_S0(sp) # save s0 + move s0, gp +#endif + SETUP_GP64(CALLFRAME_GP, _init) END(_init) .section ".fini", "ax", @progbits NESTED_NOPROFILE(_fini, CALLFRAME_SIZ, ra) SETUP_GP PTR_SUBU sp, sp, CALLFRAME_SIZ # allocate stack frame - SAVE_GP(CALLFRAME_GP) - SETUP_GP64(CALLFRAME_GP, _fini) REG_S ra, CALLFRAME_RA(sp) # save RA +#ifdef __mips_o32 + REG_S s0, CALLFRAME_S0(sp) # save s0 + move s0, gp +#endif + SETUP_GP64(CALLFRAME_GP, _fini) END(_fini) Index: src/lib/csu/arch/mips/crtn.S diff -u src/lib/csu/arch/mips/crtn.S:1.1 src/lib/csu/arch/mips/crtn.S:1.2 --- src/lib/csu/arch/mips/crtn.S:1.1 Sat Jun 22 02:37:09 2013 +++ src/lib/csu/arch/mips/crtn.S Sun Jun 30 08:00:34 2013 @@ -29,16 +29,24 @@ #include <mips/asm.h> -RCSID("$NetBSD: crtn.S,v 1.1 2013/06/22 02:37:09 matt Exp $") +RCSID("$NetBSD: crtn.S,v 1.2 2013/06/30 08:00:34 matt Exp $") .section ".init", "ax", @progbits - RESTORE_GP64 REG_L ra, CALLFRAME_RA(sp) +#if defined(__mips_o32) || defined(__mips_o64) + REG_L s0, CALLFRAME_S0(sp) +#else + REG_L gp, CALLFRAME_GP(sp) +#endif PTR_ADDU sp, sp, CALLFRAME_SIZ jr ra .section ".fini", "ax", @progbits - RESTORE_GP64 REG_L ra, CALLFRAME_RA(sp) +#ifdef __mips_o32 + REG_L s0, CALLFRAME_S0(sp) +#else + REG_L gp, CALLFRAME_GP(sp) +#endif PTR_ADDU sp, sp, CALLFRAME_SIZ jr ra