1*c9945492SAndroid Build Coastguard Worker #ifdef __loongarch_soft_float 2*c9945492SAndroid Build Coastguard Worker #define FP_SUFFIX "-sf" 3*c9945492SAndroid Build Coastguard Worker #elif defined __loongarch_single_float 4*c9945492SAndroid Build Coastguard Worker #define FP_SUFFIX "-sp" 5*c9945492SAndroid Build Coastguard Worker #else 6*c9945492SAndroid Build Coastguard Worker #define FP_SUFFIX "" 7*c9945492SAndroid Build Coastguard Worker #endif 8*c9945492SAndroid Build Coastguard Worker 9*c9945492SAndroid Build Coastguard Worker #define LDSO_ARCH "loongarch64" FP_SUFFIX 10*c9945492SAndroid Build Coastguard Worker 11*c9945492SAndroid Build Coastguard Worker #define TPOFF_K 0 12*c9945492SAndroid Build Coastguard Worker 13*c9945492SAndroid Build Coastguard Worker #define REL_PLT R_LARCH_JUMP_SLOT 14*c9945492SAndroid Build Coastguard Worker #define REL_COPY R_LARCH_COPY 15*c9945492SAndroid Build Coastguard Worker #define REL_DTPMOD R_LARCH_TLS_DTPMOD64 16*c9945492SAndroid Build Coastguard Worker #define REL_DTPOFF R_LARCH_TLS_DTPREL64 17*c9945492SAndroid Build Coastguard Worker #define REL_TPOFF R_LARCH_TLS_TPREL64 18*c9945492SAndroid Build Coastguard Worker #define REL_RELATIVE R_LARCH_RELATIVE 19*c9945492SAndroid Build Coastguard Worker #define REL_SYMBOLIC R_LARCH_64 20*c9945492SAndroid Build Coastguard Worker 21*c9945492SAndroid Build Coastguard Worker #define CRTJMP(pc,sp) __asm__ __volatile__( \ 22*c9945492SAndroid Build Coastguard Worker "move $sp, %1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) 23*c9945492SAndroid Build Coastguard Worker 24*c9945492SAndroid Build Coastguard Worker #define GETFUNCSYM(fp, sym, got) __asm__ ( \ 25*c9945492SAndroid Build Coastguard Worker ".hidden " #sym "\n" \ 26*c9945492SAndroid Build Coastguard Worker ".align 8 \n" \ 27*c9945492SAndroid Build Coastguard Worker " la.local $t1, "#sym" \n" \ 28*c9945492SAndroid Build Coastguard Worker " move %0, $t1 \n" \ 29*c9945492SAndroid Build Coastguard Worker : "=r"(*(fp)) : : "memory" ) 30