在ppc64上等效X64_64的arch_prctl(ARCH_GET_FS,& addr)

时间:2015-09-22 13:18:22

标签: linux powerpc

我有一个X86_64代码,用于检索指向线程状态的指针:

uintptr_t addr;
arch_prctl(ARCH_GET_FS, &addr);

正如我在ABI上看到的那样,我想这就是r13的用途。我实现了以下代码,我希望它与arch_prctl的行为相同:

uintptr_t addr;
__asm__ ("\tmr %0, 13" : "=r" (addr));

这么简单吗?还有更好的方法吗?

在ppc64le机器上使用debian 8.1

1 个答案:

答案 0 :(得分:2)

我不清楚你真正想做什么。

但是如果你想要线程指针,r13是ppc64和ppc64le上的正确寄存器,而r2是ppc的正确寄存器。 您仍然需要注意如何访问线程局部存储中的字段,因为它们是特定于ABI的。

来自PPC64 ELF V2 ABI的第3.7.2章将为您提供有关如何访问TLS中某些字段的更多详细信息。 如果您更喜欢阅读一些代码,那么this file就是魔法真正发生的部分。