summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Include/object.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/Include/object.h b/Include/object.h
index bd576b0..d22e5c2 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -283,6 +283,13 @@ _Py_ThreadId(void)
// 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