diff options
author | miod <> | 2023-02-01 20:45:04 +0000 |
---|---|---|
committer | miod <> | 2023-02-01 20:45:04 +0000 |
commit | dc4b2cf3e0979364f14ff89a07ffafc47435e2e7 (patch) | |
tree | 58219f5c6538172b9d00f33bf48c9a61419ec7a0 /src/lib/libcrypto/sha | |
parent | 86f42338b2994b620482c37e3d0d9fc3ba1f523b (diff) | |
download | openbsd-dc4b2cf3e0979364f14ff89a07ffafc47435e2e7.tar.gz openbsd-dc4b2cf3e0979364f14ff89a07ffafc47435e2e7.tar.bz2 openbsd-dc4b2cf3e0979364f14ff89a07ffafc47435e2e7.zip |
Move all data blocks from .text to .rodata and cleanup up and homogeneize code
responsible from getting the proper address of those blocks.
ok tb@ jsing@
Diffstat (limited to 'src/lib/libcrypto/sha')
-rw-r--r-- | src/lib/libcrypto/sha/asm/sha1-586.pl | 26 | ||||
-rw-r--r-- | src/lib/libcrypto/sha/asm/sha256-586.pl | 14 | ||||
-rw-r--r-- | src/lib/libcrypto/sha/asm/sha512-586.pl | 18 |
3 files changed, 29 insertions, 29 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(); |
diff --git a/src/lib/libcrypto/sha/asm/sha256-586.pl b/src/lib/libcrypto/sha/asm/sha256-586.pl index 928ec53123..2b05c96063 100644 --- a/src/lib/libcrypto/sha/asm/sha256-586.pl +++ b/src/lib/libcrypto/sha/asm/sha256-586.pl | |||
@@ -96,16 +96,15 @@ sub BODY_00_15() { | |||
96 | &add ($A,"esi"); # h += K256[i] | 96 | &add ($A,"esi"); # h += K256[i] |
97 | } | 97 | } |
98 | 98 | ||
99 | &static_label("K256"); | ||
99 | &function_begin("sha256_block_data_order"); | 100 | &function_begin("sha256_block_data_order"); |
100 | &mov ("esi",wparam(0)); # ctx | 101 | &mov ("esi",wparam(0)); # ctx |
101 | &mov ("edi",wparam(1)); # inp | 102 | &mov ("edi",wparam(1)); # inp |
102 | &mov ("eax",wparam(2)); # num | 103 | &mov ("eax",wparam(2)); # num |
103 | &mov ("ebx","esp"); # saved sp | 104 | &mov ("ebx","esp"); # saved sp |
104 | 105 | ||
105 | &call (&label("pic_point")); # make it PIC! | 106 | &picsetup($K256); |
106 | &set_label("pic_point"); | 107 | &picsymbol($K256, &label("K256"), $K256); |
107 | &blindpop($K256); | ||
108 | &lea ($K256,&DWP(&label("K256")."-".&label("pic_point"),$K256)); | ||
109 | 108 | ||
110 | &sub ("esp",16); | 109 | &sub ("esp",16); |
111 | &and ("esp",-64); | 110 | &and ("esp",-64); |
@@ -225,8 +224,10 @@ sub BODY_00_15() { | |||
225 | 224 | ||
226 | &mov ("esp",&DWP(12,"esp")); # restore sp | 225 | &mov ("esp",&DWP(12,"esp")); # restore sp |
227 | &function_end_A(); | 226 | &function_end_A(); |
227 | &function_end_B("sha256_block_data_order"); | ||
228 | 228 | ||
229 | &set_label("K256",64); # Yes! I keep it in the code segment! | 229 | &rodataseg(); |
230 | &set_label("K256",64); | ||
230 | &data_word(0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5); | 231 | &data_word(0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5); |
231 | &data_word(0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5); | 232 | &data_word(0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5); |
232 | &data_word(0xd807aa98,0x12835b01,0x243185be,0x550c7dc3); | 233 | &data_word(0xd807aa98,0x12835b01,0x243185be,0x550c7dc3); |
@@ -243,7 +244,6 @@ sub BODY_00_15() { | |||
243 | &data_word(0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3); | 244 | &data_word(0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3); |
244 | &data_word(0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208); | 245 | &data_word(0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208); |
245 | &data_word(0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2); | 246 | &data_word(0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2); |
246 | &function_end_B("sha256_block_data_order"); | 247 | &previous(); |
247 | &asciz("SHA256 block transform for x86, CRYPTOGAMS by <appro\@openssl.org>"); | ||
248 | 248 | ||
249 | &asm_finish(); | 249 | &asm_finish(); |
diff --git a/src/lib/libcrypto/sha/asm/sha512-586.pl b/src/lib/libcrypto/sha/asm/sha512-586.pl index 163361ebe9..c1d0684e92 100644 --- a/src/lib/libcrypto/sha/asm/sha512-586.pl +++ b/src/lib/libcrypto/sha/asm/sha512-586.pl | |||
@@ -261,16 +261,18 @@ sub BODY_00_15_x86 { | |||
261 | } | 261 | } |
262 | 262 | ||
263 | 263 | ||
264 | &static_label("K512"); | ||
264 | &function_begin("sha512_block_data_order"); | 265 | &function_begin("sha512_block_data_order"); |
265 | &mov ("esi",wparam(0)); # ctx | 266 | &mov ("esi",wparam(0)); # ctx |
266 | &mov ("edi",wparam(1)); # inp | 267 | &mov ("edi",wparam(1)); # inp |
267 | &mov ("eax",wparam(2)); # num | 268 | &mov ("eax",wparam(2)); # num |
268 | &mov ("ebx","esp"); # saved sp | 269 | &mov ("ebx","esp"); # saved sp |
269 | 270 | ||
270 | &call (&label("pic_point")); # make it PIC! | 271 | &picsetup($K512); |
271 | &set_label("pic_point"); | 272 | if ($sse2) { |
272 | &blindpop($K512); | 273 | &picsymbol("edx", "OPENSSL_ia32cap_P", $K512); |
273 | &lea ($K512,&DWP(&label("K512")."-".&label("pic_point"),$K512)); | 274 | } |
275 | &picsymbol($K512, &label("K512"), $K512); | ||
274 | 276 | ||
275 | &sub ("esp",16); | 277 | &sub ("esp",16); |
276 | &and ("esp",-64); | 278 | &and ("esp",-64); |
@@ -283,7 +285,6 @@ sub BODY_00_15_x86 { | |||
283 | &mov (&DWP(12,"esp"),"ebx"); # saved sp | 285 | &mov (&DWP(12,"esp"),"ebx"); # saved sp |
284 | 286 | ||
285 | if ($sse2) { | 287 | if ($sse2) { |
286 | &picmeup("edx","OPENSSL_ia32cap_P",$K512,&label("K512")); | ||
287 | &bt (&DWP(0,"edx"),"\$IA32CAP_BIT0_SSE2"); | 288 | &bt (&DWP(0,"edx"),"\$IA32CAP_BIT0_SSE2"); |
288 | &jnc (&label("loop_x86")); | 289 | &jnc (&label("loop_x86")); |
289 | 290 | ||
@@ -556,8 +557,10 @@ if ($sse2) { | |||
556 | 557 | ||
557 | &mov ("esp",&DWP(12,"esp")); # restore sp | 558 | &mov ("esp",&DWP(12,"esp")); # restore sp |
558 | &function_end_A(); | 559 | &function_end_A(); |
560 | &function_end_B("sha512_block_data_order"); | ||
559 | 561 | ||
560 | &set_label("K512",64); # Yes! I keep it in the code segment! | 562 | &rodataseg(); |
563 | &set_label("K512",64); | ||
561 | &data_word(0xd728ae22,0x428a2f98); # u64 | 564 | &data_word(0xd728ae22,0x428a2f98); # u64 |
562 | &data_word(0x23ef65cd,0x71374491); # u64 | 565 | &data_word(0x23ef65cd,0x71374491); # u64 |
563 | &data_word(0xec4d3b2f,0xb5c0fbcf); # u64 | 566 | &data_word(0xec4d3b2f,0xb5c0fbcf); # u64 |
@@ -638,7 +641,6 @@ if ($sse2) { | |||
638 | &data_word(0xfc657e2a,0x597f299c); # u64 | 641 | &data_word(0xfc657e2a,0x597f299c); # u64 |
639 | &data_word(0x3ad6faec,0x5fcb6fab); # u64 | 642 | &data_word(0x3ad6faec,0x5fcb6fab); # u64 |
640 | &data_word(0x4a475817,0x6c44198c); # u64 | 643 | &data_word(0x4a475817,0x6c44198c); # u64 |
641 | &function_end_B("sha512_block_data_order"); | 644 | &previous(); |
642 | &asciz("SHA512 block transform for x86, CRYPTOGAMS by <appro\@openssl.org>"); | ||
643 | 645 | ||
644 | &asm_finish(); | 646 | &asm_finish(); |