diff options
| author | miod <> | 2014-04-17 18:16:45 +0000 |
|---|---|---|
| committer | miod <> | 2014-04-17 18:16:45 +0000 |
| commit | 777aa5b3f157309dd7bae673d3f2ae8f37e71457 (patch) | |
| tree | 90883ba640e038606eee09fb5c784c3df7903a8e /src/lib/libcrypto/sparccpuid.S | |
| parent | 22bab90c92ee62bbe16d73084a853233fc368a8e (diff) | |
| download | openbsd-777aa5b3f157309dd7bae673d3f2ae8f37e71457.tar.gz openbsd-777aa5b3f157309dd7bae673d3f2ae8f37e71457.tar.bz2 openbsd-777aa5b3f157309dd7bae673d3f2ae8f37e71457.zip | |
Ok, there was a need for OPENSSL_cleanse() instead of bzero() to prevent
supposedly smart compilers from optimizing memory cleanups away. Understood.
Ok, in case of an hypothetically super smart compiler, OPENSSL_cleanse() had
to be convoluted enough for the compiler not to recognize that this was
actually bzero() in disguise. Understood.
But then why there had been optimized assembler versions of OPENSSL_cleanse()
is beyond me. Did someone not trust the C obfuscation?
Diffstat (limited to 'src/lib/libcrypto/sparccpuid.S')
| -rw-r--r-- | src/lib/libcrypto/sparccpuid.S | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/lib/libcrypto/sparccpuid.S b/src/lib/libcrypto/sparccpuid.S index 0cc247e489..d8b44af2f0 100644 --- a/src/lib/libcrypto/sparccpuid.S +++ b/src/lib/libcrypto/sparccpuid.S | |||
| @@ -314,89 +314,6 @@ _sparcv9_fmadd_probe: | |||
| 314 | .type _sparcv9_fmadd_probe,#function | 314 | .type _sparcv9_fmadd_probe,#function |
| 315 | .size _sparcv9_fmadd_probe,.-_sparcv9_fmadd_probe | 315 | .size _sparcv9_fmadd_probe,.-_sparcv9_fmadd_probe |
| 316 | 316 | ||
| 317 | .global OPENSSL_cleanse | ||
| 318 | .align 32 | ||
| 319 | OPENSSL_cleanse: | ||
| 320 | cmp %o1,14 | ||
| 321 | nop | ||
| 322 | #ifdef ABI64 | ||
| 323 | bgu %xcc,.Lot | ||
| 324 | #else | ||
| 325 | bgu .Lot | ||
| 326 | #endif | ||
| 327 | cmp %o1,0 | ||
| 328 | bne .Little | ||
| 329 | nop | ||
| 330 | retl | ||
| 331 | nop | ||
| 332 | |||
| 333 | .Little: | ||
| 334 | stb %g0,[%o0] | ||
| 335 | subcc %o1,1,%o1 | ||
| 336 | bnz .Little | ||
| 337 | add %o0,1,%o0 | ||
| 338 | retl | ||
| 339 | nop | ||
| 340 | .align 32 | ||
| 341 | .Lot: | ||
| 342 | #ifndef ABI64 | ||
| 343 | subcc %g0,1,%g1 | ||
| 344 | ! see above for explanation | ||
| 345 | .word 0x83408000 !rd %ccr,%g1 | ||
| 346 | cmp %g1,0x99 | ||
| 347 | bne .v8lot | ||
| 348 | nop | ||
| 349 | #endif | ||
| 350 | |||
| 351 | .v9lot: andcc %o0,7,%g0 | ||
| 352 | bz .v9aligned | ||
| 353 | nop | ||
| 354 | stb %g0,[%o0] | ||
| 355 | sub %o1,1,%o1 | ||
| 356 | ba .v9lot | ||
| 357 | add %o0,1,%o0 | ||
| 358 | .align 16,0x01000000 | ||
| 359 | .v9aligned: | ||
| 360 | .word 0xc0720000 !stx %g0,[%o0] | ||
| 361 | sub %o1,8,%o1 | ||
| 362 | andcc %o1,-8,%g0 | ||
| 363 | #ifdef ABI64 | ||
| 364 | .word 0x126ffffd !bnz %xcc,.v9aligned | ||
| 365 | #else | ||
| 366 | .word 0x124ffffd !bnz %icc,.v9aligned | ||
| 367 | #endif | ||
| 368 | add %o0,8,%o0 | ||
| 369 | |||
| 370 | cmp %o1,0 | ||
| 371 | bne .Little | ||
| 372 | nop | ||
| 373 | retl | ||
| 374 | nop | ||
| 375 | #ifndef ABI64 | ||
| 376 | .v8lot: andcc %o0,3,%g0 | ||
| 377 | bz .v8aligned | ||
| 378 | nop | ||
| 379 | stb %g0,[%o0] | ||
| 380 | sub %o1,1,%o1 | ||
| 381 | ba .v8lot | ||
| 382 | add %o0,1,%o0 | ||
| 383 | nop | ||
| 384 | .v8aligned: | ||
| 385 | st %g0,[%o0] | ||
| 386 | sub %o1,4,%o1 | ||
| 387 | andcc %o1,-4,%g0 | ||
| 388 | bnz .v8aligned | ||
| 389 | add %o0,4,%o0 | ||
| 390 | |||
| 391 | cmp %o1,0 | ||
| 392 | bne .Little | ||
| 393 | nop | ||
| 394 | retl | ||
| 395 | nop | ||
| 396 | #endif | ||
| 397 | .type OPENSSL_cleanse,#function | ||
| 398 | .size OPENSSL_cleanse,.-OPENSSL_cleanse | ||
| 399 | |||
| 400 | .section ".init",#alloc,#execinstr | 317 | .section ".init",#alloc,#execinstr |
| 401 | call OPENSSL_cpuid_setup | 318 | call OPENSSL_cpuid_setup |
| 402 | nop | 319 | nop |
