diff options
| author | Pieter Wuille <[email protected]> | 2019-10-27 12:52:31 -0700 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2019-11-12 14:50:44 -0800 |
| commit | 723c79666770b30cce9f962bed5ece8cc7d74580 (patch) | |
| tree | b1dbaecda34a61030ede89845bcb271fb4687277 /src/compat | |
| parent | [MOVEONLY] Move perfmon data gathering to new randomenv module (diff) | |
| download | discoin-723c79666770b30cce9f962bed5ece8cc7d74580.tar.xz discoin-723c79666770b30cce9f962bed5ece8cc7d74580.zip | |
[MOVEONLY] Move cpuid code from random & sha256 to compat/cpuid
Diffstat (limited to 'src/compat')
| -rw-r--r-- | src/compat/cpuid.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/compat/cpuid.h b/src/compat/cpuid.h new file mode 100644 index 000000000..0877ad47d --- /dev/null +++ b/src/compat/cpuid.h @@ -0,0 +1,24 @@ +// 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 |