Branch data Line data Source code
# 1 : : // Copyright (c) 2017-2019 The Bitcoin Core developers
# 2 : : // Distributed under the MIT software license, see the accompanying
# 3 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
# 4 : :
# 5 : : #ifndef BITCOIN_COMPAT_CPUID_H
# 6 : : #define BITCOIN_COMPAT_CPUID_H
# 7 : :
# 8 : : #if defined(__x86_64__) || defined(__amd64__) || defined(__i386__)
# 9 : : #define HAVE_GETCPUID
# 10 : :
# 11 : : #include <cpuid.h>
# 12 : :
# 13 : : // We can't use cpuid.h's __get_cpuid as it does not support subleafs.
# 14 : : void static inline GetCPUID(uint32_t leaf, uint32_t subleaf, uint32_t& a, uint32_t& b, uint32_t& c, uint32_t& d)
# 15 : 43449 : {
# 16 : 43449 : #ifdef __GNUC__
# 17 : 43449 : __cpuid_count(leaf, subleaf, a, b, c, d);
# 18 : : #else
# 19 : : __asm__ ("cpuid" : "=a"(a), "=b"(b), "=c"(c), "=d"(d) : "0"(leaf), "2"(subleaf));
# 20 : : #endif
# 21 : 43449 : }
# 22 : :
# 23 : : #endif // defined(__x86_64__) || defined(__amd64__) || defined(__i386__)
# 24 : : #endif // BITCOIN_COMPAT_CPUID_H
|