diff options
| author | deraadt <> | 2023-04-25 04:42:26 +0000 |
|---|---|---|
| committer | deraadt <> | 2023-04-25 04:42:26 +0000 |
| commit | e2118101444d3cf3cab87297b363cecd5357ae89 (patch) | |
| tree | b4ae043f669d9d718f1fecb4ca705a0cf2d2ddc7 /src/lib/libcrypto/bn/asm | |
| parent | c6490b97c04798e5cd36a489e3ba5ffc4a66550b (diff) | |
| download | openbsd-e2118101444d3cf3cab87297b363cecd5357ae89.tar.gz openbsd-e2118101444d3cf3cab87297b363cecd5357ae89.tar.bz2 openbsd-e2118101444d3cf3cab87297b363cecd5357ae89.zip | |
Add endbr64 where needed by inspection. Passes regresson tests.
ok jsing, and kind of tb an earlier version
Diffstat (limited to 'src/lib/libcrypto/bn/asm')
| -rw-r--r-- | src/lib/libcrypto/bn/asm/modexp512-x86_64.pl | 5 | ||||
| -rwxr-xr-x | src/lib/libcrypto/bn/asm/x86_64-mont.pl | 3 | ||||
| -rwxr-xr-x | src/lib/libcrypto/bn/asm/x86_64-mont5.pl | 5 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl b/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl index 2e71a7f03d..af78fff541 100644 --- a/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl +++ b/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl | |||
| @@ -347,6 +347,7 @@ $code.=<<___; | |||
| 347 | .type MULADD_128x512,\@abi-omnipotent | 347 | .type MULADD_128x512,\@abi-omnipotent |
| 348 | .align 16 | 348 | .align 16 |
| 349 | MULADD_128x512: | 349 | MULADD_128x512: |
| 350 | endbr64 | ||
| 350 | ___ | 351 | ___ |
| 351 | &MULSTEP_512([map("%r$_",(8..15))], "(+8*0)(%rcx)", "%rsi", "%rbp", "%rbx"); | 352 | &MULSTEP_512([map("%r$_",(8..15))], "(+8*0)(%rcx)", "%rsi", "%rbp", "%rbx"); |
| 352 | $code.=<<___; | 353 | $code.=<<___; |
| @@ -414,6 +415,7 @@ $code.=<<___; | |||
| 414 | .type mont_reduce,\@abi-omnipotent | 415 | .type mont_reduce,\@abi-omnipotent |
| 415 | .align 16 | 416 | .align 16 |
| 416 | mont_reduce: | 417 | mont_reduce: |
| 418 | endbr64 | ||
| 417 | ___ | 419 | ___ |
| 418 | 420 | ||
| 419 | my $STACK_DEPTH = 8; | 421 | my $STACK_DEPTH = 8; |
| @@ -676,6 +678,7 @@ $code.=<<___; | |||
| 676 | .type mont_mul_a3b,\@abi-omnipotent | 678 | .type mont_mul_a3b,\@abi-omnipotent |
| 677 | .align 16 | 679 | .align 16 |
| 678 | mont_mul_a3b: | 680 | mont_mul_a3b: |
| 681 | endbr64 | ||
| 679 | # | 682 | # |
| 680 | # multiply tmp = src1 * src2 | 683 | # multiply tmp = src1 * src2 |
| 681 | # For multiply: dst = rcx, src1 = rdi, src2 = rsi | 684 | # For multiply: dst = rcx, src1 = rdi, src2 = rsi |
| @@ -1077,6 +1080,7 @@ $code.=<<___; | |||
| 1077 | .type sqr_reduce,\@abi-omnipotent | 1080 | .type sqr_reduce,\@abi-omnipotent |
| 1078 | .align 16 | 1081 | .align 16 |
| 1079 | sqr_reduce: | 1082 | sqr_reduce: |
| 1083 | endbr64 | ||
| 1080 | mov (+$pResult_offset+8)(%rsp), %rcx | 1084 | mov (+$pResult_offset+8)(%rsp), %rcx |
| 1081 | ___ | 1085 | ___ |
| 1082 | &SQR_512("%rsp+$tmp16_offset+8", "%rcx", [map("%r$_",(10..15,8..9))], "%rbx", "%rbp", "%rsi", "%rdi"); | 1086 | &SQR_512("%rsp+$tmp16_offset+8", "%rcx", [map("%r$_",(10..15,8..9))], "%rbx", "%rbp", "%rsi", "%rdi"); |
| @@ -1106,6 +1110,7 @@ $code.=<<___; | |||
| 1106 | .globl mod_exp_512 | 1110 | .globl mod_exp_512 |
| 1107 | .type mod_exp_512,\@function,4 | 1111 | .type mod_exp_512,\@function,4 |
| 1108 | mod_exp_512: | 1112 | mod_exp_512: |
| 1113 | endbr64 | ||
| 1109 | push %rbp | 1114 | push %rbp |
| 1110 | push %rbx | 1115 | push %rbx |
| 1111 | push %r12 | 1116 | push %r12 |
diff --git a/src/lib/libcrypto/bn/asm/x86_64-mont.pl b/src/lib/libcrypto/bn/asm/x86_64-mont.pl index cae7309d5b..6f5ab331e2 100755 --- a/src/lib/libcrypto/bn/asm/x86_64-mont.pl +++ b/src/lib/libcrypto/bn/asm/x86_64-mont.pl | |||
| @@ -63,6 +63,7 @@ $code=<<___; | |||
| 63 | .type bn_mul_mont,\@function,6 | 63 | .type bn_mul_mont,\@function,6 |
| 64 | .align 16 | 64 | .align 16 |
| 65 | bn_mul_mont: | 65 | bn_mul_mont: |
| 66 | endbr64 | ||
| 66 | test \$3,${num}d | 67 | test \$3,${num}d |
| 67 | jnz .Lmul_enter | 68 | jnz .Lmul_enter |
| 68 | cmp \$8,${num}d | 69 | cmp \$8,${num}d |
| @@ -278,6 +279,7 @@ $code.=<<___; | |||
| 278 | .align 16 | 279 | .align 16 |
| 279 | bn_mul4x_mont: | 280 | bn_mul4x_mont: |
| 280 | .Lmul4x_enter: | 281 | .Lmul4x_enter: |
| 282 | endbr64 | ||
| 281 | push %rbx | 283 | push %rbx |
| 282 | push %rbp | 284 | push %rbp |
| 283 | push %r12 | 285 | push %r12 |
| @@ -705,6 +707,7 @@ $code.=<<___; | |||
| 705 | .align 16 | 707 | .align 16 |
| 706 | bn_sqr4x_mont: | 708 | bn_sqr4x_mont: |
| 707 | .Lsqr4x_enter: | 709 | .Lsqr4x_enter: |
| 710 | endbr64 | ||
| 708 | push %rbx | 711 | push %rbx |
| 709 | push %rbp | 712 | push %rbp |
| 710 | push %r12 | 713 | push %r12 |
diff --git a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl index 7b9c6df273..3b3325a6cc 100755 --- a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +++ b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl | |||
| @@ -57,6 +57,7 @@ $code=<<___; | |||
| 57 | .type bn_mul_mont_gather5,\@function,6 | 57 | .type bn_mul_mont_gather5,\@function,6 |
| 58 | .align 64 | 58 | .align 64 |
| 59 | bn_mul_mont_gather5: | 59 | bn_mul_mont_gather5: |
| 60 | endbr64 | ||
| 60 | test \$3,${num}d | 61 | test \$3,${num}d |
| 61 | jnz .Lmul_enter | 62 | jnz .Lmul_enter |
| 62 | cmp \$8,${num}d | 63 | cmp \$8,${num}d |
| @@ -387,6 +388,7 @@ $code.=<<___; | |||
| 387 | .type bn_mul4x_mont_gather5,\@function,6 | 388 | .type bn_mul4x_mont_gather5,\@function,6 |
| 388 | .align 16 | 389 | .align 16 |
| 389 | bn_mul4x_mont_gather5: | 390 | bn_mul4x_mont_gather5: |
| 391 | endbr64 | ||
| 390 | .Lmul4x_enter: | 392 | .Lmul4x_enter: |
| 391 | mov ${num}d,${num}d | 393 | mov ${num}d,${num}d |
| 392 | movd `($win64?56:8)`(%rsp),%xmm5 # load 7th argument | 394 | movd `($win64?56:8)`(%rsp),%xmm5 # load 7th argument |
| @@ -925,6 +927,7 @@ $code.=<<___; | |||
| 925 | .type bn_scatter5,\@abi-omnipotent | 927 | .type bn_scatter5,\@abi-omnipotent |
| 926 | .align 16 | 928 | .align 16 |
| 927 | bn_scatter5: | 929 | bn_scatter5: |
| 930 | endbr64 | ||
| 928 | cmp \$0, $num | 931 | cmp \$0, $num |
| 929 | jz .Lscatter_epilogue | 932 | jz .Lscatter_epilogue |
| 930 | lea ($tbl,$idx,8),$tbl | 933 | lea ($tbl,$idx,8),$tbl |
| @@ -943,6 +946,7 @@ bn_scatter5: | |||
| 943 | .type bn_gather5,\@abi-omnipotent | 946 | .type bn_gather5,\@abi-omnipotent |
| 944 | .align 16 | 947 | .align 16 |
| 945 | bn_gather5: | 948 | bn_gather5: |
| 949 | endbr64 | ||
| 946 | .LSEH_begin_bn_gather5: # Win64 thing, but harmless in other cases | 950 | .LSEH_begin_bn_gather5: # Win64 thing, but harmless in other cases |
| 947 | # I can't trust assembler to use specific encoding:-( | 951 | # I can't trust assembler to use specific encoding:-( |
| 948 | .byte 0x4c,0x8d,0x14,0x24 # lea (%rsp),%r10 | 952 | .byte 0x4c,0x8d,0x14,0x24 # lea (%rsp),%r10 |
| @@ -1053,6 +1057,7 @@ $code.=<<___; | |||
| 1053 | .type mul_handler,\@abi-omnipotent | 1057 | .type mul_handler,\@abi-omnipotent |
| 1054 | .align 16 | 1058 | .align 16 |
| 1055 | mul_handler: | 1059 | mul_handler: |
| 1060 | endbr64 | ||
| 1056 | push %rsi | 1061 | push %rsi |
| 1057 | push %rdi | 1062 | push %rdi |
| 1058 | push %rbx | 1063 | push %rbx |
