X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=crc%2Fcrc32c-intel.c;h=6e810a28f93608dfafcaac4bb6dec03bea526554;hp=8a6e6dcefb749b41ed5ecddb7035ae6a8c247adf;hb=58dc28f4e56cba465cc56b9f81065862b1e98548;hpb=e3aaafc4e902a0f78b8ee4d4bc85f8edac6e09d2 diff --git a/crc/crc32c-intel.c b/crc/crc32c-intel.c index 8a6e6dce..6e810a28 100644 --- a/crc/crc32c-intel.c +++ b/crc/crc32c-intel.c @@ -1,10 +1,3 @@ -#include -#include -#include -#include -#include -#include -#include #include "crc32c.h" /* @@ -18,7 +11,7 @@ * Volume 2A: Instruction Set Reference, A-M */ -int crc32c_intel_available = 0; +bool crc32c_intel_available = false; #ifdef ARCH_HAVE_SSE4_2 @@ -30,7 +23,7 @@ int crc32c_intel_available = 0; #define SCALE_F 4 #endif -static int crc32c_probed; +static bool crc32c_probed; static uint32_t crc32c_intel_le_hw_byte(uint32_t crc, unsigned char const *data, unsigned long length) @@ -78,33 +71,17 @@ uint32_t crc32c_intel(unsigned char const *data, unsigned long length) return crc; } -static void do_cpuid(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, - unsigned int *edx) -{ - int id = *eax; - - asm("movl %4, %%eax;" - "cpuid;" - "movl %%eax, %0;" - "movl %%ebx, %1;" - "movl %%ecx, %2;" - "movl %%edx, %3;" - : "=r" (*eax), "=r" (*ebx), "=r" (*ecx), "=r" (*edx) - : "r" (id) - : "eax", "ebx", "ecx", "edx"); -} - void crc32c_intel_probe(void) { if (!crc32c_probed) { - unsigned int eax, ebx, ecx, edx; + unsigned int eax, ebx, ecx = 0, edx; eax = 1; do_cpuid(&eax, &ebx, &ecx, &edx); crc32c_intel_available = (ecx & (1 << 20)) != 0; - crc32c_probed = 1; + crc32c_probed = true; } } -#endif /* ARCH_HAVE_SSE */ +#endif /* ARCH_HAVE_SSE4_2 */