1

我可以通过以下方式检查 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块)。

4

2 回答 2

1

asm 指令可mfpvr用于获取处理器版本。当然,除非 IBM 遵循其处理器版本控制的固定模式,否则这可能会在以后的处理器上中断,但这是一个简单的解决方案。

注意:mfpvr 是仅主管,但 LinuxPPC 模拟它。

另一种解决方案是检查/proc/cpuinfo(虽然非常乏味)。这将为您提供 CPU 和 PVR 的字符串表示形式。

我在网上找到的一个例子:

processor : 0
cpu             : POWER7 (architected), altivec supported
clock           : 3550.000000MHz
revision        : 2.0 (pvr 003f 0200)

我希望这有帮助

于 2012-07-20T14:02:18.947 回答
-1

可以通过检查 ELF AUX 标头来做到这一点,如下所述:

在共享库代码中查找 ELF aux 标头(或 envp)的编程方式?

于 2012-10-29T16:23:11.337 回答