Changeset View
Changeset View
Standalone View
Standalone View
src/compat/cpuid.h
- This file was added.
// Copyright (c) 2017-2019 The Bitcoin Core developers | |||||
// Distributed under the MIT software license, see the accompanying | |||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | |||||
#ifndef BITCOIN_COMPAT_CPUID_H | |||||
#define BITCOIN_COMPAT_CPUID_H | |||||
#if defined(__x86_64__) || defined(__amd64__) || defined(__i386__) | |||||
#define HAVE_GETCPUID | |||||
#include <cpuid.h> | |||||
// We can't use cpuid.h's __get_cpuid as it does not support subleafs. | |||||
void static inline GetCPUID(uint32_t leaf, uint32_t subleaf, uint32_t &a, | |||||
uint32_t &b, uint32_t &c, uint32_t &d) { | |||||
#ifdef __GNUC__ | |||||
__cpuid_count(leaf, subleaf, a, b, c, d); | |||||
#else | |||||
__asm__("cpuid" | |||||
: "=a"(a), "=b"(b), "=c"(c), "=d"(d) | |||||
: "0"(leaf), "2"(subleaf)); | |||||
#endif | |||||
} | |||||
#endif // defined(__x86_64__) || defined(__amd64__) || defined(__i386__) | |||||
#endif // BITCOIN_COMPAT_CPUID_H |