diff options
| author | christos <christos@NetBSD.org> | 2019-01-06 22:20:50 +0000 |
|---|---|---|
| committer | christos <christos@NetBSD.org> | 2019-01-06 22:20:50 +0000 |
| commit | c2c50f43beee6e5f5b29f22d630a4f17e7a6628c (patch) | |
| tree | bf6a323b66e720a58dd02b19da18221a0d5cd21e /crypto | |
| parent | ad970ad8929ea5c87b950a234da4d635518f3e00 (diff) | |
PR/53838: Scole Mail: OPENSSL_rdtsc() is reading a time counter
for randomness, and the powerpc code uses mftbu and mftb for access.
The 601 is different than other powerpcs. It doesn't have a time
base register (TBR), but a real time clock (RTC) so it needs to
use different calls like mfrtcu/mfrtcl instead.
Diffstat (limited to 'crypto')
| -rwxr-xr-x | crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl b/crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl index 9d1cada4dc4..cd334346d26 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl @@ -132,6 +132,17 @@ $code.=<<___ if ($flavour =~ /64/); mftb r3 ___ $code.=<<___ if ($flavour !~ /64/); + mfspr r0,287 + srwi r0,r0,0x10 + cmplwi r0,0x1 + bgt .Loop_rdtsc +.Loop_rdtsc_601: + mfrtcu r5 + mfrtcl r3 + mfrtcu r4 + cmplw r4,r5 + bne .Loop_rdtsc_601 + blr Loop_rdtsc: mftbu r5 mftb r3 |
