__get_tp()1*c9945492SAndroid Build Coastguard Workerstatic inline uintptr_t __get_tp() 2*c9945492SAndroid Build Coastguard Worker { 3*c9945492SAndroid Build Coastguard Worker register uintptr_t tp __asm__("$3"); 4*c9945492SAndroid Build Coastguard Worker #if __mips_isa_rev < 2 5*c9945492SAndroid Build Coastguard Worker __asm__ (".word 0x7c03e83b" : "=r" (tp) ); 6*c9945492SAndroid Build Coastguard Worker #else 7*c9945492SAndroid Build Coastguard Worker __asm__ ("rdhwr %0, $29" : "=r" (tp) ); 8*c9945492SAndroid Build Coastguard Worker #endif 9*c9945492SAndroid Build Coastguard Worker return tp; 10*c9945492SAndroid Build Coastguard Worker } 11*c9945492SAndroid Build Coastguard Worker 12*c9945492SAndroid Build Coastguard Worker #define TLS_ABOVE_TP 13*c9945492SAndroid Build Coastguard Worker #define GAP_ABOVE_TP 0 14*c9945492SAndroid Build Coastguard Worker 15*c9945492SAndroid Build Coastguard Worker #define TP_OFFSET 0x7000 16*c9945492SAndroid Build Coastguard Worker #define DTP_OFFSET 0x8000 17*c9945492SAndroid Build Coastguard Worker 18*c9945492SAndroid Build Coastguard Worker #define MC_PC pc 19