1*c9945492SAndroid Build Coastguard Worker #if __mips_isa_rev >= 6 2*c9945492SAndroid Build Coastguard Worker #define ISA_SUFFIX "r6" 3*c9945492SAndroid Build Coastguard Worker #else 4*c9945492SAndroid Build Coastguard Worker #define ISA_SUFFIX "" 5*c9945492SAndroid Build Coastguard Worker #endif 6*c9945492SAndroid Build Coastguard Worker 7*c9945492SAndroid Build Coastguard Worker #if __BYTE_ORDER == __LITTLE_ENDIAN 8*c9945492SAndroid Build Coastguard Worker #define ENDIAN_SUFFIX "el" 9*c9945492SAndroid Build Coastguard Worker #else 10*c9945492SAndroid Build Coastguard Worker #define ENDIAN_SUFFIX "" 11*c9945492SAndroid Build Coastguard Worker #endif 12*c9945492SAndroid Build Coastguard Worker 13*c9945492SAndroid Build Coastguard Worker #ifdef __mips_soft_float 14*c9945492SAndroid Build Coastguard Worker #define FP_SUFFIX "-sf" 15*c9945492SAndroid Build Coastguard Worker #else 16*c9945492SAndroid Build Coastguard Worker #define FP_SUFFIX "" 17*c9945492SAndroid Build Coastguard Worker #endif 18*c9945492SAndroid Build Coastguard Worker 19*c9945492SAndroid Build Coastguard Worker #define LDSO_ARCH "mips" ISA_SUFFIX ENDIAN_SUFFIX FP_SUFFIX 20*c9945492SAndroid Build Coastguard Worker 21*c9945492SAndroid Build Coastguard Worker #define TPOFF_K (-0x7000) 22*c9945492SAndroid Build Coastguard Worker 23*c9945492SAndroid Build Coastguard Worker #define REL_SYM_OR_REL R_MIPS_REL32 24*c9945492SAndroid Build Coastguard Worker #define REL_PLT R_MIPS_JUMP_SLOT 25*c9945492SAndroid Build Coastguard Worker #define REL_COPY R_MIPS_COPY 26*c9945492SAndroid Build Coastguard Worker #define REL_DTPMOD R_MIPS_TLS_DTPMOD32 27*c9945492SAndroid Build Coastguard Worker #define REL_DTPOFF R_MIPS_TLS_DTPREL32 28*c9945492SAndroid Build Coastguard Worker #define REL_TPOFF R_MIPS_TLS_TPREL32 29*c9945492SAndroid Build Coastguard Worker 30*c9945492SAndroid Build Coastguard Worker #define NEED_MIPS_GOT_RELOCS 1 31*c9945492SAndroid Build Coastguard Worker #define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP 32*c9945492SAndroid Build Coastguard Worker #define DT_DEBUG_INDIRECT_REL DT_MIPS_RLD_MAP_REL 33*c9945492SAndroid Build Coastguard Worker #define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT)) 34*c9945492SAndroid Build Coastguard Worker 35*c9945492SAndroid Build Coastguard Worker #define CRTJMP(pc,sp) __asm__ __volatile__( \ 36*c9945492SAndroid Build Coastguard Worker "move $sp,%1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) 37*c9945492SAndroid Build Coastguard Worker 38*c9945492SAndroid Build Coastguard Worker #define GETFUNCSYM(fp, sym, got) __asm__ ( \ 39*c9945492SAndroid Build Coastguard Worker ".hidden " #sym "\n" \ 40*c9945492SAndroid Build Coastguard Worker ".set push \n" \ 41*c9945492SAndroid Build Coastguard Worker ".set noreorder \n" \ 42*c9945492SAndroid Build Coastguard Worker " bal 1f \n" \ 43*c9945492SAndroid Build Coastguard Worker " nop \n" \ 44*c9945492SAndroid Build Coastguard Worker " .gpword . \n" \ 45*c9945492SAndroid Build Coastguard Worker " .gpword " #sym " \n" \ 46*c9945492SAndroid Build Coastguard Worker "1: lw %0, ($ra) \n" \ 47*c9945492SAndroid Build Coastguard Worker " subu %0, $ra, %0 \n" \ 48*c9945492SAndroid Build Coastguard Worker " lw $ra, 4($ra) \n" \ 49*c9945492SAndroid Build Coastguard Worker " addu %0, %0, $ra \n" \ 50*c9945492SAndroid Build Coastguard Worker ".set pop \n" \ 51*c9945492SAndroid Build Coastguard Worker : "=r"(*(fp)) : : "memory", "ra" ) 52