summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/modes/asm
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/modes/asm
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/modes/asm')
-rw-r--r--src/lib/libcrypto/modes/asm/ghash-x86.pl66
1 files changed, 25 insertions, 41 deletions
diff --git a/src/lib/libcrypto/modes/asm/ghash-x86.pl b/src/lib/libcrypto/modes/asm/ghash-x86.pl
index 27492597ad..5e868a43ff 100644
--- a/src/lib/libcrypto/modes/asm/ghash-x86.pl
+++ b/src/lib/libcrypto/modes/asm/ghash-x86.pl
@@ -411,10 +411,8 @@ $S=12; # shift factor for rem_4bit
411 &mov ($inp,&wparam(0)); # load Xi 411 &mov ($inp,&wparam(0)); # load Xi
412 &mov ($Htbl,&wparam(1)); # load Htable 412 &mov ($Htbl,&wparam(1)); # load Htable
413 413
414 &call (&label("pic_point")); 414 &picsetup("eax");
415 &set_label("pic_point"); 415 &picsymbol("eax", &label("rem_4bit"), "eax");
416 &blindpop("eax");
417 &lea ("eax",&DWP(&label("rem_4bit")."-".&label("pic_point"),"eax"));
418 416
419 &movz ($Zll,&BP(15,$inp)); 417 &movz ($Zll,&BP(15,$inp));
420 418
@@ -436,10 +434,8 @@ $S=12; # shift factor for rem_4bit
436 &mov ($inp,&wparam(2)); # load in 434 &mov ($inp,&wparam(2)); # load in
437 &mov ($Zlh,&wparam(3)); # load len 435 &mov ($Zlh,&wparam(3)); # load len
438 436
439 &call (&label("pic_point")); 437 &picsetup("eax");
440 &set_label("pic_point"); 438 &picsymbol("eax", &label("rem_4bit"), "eax");
441 &blindpop("eax");
442 &lea ("eax",&DWP(&label("rem_4bit")."-".&label("pic_point"),"eax"));
443 439
444 &add ($Zlh,$inp); 440 &add ($Zlh,$inp);
445 &mov (&wparam(3),$Zlh); # len to point at the end of input 441 &mov (&wparam(3),$Zlh); # len to point at the end of input
@@ -584,10 +580,8 @@ sub mmx_loop() {
584 &mov ($inp,&wparam(0)); # load Xi 580 &mov ($inp,&wparam(0)); # load Xi
585 &mov ($Htbl,&wparam(1)); # load Htable 581 &mov ($Htbl,&wparam(1)); # load Htable
586 582
587 &call (&label("pic_point")); 583 &picsetup("eax");
588 &set_label("pic_point"); 584 &picsymbol("eax", &label("rem_4bit"), "eax");
589 &blindpop("eax");
590 &lea ("eax",&DWP(&label("rem_4bit")."-".&label("pic_point"),"eax"));
591 585
592 &movz ($Zll,&BP(15,$inp)); 586 &movz ($Zll,&BP(15,$inp));
593 587
@@ -618,10 +612,9 @@ sub mmx_loop() {
618 &mov ("ecx",&wparam(2)); # inp 612 &mov ("ecx",&wparam(2)); # inp
619 &mov ("edx",&wparam(3)); # len 613 &mov ("edx",&wparam(3)); # len
620 &mov ("ebp","esp"); # original %esp 614 &mov ("ebp","esp"); # original %esp
621 &call (&label("pic_point")); 615
622 &set_label ("pic_point"); 616 &picsetup($rem_8bit);
623 &blindpop ($rem_8bit); 617 &picsymbol($rem_8bit, &label("rem_8bit"), $rem_8bit);
624 &lea ($rem_8bit,&DWP(&label("rem_8bit")."-".&label("pic_point"),$rem_8bit));
625 618
626 &sub ("esp",512+16+16); # allocate stack frame... 619 &sub ("esp",512+16+16); # allocate stack frame...
627 &and ("esp",-64); # ...and align it 620 &and ("esp",-64); # ...and align it
@@ -910,10 +903,8 @@ my ($Xhi,$Xi) = @_;
910 &mov ($Htbl,&wparam(0)); 903 &mov ($Htbl,&wparam(0));
911 &mov ($Xip,&wparam(1)); 904 &mov ($Xip,&wparam(1));
912 905
913 &call (&label("pic")); 906 &picsetup($const);
914&set_label("pic"); 907 &picsymbol($const, &label("bswap"), $const);
915 &blindpop ($const);
916 &lea ($const,&DWP(&label("bswap")."-".&label("pic"),$const));
917 908
918 &movdqu ($Hkey,&QWP(0,$Xip)); 909 &movdqu ($Hkey,&QWP(0,$Xip));
919 &pshufd ($Hkey,$Hkey,0b01001110);# dword swap 910 &pshufd ($Hkey,$Hkey,0b01001110);# dword swap
@@ -947,10 +938,8 @@ my ($Xhi,$Xi) = @_;
947 &mov ($Xip,&wparam(0)); 938 &mov ($Xip,&wparam(0));
948 &mov ($Htbl,&wparam(1)); 939 &mov ($Htbl,&wparam(1));
949 940
950 &call (&label("pic")); 941 &picsetup($const);
951&set_label("pic"); 942 &picsymbol($const, &label("bswap"), $const);
952 &blindpop ($const);
953 &lea ($const,&DWP(&label("bswap")."-".&label("pic"),$const));
954 943
955 &movdqu ($Xi,&QWP(0,$Xip)); 944 &movdqu ($Xi,&QWP(0,$Xip));
956 &movdqa ($T3,&QWP(0,$const)); 945 &movdqa ($T3,&QWP(0,$const));
@@ -972,10 +961,8 @@ my ($Xhi,$Xi) = @_;
972 &mov ($inp,&wparam(2)); 961 &mov ($inp,&wparam(2));
973 &mov ($len,&wparam(3)); 962 &mov ($len,&wparam(3));
974 963
975 &call (&label("pic")); 964 &picsetup($const);
976&set_label("pic"); 965 &picsymbol($const, &label("bswap"), $const);
977 &blindpop ($const);
978 &lea ($const,&DWP(&label("bswap")."-".&label("pic"),$const));
979 966
980 &movdqu ($Xi,&QWP(0,$Xip)); 967 &movdqu ($Xi,&QWP(0,$Xip));
981 &movdqa ($T3,&QWP(0,$const)); 968 &movdqa ($T3,&QWP(0,$const));
@@ -1138,10 +1125,8 @@ my ($Xhi,$Xi)=@_;
1138 &mov ($Htbl,&wparam(0)); 1125 &mov ($Htbl,&wparam(0));
1139 &mov ($Xip,&wparam(1)); 1126 &mov ($Xip,&wparam(1));
1140 1127
1141 &call (&label("pic")); 1128 &picsetup($const);
1142&set_label("pic"); 1129 &picsymbol($const, &label("bswap"), $const);
1143 &blindpop ($const);
1144 &lea ($const,&DWP(&label("bswap")."-".&label("pic"),$const));
1145 1130
1146 &movdqu ($Hkey,&QWP(0,$Xip)); 1131 &movdqu ($Hkey,&QWP(0,$Xip));
1147 &pshufd ($Hkey,$Hkey,0b01001110);# dword swap 1132 &pshufd ($Hkey,$Hkey,0b01001110);# dword swap
@@ -1161,10 +1146,8 @@ my ($Xhi,$Xi)=@_;
1161 &mov ($Xip,&wparam(0)); 1146 &mov ($Xip,&wparam(0));
1162 &mov ($Htbl,&wparam(1)); 1147 &mov ($Htbl,&wparam(1));
1163 1148
1164 &call (&label("pic")); 1149 &picsetup($const);
1165&set_label("pic"); 1150 &picsymbol($const, &label("bswap"), $const);
1166 &blindpop ($const);
1167 &lea ($const,&DWP(&label("bswap")."-".&label("pic"),$const));
1168 1151
1169 &movdqu ($Xi,&QWP(0,$Xip)); 1152 &movdqu ($Xi,&QWP(0,$Xip));
1170 &movdqa ($Xn,&QWP(0,$const)); 1153 &movdqa ($Xn,&QWP(0,$const));
@@ -1186,10 +1169,8 @@ my ($Xhi,$Xi)=@_;
1186 &mov ($inp,&wparam(2)); 1169 &mov ($inp,&wparam(2));
1187 &mov ($len,&wparam(3)); 1170 &mov ($len,&wparam(3));
1188 1171
1189 &call (&label("pic")); 1172 &picsetup($const);
1190&set_label("pic"); 1173 &picsymbol($const, &label("bswap"), $const);
1191 &blindpop ($const);
1192 &lea ($const,&DWP(&label("bswap")."-".&label("pic"),$const));
1193 1174
1194 &movdqu ($Xi,&QWP(0,$Xip)); 1175 &movdqu ($Xi,&QWP(0,$Xip));
1195 &movdqa ($T3,&QWP(0,$const)); 1176 &movdqa ($T3,&QWP(0,$const));
@@ -1270,11 +1251,14 @@ my ($Xhi,$Xi)=@_;
1270 1251
1271} 1252}
1272 1253
1254 &rodataseg();
1273&set_label("bswap",64); 1255&set_label("bswap",64);
1274 &data_byte(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0); 1256 &data_byte(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
1275 &data_byte(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2); # 0x1c2_polynomial 1257 &data_byte(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2); # 0x1c2_polynomial
1258 &previous();
1276}} # $sse2 1259}} # $sse2
1277 1260
1261 &rodataseg();
1278&set_label("rem_4bit",64); 1262&set_label("rem_4bit",64);
1279 &data_word(0,0x0000<<$S,0,0x1C20<<$S,0,0x3840<<$S,0,0x2460<<$S); 1263 &data_word(0,0x0000<<$S,0,0x1C20<<$S,0,0x3840<<$S,0,0x2460<<$S);
1280 &data_word(0,0x7080<<$S,0,0x6CA0<<$S,0,0x48C0<<$S,0,0x54E0<<$S); 1264 &data_word(0,0x7080<<$S,0,0x6CA0<<$S,0,0x48C0<<$S,0,0x54E0<<$S);
@@ -1313,9 +1297,9 @@ my ($Xhi,$Xi)=@_;
1313 &data_short(0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E); 1297 &data_short(0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E);
1314 &data_short(0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE); 1298 &data_short(0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE);
1315 &data_short(0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE); 1299 &data_short(0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE);
1300 &previous();
1316}}} # !$x86only 1301}}} # !$x86only
1317 1302
1318&asciz("GHASH for x86, CRYPTOGAMS by <appro\@openssl.org>");
1319&asm_finish(); 1303&asm_finish();
1320 1304
1321# A question was risen about choice of vanilla MMX. Or rather why wasn't 1305# A question was risen about choice of vanilla MMX. Or rather why wasn't