diff options
Diffstat (limited to 'src/lib/libcrypto/sha/asm/sha1-586.pl')
-rw-r--r-- | src/lib/libcrypto/sha/asm/sha1-586.pl | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/src/lib/libcrypto/sha/asm/sha1-586.pl b/src/lib/libcrypto/sha/asm/sha1-586.pl index 1de5e2650e..5928e083c1 100644 --- a/src/lib/libcrypto/sha/asm/sha1-586.pl +++ b/src/lib/libcrypto/sha/asm/sha1-586.pl | |||
@@ -295,11 +295,9 @@ if ($xmm) { | |||
295 | &static_label("avx_shortcut") if ($ymm); | 295 | &static_label("avx_shortcut") if ($ymm); |
296 | &static_label("K_XX_XX"); | 296 | &static_label("K_XX_XX"); |
297 | 297 | ||
298 | &call (&label("pic_point")); # make it PIC! | 298 | &picsetup($tmp1); |
299 | &set_label("pic_point"); | 299 | &picsymbol($T, "OPENSSL_ia32cap_P", $tmp1); |
300 | &blindpop($tmp1); | 300 | &picsymbol($tmp1, &label("K_XX_XX"), $tmp1); |
301 | &picmeup($T,"OPENSSL_ia32cap_P",$tmp1,&label("pic_point")); | ||
302 | &lea ($tmp1,&DWP(&label("K_XX_XX")."-".&label("pic_point"),$tmp1)); | ||
303 | 301 | ||
304 | &mov ($A,&DWP(0,$T)); | 302 | &mov ($A,&DWP(0,$T)); |
305 | &mov ($D,&DWP(4,$T)); | 303 | &mov ($D,&DWP(4,$T)); |
@@ -419,10 +417,9 @@ my $_rol=sub { &rol(@_) }; | |||
419 | my $_ror=sub { &ror(@_) }; | 417 | my $_ror=sub { &ror(@_) }; |
420 | 418 | ||
421 | &function_begin("_sha1_block_data_order_ssse3"); | 419 | &function_begin("_sha1_block_data_order_ssse3"); |
422 | &call (&label("pic_point")); # make it PIC! | 420 | &picsetup($tmp1); |
423 | &set_label("pic_point"); | 421 | &picsymbol($tmp1, &label("K_XX_XX"), $tmp1); |
424 | &blindpop($tmp1); | 422 | |
425 | &lea ($tmp1,&DWP(&label("K_XX_XX")."-".&label("pic_point"),$tmp1)); | ||
426 | &set_label("ssse3_shortcut"); | 423 | &set_label("ssse3_shortcut"); |
427 | 424 | ||
428 | &movdqa (@X[3],&QWP(0,$tmp1)); # K_00_19 | 425 | &movdqa (@X[3],&QWP(0,$tmp1)); # K_00_19 |
@@ -861,10 +858,9 @@ my $_rol=sub { &shld(@_[0],@_) }; | |||
861 | my $_ror=sub { &shrd(@_[0],@_) }; | 858 | my $_ror=sub { &shrd(@_[0],@_) }; |
862 | 859 | ||
863 | &function_begin("_sha1_block_data_order_avx"); | 860 | &function_begin("_sha1_block_data_order_avx"); |
864 | &call (&label("pic_point")); # make it PIC! | 861 | &picsetup($tmp1); |
865 | &set_label("pic_point"); | 862 | &picsymbol($tmp1, &label("K_XX_XX"), $tmp1); |
866 | &blindpop($tmp1); | 863 | |
867 | &lea ($tmp1,&DWP(&label("K_XX_XX")."-".&label("pic_point"),$tmp1)); | ||
868 | &set_label("avx_shortcut"); | 864 | &set_label("avx_shortcut"); |
869 | &vzeroall(); | 865 | &vzeroall(); |
870 | 866 | ||
@@ -1213,13 +1209,15 @@ sub Xtail_avx() | |||
1213 | &mov (&DWP(16,@T[1]),$E); | 1209 | &mov (&DWP(16,@T[1]),$E); |
1214 | &function_end("_sha1_block_data_order_avx"); | 1210 | &function_end("_sha1_block_data_order_avx"); |
1215 | } | 1211 | } |
1212 | |||
1213 | &rodataseg(); | ||
1216 | &set_label("K_XX_XX",64); | 1214 | &set_label("K_XX_XX",64); |
1217 | &data_word(0x5a827999,0x5a827999,0x5a827999,0x5a827999); # K_00_19 | 1215 | &data_word(0x5a827999,0x5a827999,0x5a827999,0x5a827999); # K_00_19 |
1218 | &data_word(0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1); # K_20_39 | 1216 | &data_word(0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1); # K_20_39 |
1219 | &data_word(0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc); # K_40_59 | 1217 | &data_word(0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc); # K_40_59 |
1220 | &data_word(0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6); # K_60_79 | 1218 | &data_word(0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6); # K_60_79 |
1221 | &data_word(0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f); # pbswap mask | 1219 | &data_word(0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f); # pbswap mask |
1220 | &previous(); | ||
1222 | } | 1221 | } |
1223 | &asciz("SHA1 block transform for x86, CRYPTOGAMS by <appro\@openssl.org>"); | ||
1224 | 1222 | ||
1225 | &asm_finish(); | 1223 | &asm_finish(); |