summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rwxr-xr-xsrc/lib/libcrypto/aes/asm/aes-sparcv9.pl61
-rw-r--r--src/lib/libcrypto/arch/sparc64/Makefile.inc4
-rw-r--r--src/lib/libcrypto/bn/asm/sparcv9-mont.pl2
-rwxr-xr-xsrc/lib/libcrypto/bn/asm/sparcv9a-mont.pl2
-rw-r--r--src/lib/libcrypto/modes/asm/ghash-sparcv9.pl35
-rw-r--r--src/lib/libcrypto/sha/asm/sha1-sparcv9.pl2
-rw-r--r--src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl17
-rw-r--r--src/lib/libcrypto/sha/asm/sha512-sparcv9.pl20
8 files changed, 104 insertions, 39 deletions
diff --git a/src/lib/libcrypto/aes/asm/aes-sparcv9.pl b/src/lib/libcrypto/aes/asm/aes-sparcv9.pl
index 403c4d1290..08ac9830f1 100755
--- a/src/lib/libcrypto/aes/asm/aes-sparcv9.pl
+++ b/src/lib/libcrypto/aes/asm/aes-sparcv9.pl
@@ -79,7 +79,7 @@ $code.=<<___ if ($bits==64);
79.register %g3,#scratch 79.register %g3,#scratch
80___ 80___
81$code.=<<___; 81$code.=<<___;
82.section ".text",#alloc,#execinstr 82.section ".rodata",#alloc
83 83
84.align 256 84.align 256
85AES_Te: 85AES_Te:
@@ -185,6 +185,7 @@ $code.=<<___;
185.type AES_Te,#object 185.type AES_Te,#object
186.size AES_Te,(.-AES_Te) 186.size AES_Te,(.-AES_Te)
187 187
188.section ".text",#alloc,#execinstr
188.align 64 189.align 64
189.skip 16 190.skip 16
190_sparcv9_AES_encrypt: 191_sparcv9_AES_encrypt:
@@ -512,18 +513,30 @@ _sparcv9_AES_encrypt:
512.align 32 513.align 32
513.globl AES_encrypt 514.globl AES_encrypt
514AES_encrypt: 515AES_encrypt:
515 or %o0,%o1,%g1 516 save %sp,-$frame,%sp
517#ifdef __PIC__
518 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5
519 rd %pc, %o4
520 or %o5, %lo(_GLOBAL_OFFSET_TABLE_+4), %o5
521 add %o5, %o4, %o5
522#endif
523
524 or %i0,%i1,%g1
516 andcc %g1,3,%g0 525 andcc %g1,3,%g0
517 bnz,pn %xcc,.Lunaligned_enc 526 bnz,pn %xcc,.Lunaligned_enc
518 save %sp,-$frame,%sp 527 nop
519 528
520 ld [%i0+0],%o0 529 ld [%i0+0],%o0
521 ld [%i0+4],%o1 530 ld [%i0+4],%o1
522 ld [%i0+8],%o2 531 ld [%i0+8],%o2
523 ld [%i0+12],%o3 532 ld [%i0+12],%o3
524 533
5251: call .+8 534#ifdef __PIC__
526 add %o7,AES_Te-1b,%o4 535 set AES_Te, %o4
536 ldx [%o4+%o5], %o4
537#else
538 set AES_Te, %o4
539#endif
527 call _sparcv9_AES_encrypt 540 call _sparcv9_AES_encrypt
528 mov %i2,%o5 541 mov %i2,%o5
529 542
@@ -582,8 +595,12 @@ AES_encrypt:
582 or %l7,%l6,%l6 595 or %l7,%l6,%l6
583 or %l4,%l6,%o3 596 or %l4,%l6,%o3
584 597
5851: call .+8 598#ifdef __PIC__
586 add %o7,AES_Te-1b,%o4 599 set AES_Te, %o4
600 ldx [%o4+%o5], %o4
601#else
602 set AES_Te, %o4
603#endif
587 call _sparcv9_AES_encrypt 604 call _sparcv9_AES_encrypt
588 mov %i2,%o5 605 mov %i2,%o5
589 606
@@ -627,6 +644,7 @@ AES_encrypt:
627___ 644___
628 645
629$code.=<<___; 646$code.=<<___;
647.section ".rodata",#alloc
630.align 256 648.align 256
631AES_Td: 649AES_Td:
632___ 650___
@@ -731,6 +749,7 @@ $code.=<<___;
731.type AES_Td,#object 749.type AES_Td,#object
732.size AES_Td,(.-AES_Td) 750.size AES_Td,(.-AES_Td)
733 751
752.section ".text",#alloc,#execinstr
734.align 64 753.align 64
735.skip 16 754.skip 16
736_sparcv9_AES_decrypt: 755_sparcv9_AES_decrypt:
@@ -1058,18 +1077,30 @@ _sparcv9_AES_decrypt:
1058.align 32 1077.align 32
1059.globl AES_decrypt 1078.globl AES_decrypt
1060AES_decrypt: 1079AES_decrypt:
1061 or %o0,%o1,%g1 1080 save %sp,-$frame,%sp
1081#ifdef __PIC__
1082 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5
1083 rd %pc, %o4
1084 or %o5, %lo(_GLOBAL_OFFSET_TABLE_+4), %o5
1085 add %o5, %o4, %o5
1086#endif
1087
1088 or %i0,%i1,%g1
1062 andcc %g1,3,%g0 1089 andcc %g1,3,%g0
1063 bnz,pn %xcc,.Lunaligned_dec 1090 bnz,pn %xcc,.Lunaligned_dec
1064 save %sp,-$frame,%sp 1091 nop
1065 1092
1066 ld [%i0+0],%o0 1093 ld [%i0+0],%o0
1067 ld [%i0+4],%o1 1094 ld [%i0+4],%o1
1068 ld [%i0+8],%o2 1095 ld [%i0+8],%o2
1069 ld [%i0+12],%o3 1096 ld [%i0+12],%o3
1070 1097
10711: call .+8 1098#ifdef __PIC__
1072 add %o7,AES_Td-1b,%o4 1099 set AES_Td, %o4
1100 ldx [%o4+%o5], %o4
1101#else
1102 set AES_Td, %o4
1103#endif
1073 call _sparcv9_AES_decrypt 1104 call _sparcv9_AES_decrypt
1074 mov %i2,%o5 1105 mov %i2,%o5
1075 1106
@@ -1128,8 +1159,12 @@ AES_decrypt:
1128 or %l7,%l6,%l6 1159 or %l7,%l6,%l6
1129 or %l4,%l6,%o3 1160 or %l4,%l6,%o3
1130 1161
11311: call .+8 1162#ifdef __PIC__
1132 add %o7,AES_Td-1b,%o4 1163 set AES_Td, %o4
1164 ldx [%o4+%o5], %o4
1165#else
1166 set AES_Td, %o4
1167#endif
1133 call _sparcv9_AES_decrypt 1168 call _sparcv9_AES_decrypt
1134 mov %i2,%o5 1169 mov %i2,%o5
1135 1170
diff --git a/src/lib/libcrypto/arch/sparc64/Makefile.inc b/src/lib/libcrypto/arch/sparc64/Makefile.inc
index cb502b28a3..223c941f77 100644
--- a/src/lib/libcrypto/arch/sparc64/Makefile.inc
+++ b/src/lib/libcrypto/arch/sparc64/Makefile.inc
@@ -1,9 +1,7 @@
1# $OpenBSD: Makefile.inc,v 1.5 2023/01/11 16:36:44 deraadt Exp $ 1# $OpenBSD: Makefile.inc,v 1.6 2023/01/13 17:27:26 miod Exp $
2 2
3# sparc64-specific libcrypto build rules 3# sparc64-specific libcrypto build rules
4 4
5LDADD+= -Wl,--no-execute-only
6
7# aes 5# aes
8SRCS+= aes_core.c aes_cbc.c 6SRCS+= aes_core.c aes_cbc.c
9CFLAGS+= -DAES_ASM 7CFLAGS+= -DAES_ASM
diff --git a/src/lib/libcrypto/bn/asm/sparcv9-mont.pl b/src/lib/libcrypto/bn/asm/sparcv9-mont.pl
index fb44c01443..610ec1a968 100644
--- a/src/lib/libcrypto/bn/asm/sparcv9-mont.pl
+++ b/src/lib/libcrypto/bn/asm/sparcv9-mont.pl
@@ -598,8 +598,6 @@ $code.=<<___;
598 add $tp,8,$tp 598 add $tp,8,$tp
599.type $fname,#function 599.type $fname,#function
600.size $fname,(.-$fname) 600.size $fname,(.-$fname)
601.asciz "Montgomery Multipltication for SPARCv9, CRYPTOGAMS by <appro\@openssl.org>"
602.align 32
603___ 601___
604$code =~ s/\`([^\`]*)\`/eval($1)/gem; 602$code =~ s/\`([^\`]*)\`/eval($1)/gem;
605print $code; 603print $code;
diff --git a/src/lib/libcrypto/bn/asm/sparcv9a-mont.pl b/src/lib/libcrypto/bn/asm/sparcv9a-mont.pl
index 4ebe15c5c0..7bb1725a0e 100755
--- a/src/lib/libcrypto/bn/asm/sparcv9a-mont.pl
+++ b/src/lib/libcrypto/bn/asm/sparcv9a-mont.pl
@@ -860,8 +860,6 @@ $fname:
860 restore 860 restore
861.type $fname,#function 861.type $fname,#function
862.size $fname,(.-$fname) 862.size $fname,(.-$fname)
863.asciz "Montgomery Multipltication for UltraSPARC, CRYPTOGAMS by <appro\@openssl.org>"
864.align 32
865___ 863___
866 864
867$code =~ s/\`([^\`]*)\`/eval($1)/gem; 865$code =~ s/\`([^\`]*)\`/eval($1)/gem;
diff --git a/src/lib/libcrypto/modes/asm/ghash-sparcv9.pl b/src/lib/libcrypto/modes/asm/ghash-sparcv9.pl
index 70e7b044a3..ce75045f09 100644
--- a/src/lib/libcrypto/modes/asm/ghash-sparcv9.pl
+++ b/src/lib/libcrypto/modes/asm/ghash-sparcv9.pl
@@ -67,7 +67,7 @@ $inp="%i2";
67$len="%i3"; 67$len="%i3";
68 68
69$code.=<<___; 69$code.=<<___;
70.section ".text",#alloc,#execinstr 70.section ".rodata",#alloc
71 71
72.align 64 72.align 64
73rem_4bit: 73rem_4bit:
@@ -78,18 +78,30 @@ rem_4bit:
78.type rem_4bit,#object 78.type rem_4bit,#object
79.size rem_4bit,(.-rem_4bit) 79.size rem_4bit,(.-rem_4bit)
80 80
81.section ".text",#alloc,#execinstr
81.globl gcm_ghash_4bit 82.globl gcm_ghash_4bit
82.align 32 83.align 32
83gcm_ghash_4bit: 84gcm_ghash_4bit:
84 save %sp,-$frame,%sp 85 save %sp,-$frame,%sp
86#ifdef __PIC__
87 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), $tmp
88 rd %pc, $rem
89 or $tmp, %lo(_GLOBAL_OFFSET_TABLE_+4), $tmp
90 add $tmp, $rem, $tmp
91#endif
92
85 ldub [$inp+15],$nlo 93 ldub [$inp+15],$nlo
86 ldub [$Xi+15],$xi0 94 ldub [$Xi+15],$xi0
87 ldub [$Xi+14],$xi1 95 ldub [$Xi+14],$xi1
88 add $len,$inp,$len 96 add $len,$inp,$len
89 add $Htbl,8,$Htblo 97 add $Htbl,8,$Htblo
90 98
911: call .+8 99#ifdef __PIC__
92 add %o7,rem_4bit-1b,$rem_4bit 100 set rem_4bit, $rem_4bit
101 ldx [$rem_4bit+$tmp], $rem_4bit
102#else
103 set rem_4bit, $rem_4bit
104#endif
93 105
94.Louter: 106.Louter:
95 xor $xi0,$nlo,$nlo 107 xor $xi0,$nlo,$nlo
@@ -223,11 +235,22 @@ $code.=<<___;
223.align 32 235.align 32
224gcm_gmult_4bit: 236gcm_gmult_4bit:
225 save %sp,-$frame,%sp 237 save %sp,-$frame,%sp
238#ifdef __PIC__
239 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), $tmp
240 rd %pc, $rem
241 or $tmp, %lo(_GLOBAL_OFFSET_TABLE_+4), $tmp
242 add $tmp, $rem, $tmp
243#endif
244
226 ldub [$Xi+15],$nlo 245 ldub [$Xi+15],$nlo
227 add $Htbl,8,$Htblo 246 add $Htbl,8,$Htblo
228 247
2291: call .+8 248#ifdef __PIC__
230 add %o7,rem_4bit-1b,$rem_4bit 249 set rem_4bit, $rem_4bit
250 ldx [$rem_4bit+$tmp], $rem_4bit
251#else
252 set rem_4bit, $rem_4bit
253#endif
231 254
232 and $nlo,0xf0,$nhi 255 and $nlo,0xf0,$nhi
233 and $nlo,0x0f,$nlo 256 and $nlo,0x0f,$nlo
@@ -321,8 +344,6 @@ gcm_gmult_4bit:
321 restore 344 restore
322.type gcm_gmult_4bit,#function 345.type gcm_gmult_4bit,#function
323.size gcm_gmult_4bit,(.-gcm_gmult_4bit) 346.size gcm_gmult_4bit,(.-gcm_gmult_4bit)
324.asciz "GHASH for SPARCv9, CRYPTOGAMS by <appro\@openssl.org>"
325.align 4
326___ 347___
327 348
328$code =~ s/\`([^\`]*)\`/eval $1/gem; 349$code =~ s/\`([^\`]*)\`/eval $1/gem;
diff --git a/src/lib/libcrypto/sha/asm/sha1-sparcv9.pl b/src/lib/libcrypto/sha/asm/sha1-sparcv9.pl
index 5c161cecd6..5235c59e63 100644
--- a/src/lib/libcrypto/sha/asm/sha1-sparcv9.pl
+++ b/src/lib/libcrypto/sha/asm/sha1-sparcv9.pl
@@ -275,8 +275,6 @@ $code.=<<___;
275 restore 275 restore
276.type sha1_block_data_order,#function 276.type sha1_block_data_order,#function
277.size sha1_block_data_order,(.-sha1_block_data_order) 277.size sha1_block_data_order,(.-sha1_block_data_order)
278.asciz "SHA1 block transform for SPARCv9, CRYPTOGAMS by <appro\@openssl.org>"
279.align 4
280___ 278___
281 279
282$code =~ s/\`([^\`]*)\`/eval $1/gem; 280$code =~ s/\`([^\`]*)\`/eval $1/gem;
diff --git a/src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl b/src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl
index e81a4dcb05..8e7674e9d2 100644
--- a/src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl
+++ b/src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl
@@ -396,7 +396,7 @@ ___
396} 396}
397 397
398$code.=<<___; 398$code.=<<___;
399.section ".text",#alloc,#execinstr 399.section ".rodata",#alloc
400 400
401.align 64 401.align 64
402vis_const: 402vis_const:
@@ -409,13 +409,22 @@ vis_const:
409.type vis_const,#object 409.type vis_const,#object
410.size vis_const,(.-vis_const) 410.size vis_const,(.-vis_const)
411 411
412.section ".text",#alloc,#execinstr
412.globl sha1_block_data_order 413.globl sha1_block_data_order
413sha1_block_data_order: 414sha1_block_data_order:
414 save %sp,-$frame,%sp 415 save %sp,-$frame,%sp
415 add %fp,$bias-256,$base 416 add %fp,$bias-256,$base
416 417
4171: call .+8 418#ifdef __PIC__
418 add %o7,vis_const-1b,$tmp0 419 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5
420 rd %pc, %o4
421 or %o5, %lo(_GLOBAL_OFFSET_TABLE_+4), %o5
422 add %o5, %o4, %o5
423 set vis_const, %o4
424 ldx [%o4+%o5], %o4
425#else
426 set vis_const, %o4
427#endif
419 428
420 ldd [$tmp0+0],$VK_00_19 429 ldd [$tmp0+0],$VK_00_19
421 ldd [$tmp0+8],$VK_20_39 430 ldd [$tmp0+8],$VK_20_39
@@ -538,8 +547,6 @@ $code.=<<___;
538 restore 547 restore
539.type sha1_block_data_order,#function 548.type sha1_block_data_order,#function
540.size sha1_block_data_order,(.-sha1_block_data_order) 549.size sha1_block_data_order,(.-sha1_block_data_order)
541.asciz "SHA1 block transform for SPARCv9a, CRYPTOGAMS by <appro\@openssl.org>"
542.align 4
543___ 550___
544 551
545# Purpose of these subroutines is to explicitly encode VIS instructions, 552# Purpose of these subroutines is to explicitly encode VIS instructions,
diff --git a/src/lib/libcrypto/sha/asm/sha512-sparcv9.pl b/src/lib/libcrypto/sha/asm/sha512-sparcv9.pl
index 585740789e..3c93799446 100644
--- a/src/lib/libcrypto/sha/asm/sha512-sparcv9.pl
+++ b/src/lib/libcrypto/sha/asm/sha512-sparcv9.pl
@@ -386,7 +386,7 @@ $code.=<<___ if ($bits==64);
386.register %g3,#scratch 386.register %g3,#scratch
387___ 387___
388$code.=<<___; 388$code.=<<___;
389.section ".text",#alloc,#execinstr 389.section ".rodata",#alloc
390 390
391.align 64 391.align 64
392K${label}: 392K${label}:
@@ -457,9 +457,17 @@ ___
457} 457}
458$code.=<<___; 458$code.=<<___;
459.size K${label},.-K${label} 459.size K${label},.-K${label}
460
461.section ".text",#alloc,#execinstr
460.globl sha${label}_block_data_order 462.globl sha${label}_block_data_order
461sha${label}_block_data_order: 463sha${label}_block_data_order:
462 save %sp,`-$frame-$locals`,%sp 464 save %sp,`-$frame-$locals`,%sp
465#ifdef __PIC__
466 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5
467 rd %pc, %o4
468 or %o5, %lo(_GLOBAL_OFFSET_TABLE_+4), %o5
469 add %o5, %o4, %o5
470#endif
463 and $inp,`$align-1`,$tmp31 471 and $inp,`$align-1`,$tmp31
464 sllx $len,`log(16*$SZ)/log(2)`,$len 472 sllx $len,`log(16*$SZ)/log(2)`,$len
465 andn $inp,`$align-1`,$inp 473 andn $inp,`$align-1`,$inp
@@ -471,8 +479,12 @@ $code.=<<___ if ($SZ==8); # SHA512
471 sub $tmp32,$tmp31,$tmp32 479 sub $tmp32,$tmp31,$tmp32
472___ 480___
473$code.=<<___; 481$code.=<<___;
474.Lpic: call .+8 482#ifdef __PIC__
475 add %o7,K${label}-.Lpic,$Ktbl 483 set K${label}, $Ktbl
484 ldx [$Ktbl+%o5], $Ktbl
485#else
486 set K${label}, $Ktbl
487#endif
476 488
477 $LD [$ctx+`0*$SZ`],$A 489 $LD [$ctx+`0*$SZ`],$A
478 $LD [$ctx+`1*$SZ`],$B 490 $LD [$ctx+`1*$SZ`],$B
@@ -585,8 +597,6 @@ $code.=<<___;
585 restore 597 restore
586.type sha${label}_block_data_order,#function 598.type sha${label}_block_data_order,#function
587.size sha${label}_block_data_order,(.-sha${label}_block_data_order) 599.size sha${label}_block_data_order,(.-sha${label}_block_data_order)
588.asciz "SHA${label} block transform for SPARCv9, CRYPTOGAMS by <appro\@openssl.org>"
589.align 4
590___ 600___
591 601
592$code =~ s/\`([^\`]*)\`/eval $1/gem; 602$code =~ s/\`([^\`]*)\`/eval $1/gem;