如何在LinuxPPC上对power7或更高版本进行运行时检查?

时间:2012-06-28 18:07:46

标签: linux powerpc

我可以在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>

2 个答案:

答案 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?