diff options
| author | miod <> | 2023-02-01 20:45:04 +0000 |
|---|---|---|
| committer | miod <> | 2023-02-01 20:45:04 +0000 |
| commit | 5957c398bf683b5334ed18dd0f830b1cfffbf027 (patch) | |
| tree | 58219f5c6538172b9d00f33bf48c9a61419ec7a0 /src/lib/libcrypto/modes | |
| parent | 093a7a1758207b4e7e2b0d17ec6e5e7ec72e3a44 (diff) | |
| download | openbsd-5957c398bf683b5334ed18dd0f830b1cfffbf027.tar.gz openbsd-5957c398bf683b5334ed18dd0f830b1cfffbf027.tar.bz2 openbsd-5957c398bf683b5334ed18dd0f830b1cfffbf027.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')
| -rw-r--r-- | src/lib/libcrypto/modes/asm/ghash-x86.pl | 66 |
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 |
