summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/rc4/asm/rc4-586.pl
diff options
context:
space:
mode:
authormiod <>2023-02-01 20:45:04 +0000
committermiod <>2023-02-01 20:45:04 +0000
commitdc4b2cf3e0979364f14ff89a07ffafc47435e2e7 (patch)
tree58219f5c6538172b9d00f33bf48c9a61419ec7a0 /src/lib/libcrypto/rc4/asm/rc4-586.pl
parent86f42338b2994b620482c37e3d0d9fc3ba1f523b (diff)
downloadopenbsd-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/rc4/asm/rc4-586.pl')
-rw-r--r--src/lib/libcrypto/rc4/asm/rc4-586.pl26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/lib/libcrypto/rc4/asm/rc4-586.pl b/src/lib/libcrypto/rc4/asm/rc4-586.pl
index f3c3e117bc..4991c37c2c 100644
--- a/src/lib/libcrypto/rc4/asm/rc4-586.pl
+++ b/src/lib/libcrypto/rc4/asm/rc4-586.pl
@@ -188,7 +188,8 @@ if ($alt=0) {
188 &mov (&wparam(3),$out); # $out as accumulator in these loops 188 &mov (&wparam(3),$out); # $out as accumulator in these loops
189 &jz (&label("go4loop4")); 189 &jz (&label("go4loop4"));
190 190
191 &picmeup($out,"OPENSSL_ia32cap_P"); 191 &picsetup($out);
192 &picsymbol($out, "OPENSSL_ia32cap_P", $out);
192 # check SSE2 bit [could have been MMX] 193 # check SSE2 bit [could have been MMX]
193 &bt (&DWP(0,$out),"\$IA32CAP_BIT0_SSE2"); 194 &bt (&DWP(0,$out),"\$IA32CAP_BIT0_SSE2");
194 &jnc (&label("go4loop4")); 195 &jnc (&label("go4loop4"));
@@ -305,7 +306,9 @@ $idx="edx";
305 &mov ($out,&wparam(0)); # load key 306 &mov ($out,&wparam(0)); # load key
306 &mov ($idi,&wparam(1)); # load len 307 &mov ($idi,&wparam(1)); # load len
307 &mov ($inp,&wparam(2)); # load data 308 &mov ($inp,&wparam(2)); # load data
308 &picmeup($idx,"OPENSSL_ia32cap_P"); 309
310 &picsetup($idx);
311 &picsymbol($idx, "OPENSSL_ia32cap_P", $idx);
309 312
310 &lea ($out,&DWP(2*4,$out)); # &key->data 313 &lea ($out,&DWP(2*4,$out)); # &key->data
311 &lea ($inp,&DWP(0,$inp,$idi)); # $inp to point at the end 314 &lea ($inp,&DWP(0,$inp,$idi)); # $inp to point at the end
@@ -382,12 +385,12 @@ $idx="edx";
382&function_end("RC4_set_key"); 385&function_end("RC4_set_key");
383 386
384# const char *RC4_options(void); 387# const char *RC4_options(void);
388&static_label("opts");
385&function_begin_B("RC4_options"); 389&function_begin_B("RC4_options");
386 &call (&label("pic_point")); 390 &picsetup("edx");
387&set_label("pic_point"); 391 &picsymbol("eax", &label("opts"), "edx");
388 &blindpop("eax"); 392 &picsymbol("edx", "OPENSSL_ia32cap_P", "edx");;
389 &lea ("eax",&DWP(&label("opts")."-".&label("pic_point"),"eax")); 393
390 &picmeup("edx","OPENSSL_ia32cap_P");
391 &mov ("edx",&DWP(0,"edx")); 394 &mov ("edx",&DWP(0,"edx"));
392 &bt ("edx","\$IA32CAP_BIT0_INTELP4"); 395 &bt ("edx","\$IA32CAP_BIT0_INTELP4");
393 &jc (&label("1xchar")); 396 &jc (&label("1xchar"));
@@ -399,13 +402,14 @@ $idx="edx";
399 &add ("eax",12); 402 &add ("eax",12);
400&set_label("ret"); 403&set_label("ret");
401 &ret (); 404 &ret ();
402&set_label("opts",64); 405&function_end_B("RC4_options");
406
407 &rodataseg();
408&set_label("opts");
403&asciz ("rc4(4x,int)"); 409&asciz ("rc4(4x,int)");
404&asciz ("rc4(1x,char)"); 410&asciz ("rc4(1x,char)");
405&asciz ("rc4(8x,mmx)"); 411&asciz ("rc4(8x,mmx)");
406&asciz ("RC4 for x86, CRYPTOGAMS by <appro\@openssl.org>"); 412 &previous();
407&align (64);
408&function_end_B("RC4_options");
409 413
410&asm_finish(); 414&asm_finish();
411 415