diff options
author | Andy Polyakov <appro@openssl.org> | 2016-06-30 15:57:57 +0200 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2016-07-01 14:25:08 +0200 |
commit | f198cc43a0eca4bf1a8e7f60c51af560f4346dc8 (patch) | |
tree | 358cd4d520381d787c70c7db7ac0858d6c473be5 /crypto/des | |
parent | Windows: Recreate the $prefix variable (diff) | |
download | openssl-f198cc43a0eca4bf1a8e7f60c51af560f4346dc8.tar.xz openssl-f198cc43a0eca4bf1a8e7f60c51af560f4346dc8.zip |
SPARC assembly pack: enforce V8+ ABI constraints.
Even though it's hard to imagine, it turned out that upper half of
arguments passed to V8+ subroutine can be non-zero.
["n" pseudo-instructions, such as srln being srl in 32-bit case and
srlx in 64-bit one, were implemented in binutils 2.10. It's assumed
that Solaris assembler implemented it around same time, i.e. 2000.]
Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'crypto/des')
-rw-r--r-- | crypto/des/asm/dest4-sparcv9.pl | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/crypto/des/asm/dest4-sparcv9.pl b/crypto/des/asm/dest4-sparcv9.pl index 1d4f0d11bf..4a6e29fc53 100644 --- a/crypto/des/asm/dest4-sparcv9.pl +++ b/crypto/des/asm/dest4-sparcv9.pl @@ -106,7 +106,7 @@ $code.=<<___; des_t4_cbc_encrypt: cmp $len, 0 be,pn $::size_t_cc, .Lcbc_abort - nop + srln $len, 0, $len ! needed on v8+, "nop" on v9 ld [$ivec + 0], %f0 ! load ivec ld [$ivec + 4], %f1 @@ -207,7 +207,7 @@ des_t4_cbc_encrypt: des_t4_cbc_decrypt: cmp $len, 0 be,pn $::size_t_cc, .Lcbc_abort - nop + srln $len, 0, $len ! needed on v8+, "nop" on v9 ld [$ivec + 0], %f2 ! load ivec ld [$ivec + 4], %f3 @@ -315,7 +315,7 @@ $code.=<<___; des_t4_ede3_cbc_encrypt: cmp $len, 0 be,pn $::size_t_cc, .Lcbc_abort - nop + srln $len, 0, $len ! needed on v8+, "nop" on v9 ld [$ivec + 0], %f0 ! load ivec ld [$ivec + 4], %f1 @@ -467,7 +467,7 @@ des_t4_ede3_cbc_encrypt: des_t4_ede3_cbc_decrypt: cmp $len, 0 be,pn $::size_t_cc, .Lcbc_abort - nop + srln $len, 0, $len ! needed on v8+, "nop" on v9 ld [$ivec + 0], %f2 ! load ivec ld [$ivec + 4], %f3 |