]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-112535: Update _Py_ThreadId() to support PowerPC (gh-112624)
authorDonghee Na <donghee.na@python.org>
Tue, 5 Dec 2023 09:03:32 +0000 (09:03 +0000)
committerGitHub <noreply@github.com>
Tue, 5 Dec 2023 09:03:32 +0000 (18:03 +0900)
Include/object.h

index 81f777ad21f2f9f113a98217f65b5ec3df56874d..dfeb43bda7d841130ee894f8235d84a31a835697 100644 (file)
@@ -261,6 +261,22 @@ _Py_ThreadId(void)
     __asm__ ("mrs %0, tpidrro_el0" : "=r" (tid));
 #elif defined(__aarch64__)
     __asm__ ("mrs %0, tpidr_el0" : "=r" (tid));
+#elif defined(__powerpc64__)
+    #if defined(__clang__) && _Py__has_builtin(__builtin_thread_pointer)
+    tid = (uintptr_t)__builtin_thread_pointer();
+    #else
+    register uintptr_t tp __asm__ ("r13");
+    __asm__("" : "=r" (tp));
+    tid = tp;
+    #endif
+#elif defined(__powerpc__)
+    #if defined(__clang__) && _Py__has_builtin(__builtin_thread_pointer)
+    tid = (uintptr_t)__builtin_thread_pointer();
+    #else
+    register uintptr_t tp __asm__ ("r2");
+    __asm__ ("" : "=r" (tp));
+    tid = tp;
+    #endif
 #else
   # error "define _Py_ThreadId for this platform"
 #endif