summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bn
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/bn')
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_add.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_mul.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/bignum_sub.S2
-rw-r--r--src/lib/libcrypto/bn/arch/amd64/word_clz.S2
-rw-r--r--src/lib/libcrypto/bn/asm/modexp512-x86_64.pl10
-rwxr-xr-xsrc/lib/libcrypto/bn/asm/x86_64-mont.pl6
-rwxr-xr-xsrc/lib/libcrypto/bn/asm/x86_64-mont5.pl10
-rw-r--r--src/lib/libcrypto/bn/s2n_bignum_internal.h6
15 files changed, 30 insertions, 24 deletions
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_add.S b/src/lib/libcrypto/bn/arch/amd64/bignum_add.S
index 06298ca69e..5fe4aae7a1 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_add.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_add.S
@@ -49,7 +49,7 @@
49 49
50 50
51S2N_BN_SYMBOL(bignum_add): 51S2N_BN_SYMBOL(bignum_add):
52 endbr64 52 _CET_ENDBR
53 53
54#if WINDOWS_ABI 54#if WINDOWS_ABI
55 push rdi 55 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S b/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S
index 5ad712749f..25ba17bce2 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S
@@ -54,7 +54,7 @@
54 54
55 55
56S2N_BN_SYMBOL(bignum_cmadd): 56S2N_BN_SYMBOL(bignum_cmadd):
57 endbr64 57 _CET_ENDBR
58 58
59#if WINDOWS_ABI 59#if WINDOWS_ABI
60 push rdi 60 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S b/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S
index 9199c8f48b..12f785d63a 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S
@@ -51,7 +51,7 @@
51 51
52 52
53S2N_BN_SYMBOL(bignum_cmul): 53S2N_BN_SYMBOL(bignum_cmul):
54 endbr64 54 _CET_ENDBR
55 55
56#if WINDOWS_ABI 56#if WINDOWS_ABI
57 push rdi 57 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S b/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S
index 2d7ed19091..a3552679a2 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S
@@ -59,7 +59,7 @@
59 59
60 60
61S2N_BN_SYMBOL(bignum_mul): 61S2N_BN_SYMBOL(bignum_mul):
62 endbr64 62 _CET_ENDBR
63 63
64#if WINDOWS_ABI 64#if WINDOWS_ABI
65 push rdi 65 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S b/src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S
index f02b09b288..70ff69e372 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S
@@ -72,7 +72,7 @@
72 adc h, rdx 72 adc h, rdx
73 73
74S2N_BN_SYMBOL(bignum_mul_4_8_alt): 74S2N_BN_SYMBOL(bignum_mul_4_8_alt):
75 endbr64 75 _CET_ENDBR
76 76
77#if WINDOWS_ABI 77#if WINDOWS_ABI
78 push rdi 78 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S b/src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S
index 97be83e1f7..066403b074 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S
@@ -72,7 +72,7 @@
72 adc h, rdx 72 adc h, rdx
73 73
74S2N_BN_SYMBOL(bignum_mul_8_16_alt): 74S2N_BN_SYMBOL(bignum_mul_8_16_alt):
75 endbr64 75 _CET_ENDBR
76 76
77#if WINDOWS_ABI 77#if WINDOWS_ABI
78 push rdi 78 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S
index c4a0cabf35..54e3f59442 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S
@@ -62,7 +62,7 @@
62#define llshort ebp 62#define llshort ebp
63 63
64S2N_BN_SYMBOL(bignum_sqr): 64S2N_BN_SYMBOL(bignum_sqr):
65 endbr64 65 _CET_ENDBR
66 66
67#if WINDOWS_ABI 67#if WINDOWS_ABI
68 push rdi 68 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S
index b228414dce..7c534ae907 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S
@@ -71,7 +71,7 @@
71 adc c, 0 71 adc c, 0
72 72
73S2N_BN_SYMBOL(bignum_sqr_4_8_alt): 73S2N_BN_SYMBOL(bignum_sqr_4_8_alt):
74 endbr64 74 _CET_ENDBR
75 75
76#if WINDOWS_ABI 76#if WINDOWS_ABI
77 push rdi 77 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S
index 04efeec7e2..ac0b6f96c2 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S
@@ -103,7 +103,7 @@
103 adc c, 0 103 adc c, 0
104 104
105S2N_BN_SYMBOL(bignum_sqr_8_16_alt): 105S2N_BN_SYMBOL(bignum_sqr_8_16_alt):
106 endbr64 106 _CET_ENDBR
107 107
108#if WINDOWS_ABI 108#if WINDOWS_ABI
109 push rdi 109 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S b/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S
index 11a9bd7edd..3ff8a30510 100644
--- a/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S
+++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S
@@ -49,7 +49,7 @@
49 49
50 50
51S2N_BN_SYMBOL(bignum_sub): 51S2N_BN_SYMBOL(bignum_sub):
52 endbr64 52 _CET_ENDBR
53 53
54#if WINDOWS_ABI 54#if WINDOWS_ABI
55 push rdi 55 push rdi
diff --git a/src/lib/libcrypto/bn/arch/amd64/word_clz.S b/src/lib/libcrypto/bn/arch/amd64/word_clz.S
index 464a9d90fc..3926fcd4b0 100644
--- a/src/lib/libcrypto/bn/arch/amd64/word_clz.S
+++ b/src/lib/libcrypto/bn/arch/amd64/word_clz.S
@@ -30,7 +30,7 @@
30 .text 30 .text
31 31
32S2N_BN_SYMBOL(word_clz): 32S2N_BN_SYMBOL(word_clz):
33 endbr64 33 _CET_ENDBR
34 34
35#if WINDOWS_ABI 35#if WINDOWS_ABI
36 push rdi 36 push rdi
diff --git a/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl b/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl
index af78fff541..8645d5adcc 100644
--- a/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl
+++ b/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl
@@ -347,7 +347,7 @@ $code.=<<___;
347.type MULADD_128x512,\@abi-omnipotent 347.type MULADD_128x512,\@abi-omnipotent
348.align 16 348.align 16
349MULADD_128x512: 349MULADD_128x512:
350 endbr64 350 _CET_ENDBR
351___ 351___
352 &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");
353$code.=<<___; 353$code.=<<___;
@@ -415,7 +415,7 @@ $code.=<<___;
415.type mont_reduce,\@abi-omnipotent 415.type mont_reduce,\@abi-omnipotent
416.align 16 416.align 16
417mont_reduce: 417mont_reduce:
418 endbr64 418 _CET_ENDBR
419___ 419___
420 420
421my $STACK_DEPTH = 8; 421my $STACK_DEPTH = 8;
@@ -678,7 +678,7 @@ $code.=<<___;
678.type mont_mul_a3b,\@abi-omnipotent 678.type mont_mul_a3b,\@abi-omnipotent
679.align 16 679.align 16
680mont_mul_a3b: 680mont_mul_a3b:
681 endbr64 681 _CET_ENDBR
682 # 682 #
683 # multiply tmp = src1 * src2 683 # multiply tmp = src1 * src2
684 # For multiply: dst = rcx, src1 = rdi, src2 = rsi 684 # For multiply: dst = rcx, src1 = rdi, src2 = rsi
@@ -1080,7 +1080,7 @@ $code.=<<___;
1080.type sqr_reduce,\@abi-omnipotent 1080.type sqr_reduce,\@abi-omnipotent
1081.align 16 1081.align 16
1082sqr_reduce: 1082sqr_reduce:
1083 endbr64 1083 _CET_ENDBR
1084 mov (+$pResult_offset+8)(%rsp), %rcx 1084 mov (+$pResult_offset+8)(%rsp), %rcx
1085___ 1085___
1086 &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");
@@ -1110,7 +1110,7 @@ $code.=<<___;
1110.globl mod_exp_512 1110.globl mod_exp_512
1111.type mod_exp_512,\@function,4 1111.type mod_exp_512,\@function,4
1112mod_exp_512: 1112mod_exp_512:
1113 endbr64 1113 _CET_ENDBR
1114 push %rbp 1114 push %rbp
1115 push %rbx 1115 push %rbx
1116 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 6f5ab331e2..30cfab4fce 100755
--- a/src/lib/libcrypto/bn/asm/x86_64-mont.pl
+++ b/src/lib/libcrypto/bn/asm/x86_64-mont.pl
@@ -63,7 +63,7 @@ $code=<<___;
63.type bn_mul_mont,\@function,6 63.type bn_mul_mont,\@function,6
64.align 16 64.align 16
65bn_mul_mont: 65bn_mul_mont:
66 endbr64 66 _CET_ENDBR
67 test \$3,${num}d 67 test \$3,${num}d
68 jnz .Lmul_enter 68 jnz .Lmul_enter
69 cmp \$8,${num}d 69 cmp \$8,${num}d
@@ -279,7 +279,7 @@ $code.=<<___;
279.align 16 279.align 16
280bn_mul4x_mont: 280bn_mul4x_mont:
281.Lmul4x_enter: 281.Lmul4x_enter:
282 endbr64 282 _CET_ENDBR
283 push %rbx 283 push %rbx
284 push %rbp 284 push %rbp
285 push %r12 285 push %r12
@@ -707,7 +707,7 @@ $code.=<<___;
707.align 16 707.align 16
708bn_sqr4x_mont: 708bn_sqr4x_mont:
709.Lsqr4x_enter: 709.Lsqr4x_enter:
710 endbr64 710 _CET_ENDBR
711 push %rbx 711 push %rbx
712 push %rbp 712 push %rbp
713 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 3b3325a6cc..38751ec5de 100755
--- a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl
+++ b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl
@@ -57,7 +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
59bn_mul_mont_gather5: 59bn_mul_mont_gather5:
60 endbr64 60 _CET_ENDBR
61 test \$3,${num}d 61 test \$3,${num}d
62 jnz .Lmul_enter 62 jnz .Lmul_enter
63 cmp \$8,${num}d 63 cmp \$8,${num}d
@@ -388,7 +388,7 @@ $code.=<<___;
388.type bn_mul4x_mont_gather5,\@function,6 388.type bn_mul4x_mont_gather5,\@function,6
389.align 16 389.align 16
390bn_mul4x_mont_gather5: 390bn_mul4x_mont_gather5:
391 endbr64 391 _CET_ENDBR
392.Lmul4x_enter: 392.Lmul4x_enter:
393 mov ${num}d,${num}d 393 mov ${num}d,${num}d
394 movd `($win64?56:8)`(%rsp),%xmm5 # load 7th argument 394 movd `($win64?56:8)`(%rsp),%xmm5 # load 7th argument
@@ -927,7 +927,7 @@ $code.=<<___;
927.type bn_scatter5,\@abi-omnipotent 927.type bn_scatter5,\@abi-omnipotent
928.align 16 928.align 16
929bn_scatter5: 929bn_scatter5:
930 endbr64 930 _CET_ENDBR
931 cmp \$0, $num 931 cmp \$0, $num
932 jz .Lscatter_epilogue 932 jz .Lscatter_epilogue
933 lea ($tbl,$idx,8),$tbl 933 lea ($tbl,$idx,8),$tbl
@@ -946,7 +946,7 @@ bn_scatter5:
946.type bn_gather5,\@abi-omnipotent 946.type bn_gather5,\@abi-omnipotent
947.align 16 947.align 16
948bn_gather5: 948bn_gather5:
949 endbr64 949 _CET_ENDBR
950.LSEH_begin_bn_gather5: # Win64 thing, but harmless in other cases 950.LSEH_begin_bn_gather5: # Win64 thing, but harmless in other cases
951 # I can't trust assembler to use specific encoding:-( 951 # I can't trust assembler to use specific encoding:-(
952 .byte 0x4c,0x8d,0x14,0x24 # lea (%rsp),%r10 952 .byte 0x4c,0x8d,0x14,0x24 # lea (%rsp),%r10
@@ -1057,7 +1057,7 @@ $code.=<<___;
1057.type mul_handler,\@abi-omnipotent 1057.type mul_handler,\@abi-omnipotent
1058.align 16 1058.align 16
1059mul_handler: 1059mul_handler:
1060 endbr64 1060 _CET_ENDBR
1061 push %rsi 1061 push %rsi
1062 push %rdi 1062 push %rdi
1063 push %rbx 1063 push %rbx
diff --git a/src/lib/libcrypto/bn/s2n_bignum_internal.h b/src/lib/libcrypto/bn/s2n_bignum_internal.h
index f413688338..b82db7d019 100644
--- a/src/lib/libcrypto/bn/s2n_bignum_internal.h
+++ b/src/lib/libcrypto/bn/s2n_bignum_internal.h
@@ -18,6 +18,12 @@
18# define S2N_BN_SYMBOL(name) name 18# define S2N_BN_SYMBOL(name) name
19#endif 19#endif
20 20
21#ifdef __CET__
22# include <cet.h>
23#else
24# define _CET_ENDBR
25#endif
26
21#define S2N_BN_SYM_VISIBILITY_DIRECTIVE(name) .globl S2N_BN_SYMBOL(name) 27#define S2N_BN_SYM_VISIBILITY_DIRECTIVE(name) .globl S2N_BN_SYMBOL(name)
22#ifdef S2N_BN_HIDE_SYMBOLS 28#ifdef S2N_BN_HIDE_SYMBOLS
23# ifdef __APPLE__ 29# ifdef __APPLE__