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