Update _Py_ThreadId() to support RISC-V
// Both GCC and Clang have supported __builtin_thread_pointer
// for s390 from long time ago.
tid = (uintptr_t)__builtin_thread_pointer();
+#elif defined(__riscv)
+ #if defined(__clang__) && _Py__has_builtin(__builtin_thread_pointer)
+ tid = (uintptr_t)__builtin_thread_pointer();
+ #else
+ // tp is Thread Pointer provided by the RISC-V ABI.
+ __asm__ ("mv %0, tp" : "=r" (tid));
+ #endif
#else
# error "define _Py_ThreadId for this platform"
#endif