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