diff options
author | deraadt <> | 2017-12-11 05:48:01 +0000 |
---|---|---|
committer | deraadt <> | 2017-12-11 05:48:01 +0000 |
commit | 739b09b33140a7cde6da09372fc371d59f4751c7 (patch) | |
tree | f45f495aceb89570179a0b9f1d0c3150b6da956e | |
parent | f470834311fadde98f690758b95be8f61963fddb (diff) | |
download | openbsd-739b09b33140a7cde6da09372fc371d59f4751c7.tar.gz openbsd-739b09b33140a7cde6da09372fc371d59f4751c7.tar.bz2 openbsd-739b09b33140a7cde6da09372fc371d59f4751c7.zip |
http://repzret.org/p/repzret/
My read of this: Long time ago (Think Conan, not dinasaurs) during the race
to make speedier processors, a cpu vendor built a pipeline with a bad stall,
and proposed a tremendously hasky workaround. A wizard adopted this into his
perl scroll, and failed to reflect later when no compiler adopted the practice.
This relic remains at the tail end of some functions in OpenSSL as
".byte 0xf3,0xc3". Banish it straight to hell.
ok mlarkin, others also stared blankly
-rwxr-xr-x | src/lib/libcrypto/aes/asm/aes-x86_64.pl | 10 | ||||
-rw-r--r-- | src/lib/libcrypto/camellia/asm/cmll-x86_64.pl | 4 | ||||
-rwxr-xr-x | src/lib/libcrypto/perlasm/x86_64-xlate.pl | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/src/lib/libcrypto/aes/asm/aes-x86_64.pl b/src/lib/libcrypto/aes/asm/aes-x86_64.pl index c37fd55648..9072f603a9 100755 --- a/src/lib/libcrypto/aes/asm/aes-x86_64.pl +++ b/src/lib/libcrypto/aes/asm/aes-x86_64.pl | |||
@@ -352,7 +352,7 @@ ___ | |||
352 | ___ | 352 | ___ |
353 | } | 353 | } |
354 | $code.=<<___; | 354 | $code.=<<___; |
355 | .byte 0xf3,0xc3 # rep ret | 355 | retq |
356 | .size _x86_64_AES_encrypt,.-_x86_64_AES_encrypt | 356 | .size _x86_64_AES_encrypt,.-_x86_64_AES_encrypt |
357 | ___ | 357 | ___ |
358 | 358 | ||
@@ -580,7 +580,7 @@ $code.=<<___; | |||
580 | xor 4($key),$s1 | 580 | xor 4($key),$s1 |
581 | xor 8($key),$s2 | 581 | xor 8($key),$s2 |
582 | xor 12($key),$s3 | 582 | xor 12($key),$s3 |
583 | .byte 0xf3,0xc3 # rep ret | 583 | retq |
584 | .size _x86_64_AES_encrypt_compact,.-_x86_64_AES_encrypt_compact | 584 | .size _x86_64_AES_encrypt_compact,.-_x86_64_AES_encrypt_compact |
585 | ___ | 585 | ___ |
586 | 586 | ||
@@ -925,7 +925,7 @@ ___ | |||
925 | ___ | 925 | ___ |
926 | } | 926 | } |
927 | $code.=<<___; | 927 | $code.=<<___; |
928 | .byte 0xf3,0xc3 # rep ret | 928 | retq |
929 | .size _x86_64_AES_decrypt,.-_x86_64_AES_decrypt | 929 | .size _x86_64_AES_decrypt,.-_x86_64_AES_decrypt |
930 | ___ | 930 | ___ |
931 | 931 | ||
@@ -1179,7 +1179,7 @@ $code.=<<___; | |||
1179 | xor 4($key),$s1 | 1179 | xor 4($key),$s1 |
1180 | xor 8($key),$s2 | 1180 | xor 8($key),$s2 |
1181 | xor 12($key),$s3 | 1181 | xor 12($key),$s3 |
1182 | .byte 0xf3,0xc3 # rep ret | 1182 | retq |
1183 | .size _x86_64_AES_decrypt_compact,.-_x86_64_AES_decrypt_compact | 1183 | .size _x86_64_AES_decrypt_compact,.-_x86_64_AES_decrypt_compact |
1184 | ___ | 1184 | ___ |
1185 | 1185 | ||
@@ -1496,7 +1496,7 @@ $code.=<<___; | |||
1496 | .Lbadpointer: | 1496 | .Lbadpointer: |
1497 | mov \$-1,%rax | 1497 | mov \$-1,%rax |
1498 | .Lexit: | 1498 | .Lexit: |
1499 | .byte 0xf3,0xc3 # rep ret | 1499 | retq |
1500 | .size _x86_64_AES_set_encrypt_key,.-_x86_64_AES_set_encrypt_key | 1500 | .size _x86_64_AES_set_encrypt_key,.-_x86_64_AES_set_encrypt_key |
1501 | ___ | 1501 | ___ |
1502 | 1502 | ||
diff --git a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl index a171c654b2..df6bf11a28 100644 --- a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl +++ b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl | |||
@@ -218,7 +218,7 @@ $code.=<<___; | |||
218 | mov $t2,@S[2] | 218 | mov $t2,@S[2] |
219 | mov $t3,@S[3] | 219 | mov $t3,@S[3] |
220 | 220 | ||
221 | .byte 0xf3,0xc3 # rep ret | 221 | retq |
222 | .size _x86_64_Camellia_encrypt,.-_x86_64_Camellia_encrypt | 222 | .size _x86_64_Camellia_encrypt,.-_x86_64_Camellia_encrypt |
223 | 223 | ||
224 | # V1.x API | 224 | # V1.x API |
@@ -329,7 +329,7 @@ $code.=<<___; | |||
329 | mov $t0,@S[2] | 329 | mov $t0,@S[2] |
330 | mov $t1,@S[3] | 330 | mov $t1,@S[3] |
331 | 331 | ||
332 | .byte 0xf3,0xc3 # rep ret | 332 | retq |
333 | .size _x86_64_Camellia_decrypt,.-_x86_64_Camellia_decrypt | 333 | .size _x86_64_Camellia_decrypt,.-_x86_64_Camellia_decrypt |
334 | ___ | 334 | ___ |
335 | 335 | ||
diff --git a/src/lib/libcrypto/perlasm/x86_64-xlate.pl b/src/lib/libcrypto/perlasm/x86_64-xlate.pl index a8393d2730..5f7f585549 100755 --- a/src/lib/libcrypto/perlasm/x86_64-xlate.pl +++ b/src/lib/libcrypto/perlasm/x86_64-xlate.pl | |||
@@ -149,7 +149,7 @@ my %globals; | |||
149 | $epilogue = "movq 8(%rsp),%rdi\n\t" . | 149 | $epilogue = "movq 8(%rsp),%rdi\n\t" . |
150 | "movq 16(%rsp),%rsi\n\t"; | 150 | "movq 16(%rsp),%rsi\n\t"; |
151 | } | 151 | } |
152 | $epilogue . ".byte 0xf3,0xc3"; | 152 | $epilogue . "retq"; |
153 | } elsif ($self->{op} eq "call" && !$elf && $current_segment eq ".init") { | 153 | } elsif ($self->{op} eq "call" && !$elf && $current_segment eq ".init") { |
154 | ".p2align\t3\n\t.quad"; | 154 | ".p2align\t3\n\t.quad"; |
155 | } else { | 155 | } else { |