1570af302Sopenharmony_cistatic inline uintptr_t __get_tp() 2570af302Sopenharmony_ci{ 3570af302Sopenharmony_ci#if __mips_isa_rev < 2 4570af302Sopenharmony_ci register uintptr_t tp __asm__("$3"); 5570af302Sopenharmony_ci __asm__ (".word 0x7c03e83b" : "=r" (tp) ); 6570af302Sopenharmony_ci#else 7570af302Sopenharmony_ci uintptr_t tp; 8570af302Sopenharmony_ci __asm__ ("rdhwr %0, $29" : "=r" (tp) ); 9570af302Sopenharmony_ci#endif 10570af302Sopenharmony_ci return tp; 11570af302Sopenharmony_ci} 12570af302Sopenharmony_ci 13570af302Sopenharmony_ci#define TLS_ABOVE_TP 14570af302Sopenharmony_ci#define GAP_ABOVE_TP 0 15570af302Sopenharmony_ci 16570af302Sopenharmony_ci#define TP_OFFSET 0x7000 17570af302Sopenharmony_ci#define DTP_OFFSET 0x8000 18570af302Sopenharmony_ci 19570af302Sopenharmony_ci#define MC_PC pc 20