• Josh Triplett's avatar
    turbostat: Use GCC's CPUID functions to support PIC · 2b92865e
    Josh Triplett authored
    turbostat uses inline assembly to call cpuid.  On 32-bit x86, on systems
    that have certain security features enabled by default that make -fPIC
    the default, this causes a build error:
    
    turbostat.c: In function ‘check_cpuid’:
    turbostat.c:1906:2: error: PIC register clobbered by ‘ebx’ in ‘asm’
      asm("cpuid" : "=a" (fms), "=c" (ecx), "=d" (edx) : "a" (1) : "ebx");
      ^
    
    GCC provides a header cpuid.h, containing a __get_cpuid function that
    works with both PIC and non-PIC.  (On PIC, it saves and restores ebx
    around the cpuid instruction.)  Use that instead.
    Signed-off-by: default avatarJosh Triplett <josh@joshtriplett.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarLen Brown <len.brown@intel.com>
    2b92865e
turbostat.c 58.8 KB