From 03403e3061d33048e287cf712627001e6784dcb4 Mon Sep 17 00:00:00 2001 From: Steve Ellcey Date: Mon, 5 Jan 2015 09:39:33 -0800 Subject: [PATCH] 2015-01-05 Steve Ellcey * sysdeps/mips/dl-machine.h (elf_machine_load_address): Replace bltzal with addiupc. (RTLD_START): Ditto. --- ChangeLog | 6 ++++++ sysdeps/mips/dl-machine.h | 19 ++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8482b88f8a..4aa2e4b9a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-01-05 Steve Ellcey + + * sysdeps/mips/dl-machine.h (elf_machine_load_address): Replace + bltzal with addiupc. + (RTLD_START): Ditto. + 2015-01-05 Chris Metcalf * sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h: Fix return type diff --git a/sysdeps/mips/dl-machine.h b/sysdeps/mips/dl-machine.h index a8df58efd6..d63238a4fe 100644 --- a/sysdeps/mips/dl-machine.h +++ b/sysdeps/mips/dl-machine.h @@ -30,6 +30,7 @@ #endif #include +#include #include #include @@ -143,9 +144,14 @@ elf_machine_load_address (void) #ifndef __mips16 asm (" .set noreorder\n" " " STRINGXP (PTR_LA) " %0, 0f\n" +# if __mips_isa_rev < 6 " bltzal $0, 0f\n" " nop\n" "0: " STRINGXP (PTR_SUBU) " %0, $31, %0\n" +# else + "0: addiupc $31, 0\n" + " " STRINGXP (PTR_SUBU) " %0, $31, %0\n" +# endif " .set reorder\n" : "=r" (addr) : /* No inputs */ @@ -246,6 +252,13 @@ do { \ and not just plain _start. */ #ifndef __mips16 +# if __mips_isa_rev < 6 +# define LCOFF STRINGXP(.Lcof2) +# define LOAD_31 STRINGXP(bltzal $8) "," STRINGXP(.Lcof2) +# else +# define LCOFF STRINGXP(.Lcof1) +# define LOAD_31 "addiupc $31, 0" +# endif # define RTLD_START asm (\ ".text\n\ " _RTLD_PROLOGUE(ENTRY_POINT) "\ @@ -260,9 +273,9 @@ do { \ move $4, $29\n\ " STRINGXP(PTR_SUBIU) " $29, 16\n\ \n\ - " STRINGXP(PTR_LA) " $8, .Lcoff\n\ - bltzal $8, .Lcoff\n\ -.Lcoff: " STRINGXP(PTR_SUBU) " $8, $31, $8\n\ + " STRINGXP(PTR_LA) " $8, " LCOFF "\n\ +.Lcof1: " LOAD_31 "\n\ +.Lcof2: " STRINGXP(PTR_SUBU) " $8, $31, $8\n\ \n\ " STRINGXP(PTR_LA) " $25, _dl_start\n\ " STRINGXP(PTR_ADDU) " $25, $8\n\ -- 2.43.5