我可以在AIX上检查power7 +,例如:
inline bool ossPower7orLater( )
{
#if defined _AIX
if ( !__power_set( POWER_6 | POWER_5 | POWER_4 ) )
{
return true ;
}
else
#endif
return false ;
}
使用systemcfg.h中的宏。这里使用__power_set()
宏代替__power_7()
,以避免编写power7检查,以便在power8发布时中断。
如何扩展以包括对LinuxPPC的支持?我可以想象可能会有一些指令可以使用,所以如果没有什么比这更好的话可以接受(例如:如果我知道要使用什么,我可以编写一个 asm 块)。 / p>
答案 0 :(得分:1)
mfpvr
asm指令可用于获取处理器版本。当然,除非IBM遵循其处理器版本控制的固定模式,否则这可能会破坏后来的处理器,但这是一个简单的解决方案。
注意:mfpvr仅限主管,但LinuxPPC会模拟它。
另一个解决方案是检查/proc/cpuinfo
(非常繁琐)。这将为您提供CPU的字符串表示以及PVR。
我在网上找到的一个例子:
processor : 0
cpu : POWER7 (architected), altivec supported
clock : 3550.000000MHz
revision : 2.0 (pvr 003f 0200)
我希望这会有所帮助
答案 1 :(得分:-1)
能够通过检查ELF AUX标头来完成此操作:
programatic way to find ELF aux header (or envp) in shared library code?