我有一个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
答案 0 :(得分:2)
我不清楚你真正想做什么。
但是如果你想要线程指针,r13是ppc64和ppc64le上的正确寄存器,而r2是ppc的正确寄存器。 您仍然需要注意如何访问线程局部存储中的字段,因为它们是特定于ABI的。
来自PPC64 ELF V2 ABI的第3.7.2章将为您提供有关如何访问TLS中某些字段的更多详细信息。 如果您更喜欢阅读一些代码,那么this file就是魔法真正发生的部分。