📄 ax_gcc_x86_cpuid.m4
字号:
dnl @synopsis AX_GCC_X86_CPUID(OP)dnl @summary run x86 cpuid instruction OP using gcc inline assemblerdnl @category Miscdnldnl On Pentium and later x86 processors, with gcc or a compiler thatdnl has a compatible syntax for inline assembly instructions, rundnl a small program that executes the cpuid instruction withdnl input OP. This can be used to detect the CPU type.dnldnl On output, the values of the eax, ebx, ecx, and edx registersdnl are stored as hexadecimal strings as "eax:ebx:ecx:edx" indnl the cache variable ax_cv_gcc_x86_cpuid_OP.dnldnl If the cpuid instruction fails (because you are running a cross-compiler,dnl or because you are not using gcc, or because you are on a processordnl that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP is setdnl to the string "unknown".dnldnl This macro mainly exists to be used in AX_GCC_ARCHFLAG.dnldnl @version 2005-05-30dnl @license GPLWithACExceptiondnl @author Steven G. Johnson <stevenj@alum.mit.edu> and Matteo Frigo.AC_DEFUN([AX_GCC_X86_CPUID],[AC_REQUIRE([AC_PROG_CC])AC_LANG_PUSH([C])AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1, [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [ int op = $1, eax, ebx, ecx, edx; FILE *f; __asm__("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (op)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0;])], [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid], [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid], [ax_cv_gcc_x86_cpuid_$1=unknown])])AC_LANG_POP([C])])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -