Make OPENSSL_rdtsc universally available.
authorPauli <paul.dale@oracle.com>
Mon, 5 Feb 2018 21:16:26 +0000 (07:16 +1000)
committerPauli <paul.dale@oracle.com>
Wed, 7 Feb 2018 00:08:15 +0000 (10:08 +1000)
If such a timer/counter register is not available, the return value is always
zero.  This matches the assembly implementations' behaviour.

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5231)

crypto/cryptlib.c
include/internal/cryptlib.h

index a4f2fb8..a4d96d8 100644 (file)
@@ -355,4 +355,12 @@ int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len)
 
     return x;
 }
 
     return x;
 }
+
+/*
+ * For systems that don't provide an instruction counter register or equivalent.
+ */
+uint32_t OPENSSL_rdtsc(void)
+{
+    return 0;
+}
 #endif
 #endif
index 25ccdb1..8a96de9 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -94,9 +94,7 @@ FILE *openssl_fopen(const char *filename, const char *mode);
 void *openssl_fopen(const char *filename, const char *mode);
 # endif
 
 void *openssl_fopen(const char *filename, const char *mode);
 # endif
 
-#ifdef OPENSSL_CPUID_OBJ
-uint32_t OPENSSL_rdtsc();
-#endif
+uint32_t OPENSSL_rdtsc(void);
 
 #ifdef  __cplusplus
 }
 
 #ifdef  __cplusplus
 }