From cd7159e7be73451befedce2e9dfd9f6a4c3b21f0 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 17 Sep 2015 07:20:43 +0000 Subject: new dlstart stage-2 chaining for mips --- arch/mips/reloc.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'arch/mips') diff --git a/arch/mips/reloc.h b/arch/mips/reloc.h index 8aa02852..9b40e3da 100644 --- a/arch/mips/reloc.h +++ b/arch/mips/reloc.h @@ -29,3 +29,18 @@ #define CRTJMP(pc,sp) __asm__ __volatile__( \ "move $sp,%1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym "\n" \ + ".set push \n" \ + ".set noreorder \n" \ + " bal 1f \n" \ + " nop \n" \ + " .gpword . \n" \ + " .gpword " #sym " \n" \ + "1: lw %0, ($ra) \n" \ + " subu %0, $ra, %0 \n" \ + " lw $ra, 4($ra) \n" \ + " addu %0, %0, $ra \n" \ + ".set pop \n" \ + : "=r"(*(fp)) : : "memory", "ra" ) -- cgit v1.2.1