如何做到对LinuxPPC POWER7或更高的运行时检查?(How to do a runtime

2019-10-16 22:18发布

我可以检查在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时能量8出来,这将打破支票。

这将如何扩展到包括了linuxppc的支持呢? 我能想象可能有一些指令,可以被使用,所以当时如果没有什么更好的方式是可以接受的指着我(即:我编写了一个汇编块,如果我知道使用什么)。

Answer 1:

mfpvr汇编指令可以被用来获取处理器版本。 当然,这将有可能打破更高的处理器,除非IBM遵循其处理器版本的设置模式,但它是一个简单的解决方案。

注:mfpvr是导师只,但LinuxPPC模拟它。

另一种解决方案是检查/proc/cpuinfo (非常乏味,虽然)。 这会给你的CPU的一个字符串表示,还有PVR。

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

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

我希望这有帮助



Answer 2:

之所以能够通过检查ELF AUX标题这样做,因为这里讨论:

程序化的方式找到共享库代码ELF AUX标题(或envp)?



文章来源: How to do a runtime check for power7 or greater on LinuxPPC?
标签: linux powerpc