diff options
Diffstat (limited to 'src/Crypto/jitterentropy-base-user.h')
-rw-r--r-- | src/Crypto/jitterentropy-base-user.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/Crypto/jitterentropy-base-user.h b/src/Crypto/jitterentropy-base-user.h index bfb3a605..aaefb41a 100644 --- a/src/Crypto/jitterentropy-base-user.h +++ b/src/Crypto/jitterentropy-base-user.h @@ -70,11 +70,23 @@ typedef int32 ssize_t; static VC_INLINE void jent_get_nstime(uint64 *out) { - *out = __rdtsc();; +#ifdef _M_ARM64 + LARGE_INTEGER v = { 0 }; +#ifdef TC_WINDOWS_DRIVER + v = KeQueryPerformanceCounter(NULL); +#else + QueryPerformanceCounter(&v); +#endif + * out = v.QuadPart; +#else + *out = __rdtsc(); +#endif } #else +#include <sys/types.h> + #if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X64 /* taken from Linux kernel */ |