summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ldso/ldso/mips/dl-startup.h5
-rw-r--r--ldso/ldso/mips/dl-sysdep.h5
2 files changed, 10 insertions, 0 deletions
diff --git a/ldso/ldso/mips/dl-startup.h b/ldso/ldso/mips/dl-startup.h
index 4d9918dc4..0cab7be32 100644
--- a/ldso/ldso/mips/dl-startup.h
+++ b/ldso/ldso/mips/dl-startup.h
@@ -37,6 +37,7 @@ __asm__(""
#if _MIPS_SIM == _MIPS_SIM_ABI32
" subu $29, 16\n"
#endif
+# if !defined __mips_isa_rev || __mips_isa_rev < 6
#if _MIPS_SIM == _MIPS_SIM_ABI64
" dla $8, .coff\n"
#else /* O32 || N32 */
@@ -44,6 +45,10 @@ __asm__(""
#endif /* O32 || N32 */
" bltzal $8, .coff\n"
".coff:\n"
+# else
+ ".coff:\n"
+ " lapc $31, .coff\n"
+# endif
#if _MIPS_SIM == _MIPS_SIM_ABI64
" dsubu $8, $31, $8\n"
" dla $25, _dl_start\n"
diff --git a/ldso/ldso/mips/dl-sysdep.h b/ldso/ldso/mips/dl-sysdep.h
index 6041245d0..b2caa7fa0 100644
--- a/ldso/ldso/mips/dl-sysdep.h
+++ b/ldso/ldso/mips/dl-sysdep.h
@@ -225,10 +225,15 @@ elf_machine_load_address (void)
{
ElfW(Addr) addr;
__asm__ (" .set noreorder\n"
+# if !defined __mips_isa_rev || __mips_isa_rev < 6
" " STRINGXP (PTR_LA) " %0, 0f\n"
" bltzal $0, 0f\n"
" nop\n"
"0: " STRINGXP (PTR_SUBU) " %0, $31, %0\n"
+#else
+ "0: lapc $31, 0\n"
+ " " STRINGXP (PTR_SUBU) " %0, $31, %0\n"
+#endif
" .set reorder\n"
: "=r" (addr)
: /* No inputs */