diff options
author | miod <> | 2023-01-13 17:11:41 +0000 |
---|---|---|
committer | miod <> | 2023-01-13 17:11:41 +0000 |
commit | 364fc1ecd2d96b869246574350c6925835b991ab (patch) | |
tree | 754902f7e6ad288b35b04ef817ed997460a00546 | |
parent | f80a4029bb2f43fe5f0270857d48bc9d41d3ea4e (diff) | |
download | openbsd-364fc1ecd2d96b869246574350c6925835b991ab.tar.gz openbsd-364fc1ecd2d96b869246574350c6925835b991ab.tar.bz2 openbsd-364fc1ecd2d96b869246574350c6925835b991ab.zip |
Move all data tables from .text section to .rodata, and update the code to
fetch them correctly when building PIC. Also drop unused data, and remove
--no-execute-only from linker flags.
ok jsing@ kettenis@
-rw-r--r-- | src/lib/libcrypto/aes/asm/aes-parisc.pl | 34 | ||||
-rw-r--r-- | src/lib/libcrypto/arch/hppa/Makefile.inc | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/asm/parisc-mont.pl | 10 | ||||
-rw-r--r-- | src/lib/libcrypto/modes/asm/ghash-parisc.pl | 33 | ||||
-rw-r--r-- | src/lib/libcrypto/rc4/asm/rc4-parisc.pl | 21 | ||||
-rw-r--r-- | src/lib/libcrypto/sha/asm/sha1-parisc.pl | 8 | ||||
-rwxr-xr-x | src/lib/libcrypto/sha/asm/sha512-parisc.pl | 22 |
7 files changed, 54 insertions, 78 deletions
diff --git a/src/lib/libcrypto/aes/asm/aes-parisc.pl b/src/lib/libcrypto/aes/asm/aes-parisc.pl index f12a1c18ec..43dbfc108d 100644 --- a/src/lib/libcrypto/aes/asm/aes-parisc.pl +++ b/src/lib/libcrypto/aes/asm/aes-parisc.pl | |||
@@ -64,12 +64,7 @@ $rounds="%r29"; | |||
64 | 64 | ||
65 | $code=<<___; | 65 | $code=<<___; |
66 | .LEVEL $LEVEL | 66 | .LEVEL $LEVEL |
67 | #if 0 | ||
68 | .SPACE \$TEXT\$ | ||
69 | .SUBSPA \$CODE\$,QUAD=0,ALIGN=8,ACCESS=0x2C,CODE_ONLY | ||
70 | #else | ||
71 | .text | 67 | .text |
72 | #endif | ||
73 | 68 | ||
74 | .EXPORT AES_encrypt,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR | 69 | .EXPORT AES_encrypt,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR |
75 | .ALIGN 64 | 70 | .ALIGN 64 |
@@ -95,11 +90,14 @@ AES_encrypt | |||
95 | $PUSH %r17,`-$FRAME+14*$SIZE_T`(%sp) | 90 | $PUSH %r17,`-$FRAME+14*$SIZE_T`(%sp) |
96 | $PUSH %r18,`-$FRAME+15*$SIZE_T`(%sp) | 91 | $PUSH %r18,`-$FRAME+15*$SIZE_T`(%sp) |
97 | 92 | ||
98 | blr %r0,$tbl | ||
99 | ldi 3,$t0 | 93 | ldi 3,$t0 |
100 | L\$enc_pic | 94 | #ifdef __PIC__ |
101 | andcm $tbl,$t0,$tbl | 95 | addil LT'L\$AES_Te, %r19 |
102 | ldo L\$AES_Te-L\$enc_pic($tbl),$tbl | 96 | ldw RT'L\$AES_Te(%r1), $tbl |
97 | #else | ||
98 | ldil L'L\$AES_Te, %t1 | ||
99 | ldo R'L\$AES_Te(%t1), $tbl | ||
100 | #endif | ||
103 | 101 | ||
104 | and $inp,$t0,$t0 | 102 | and $inp,$t0,$t0 |
105 | sub $inp,$t0,$inp | 103 | sub $inp,$t0,$inp |
@@ -439,6 +437,7 @@ L\$enc_last | |||
439 | xor $acc15,$s3,$s3 | 437 | xor $acc15,$s3,$s3 |
440 | .PROCEND | 438 | .PROCEND |
441 | 439 | ||
440 | .section .rodata | ||
442 | .ALIGN 64 | 441 | .ALIGN 64 |
443 | L\$AES_Te | 442 | L\$AES_Te |
444 | .WORD 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d | 443 | .WORD 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d |
@@ -537,6 +536,7 @@ L\$AES_Te | |||
537 | .BYTE 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf | 536 | .BYTE 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf |
538 | .BYTE 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 | 537 | .BYTE 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 |
539 | .BYTE 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 | 538 | .BYTE 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 |
539 | .previous | ||
540 | ___ | 540 | ___ |
541 | 541 | ||
542 | $code.=<<___; | 542 | $code.=<<___; |
@@ -564,11 +564,14 @@ AES_decrypt | |||
564 | $PUSH %r17,`-$FRAME+14*$SIZE_T`(%sp) | 564 | $PUSH %r17,`-$FRAME+14*$SIZE_T`(%sp) |
565 | $PUSH %r18,`-$FRAME+15*$SIZE_T`(%sp) | 565 | $PUSH %r18,`-$FRAME+15*$SIZE_T`(%sp) |
566 | 566 | ||
567 | blr %r0,$tbl | ||
568 | ldi 3,$t0 | 567 | ldi 3,$t0 |
569 | L\$dec_pic | 568 | #ifdef __PIC__ |
570 | andcm $tbl,$t0,$tbl | 569 | addil LT'L\$AES_Td, %r19 |
571 | ldo L\$AES_Td-L\$dec_pic($tbl),$tbl | 570 | ldw RT'L\$AES_Td(%r1), $tbl |
571 | #else | ||
572 | ldil L'L\$AES_Td, %t1 | ||
573 | ldo R'L\$AES_Td(%t1), $tbl | ||
574 | #endif | ||
572 | 575 | ||
573 | and $inp,$t0,$t0 | 576 | and $inp,$t0,$t0 |
574 | sub $inp,$t0,$inp | 577 | sub $inp,$t0,$inp |
@@ -908,6 +911,7 @@ L\$dec_last | |||
908 | xor $acc15,$s3,$s3 | 911 | xor $acc15,$s3,$s3 |
909 | .PROCEND | 912 | .PROCEND |
910 | 913 | ||
914 | .section .rodata | ||
911 | .ALIGN 64 | 915 | .ALIGN 64 |
912 | L\$AES_Td | 916 | L\$AES_Td |
913 | .WORD 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96 | 917 | .WORD 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96 |
@@ -1006,9 +1010,7 @@ L\$AES_Td | |||
1006 | .BYTE 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 | 1010 | .BYTE 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 |
1007 | .BYTE 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 | 1011 | .BYTE 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 |
1008 | .BYTE 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d | 1012 | .BYTE 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d |
1009 | 1013 | .previous | |
1010 | .data | ||
1011 | .STRINGZ "AES for PA-RISC, CRYPTOGAMS by <appro\@openssl.org>" | ||
1012 | ___ | 1014 | ___ |
1013 | 1015 | ||
1014 | foreach (split("\n",$code)) { | 1016 | foreach (split("\n",$code)) { |
diff --git a/src/lib/libcrypto/arch/hppa/Makefile.inc b/src/lib/libcrypto/arch/hppa/Makefile.inc index 8744a0bbb8..eb15810f38 100644 --- a/src/lib/libcrypto/arch/hppa/Makefile.inc +++ b/src/lib/libcrypto/arch/hppa/Makefile.inc | |||
@@ -1,9 +1,7 @@ | |||
1 | # $OpenBSD: Makefile.inc,v 1.11 2023/01/11 16:25:13 deraadt Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.12 2023/01/13 17:11:41 miod Exp $ |
2 | 2 | ||
3 | # hppa-specific libcrypto build rules | 3 | # hppa-specific libcrypto build rules |
4 | 4 | ||
5 | LDADD+= -Wl,--no-execute-only | ||
6 | |||
7 | # aes | 5 | # aes |
8 | SRCS+= aes_core.c aes_cbc.c | 6 | SRCS+= aes_core.c aes_cbc.c |
9 | CFLAGS+= -DAES_ASM | 7 | CFLAGS+= -DAES_ASM |
diff --git a/src/lib/libcrypto/bn/asm/parisc-mont.pl b/src/lib/libcrypto/bn/asm/parisc-mont.pl index 6da9574adf..0c7aff93b9 100644 --- a/src/lib/libcrypto/bn/asm/parisc-mont.pl +++ b/src/lib/libcrypto/bn/asm/parisc-mont.pl | |||
@@ -126,12 +126,7 @@ $fni="%fr9"; $fnm0="%fr10"; $fnm1="%fr11"; | |||
126 | 126 | ||
127 | $code=<<___; | 127 | $code=<<___; |
128 | .LEVEL $LEVEL | 128 | .LEVEL $LEVEL |
129 | #if 0 | ||
130 | .SPACE \$TEXT\$ | ||
131 | .SUBSPA \$CODE\$,QUAD=0,ALIGN=8,ACCESS=0x2C,CODE_ONLY | ||
132 | #else | ||
133 | .text | 129 | .text |
134 | #endif | ||
135 | 130 | ||
136 | .EXPORT bn_mul_mont,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR | 131 | .EXPORT bn_mul_mont,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR |
137 | .ALIGN 64 | 132 | .ALIGN 64 |
@@ -214,7 +209,7 @@ $code.=<<___; | |||
214 | flddx $idx($np),${fni} ; np[2,3] | 209 | flddx $idx($np),${fni} ; np[2,3] |
215 | ___ | 210 | ___ |
216 | $code.=<<___ if ($BN_SZ==4); | 211 | $code.=<<___ if ($BN_SZ==4); |
217 | #ifndef __OpenBSD__ | 212 | #ifdef __LP64__ |
218 | mtctl $hi0,%cr11 ; $hi0 still holds 31 | 213 | mtctl $hi0,%cr11 ; $hi0 still holds 31 |
219 | extrd,u,*= $hi0,%sar,1,$hi0 ; executes on PA-RISC 1.0 | 214 | extrd,u,*= $hi0,%sar,1,$hi0 ; executes on PA-RISC 1.0 |
220 | b L\$parisc11 | 215 | b L\$parisc11 |
@@ -881,9 +876,6 @@ L\$abort | |||
881 | .EXIT | 876 | .EXIT |
882 | $POPMB -$FRAME(%sp),%r3 | 877 | $POPMB -$FRAME(%sp),%r3 |
883 | .PROCEND | 878 | .PROCEND |
884 | |||
885 | .data | ||
886 | .STRINGZ "Montgomery Multiplication for PA-RISC, CRYPTOGAMS by <appro\@openssl.org>" | ||
887 | ___ | 879 | ___ |
888 | 880 | ||
889 | # Explicitly encode PA-RISC 2.0 instructions used in this module, so | 881 | # Explicitly encode PA-RISC 2.0 instructions used in this module, so |
diff --git a/src/lib/libcrypto/modes/asm/ghash-parisc.pl b/src/lib/libcrypto/modes/asm/ghash-parisc.pl index 965802d3fa..3f98513105 100644 --- a/src/lib/libcrypto/modes/asm/ghash-parisc.pl +++ b/src/lib/libcrypto/modes/asm/ghash-parisc.pl | |||
@@ -81,12 +81,7 @@ $rem2="%r6"; # used in PA-RISC 2.0 code | |||
81 | 81 | ||
82 | $code.=<<___; | 82 | $code.=<<___; |
83 | .LEVEL $LEVEL | 83 | .LEVEL $LEVEL |
84 | #if 0 | ||
85 | .SPACE \$TEXT\$ | ||
86 | .SUBSPA \$CODE\$,QUAD=0,ALIGN=8,ACCESS=0x2C,CODE_ONLY | ||
87 | #else | ||
88 | .text | 84 | .text |
89 | #endif | ||
90 | 85 | ||
91 | .EXPORT gcm_gmult_4bit,ENTRY,ARGW0=GR,ARGW1=GR | 86 | .EXPORT gcm_gmult_4bit,ENTRY,ARGW0=GR,ARGW1=GR |
92 | .ALIGN 64 | 87 | .ALIGN 64 |
@@ -108,12 +103,14 @@ $code.=<<___ if ($SIZE_T==4); | |||
108 | $PUSH %r11,`-$FRAME+8*$SIZE_T`(%sp) | 103 | $PUSH %r11,`-$FRAME+8*$SIZE_T`(%sp) |
109 | ___ | 104 | ___ |
110 | $code.=<<___; | 105 | $code.=<<___; |
111 | blr %r0,$rem_4bit | ||
112 | ldi 3,$rem | ||
113 | L\$pic_gmult | ||
114 | andcm $rem_4bit,$rem,$rem_4bit | ||
115 | addl $inp,$len,$len | 106 | addl $inp,$len,$len |
116 | ldo L\$rem_4bit-L\$pic_gmult($rem_4bit),$rem_4bit | 107 | #ifdef __PIC__ |
108 | addil LT'L\$rem_4bit, %r19 | ||
109 | ldw RT'L\$rem_4bit(%r1), $rem_4bit | ||
110 | #else | ||
111 | ldil L'L\$rem_4bit, %t1 | ||
112 | ldo R'L\$rem_4bit(%t1), $rem_4bit | ||
113 | #endif | ||
117 | ldi 0xf0,$mask0xf0 | 114 | ldi 0xf0,$mask0xf0 |
118 | ___ | 115 | ___ |
119 | $code.=<<___ if ($SIZE_T==4); | 116 | $code.=<<___ if ($SIZE_T==4); |
@@ -363,12 +360,14 @@ $code.=<<___ if ($SIZE_T==4); | |||
363 | $PUSH %r11,`-$FRAME+8*$SIZE_T`(%sp) | 360 | $PUSH %r11,`-$FRAME+8*$SIZE_T`(%sp) |
364 | ___ | 361 | ___ |
365 | $code.=<<___; | 362 | $code.=<<___; |
366 | blr %r0,$rem_4bit | ||
367 | ldi 3,$rem | ||
368 | L\$pic_ghash | ||
369 | andcm $rem_4bit,$rem,$rem_4bit | ||
370 | addl $inp,$len,$len | 363 | addl $inp,$len,$len |
371 | ldo L\$rem_4bit-L\$pic_ghash($rem_4bit),$rem_4bit | 364 | #ifdef __PIC__ |
365 | addil LT'L\$rem_4bit, %r19 | ||
366 | ldw RT'L\$rem_4bit(%r1), $rem_4bit | ||
367 | #else | ||
368 | ldil L'L\$rem_4bit, %t1 | ||
369 | ldo R'L\$rem_4bit(%t1), $rem_4bit | ||
370 | #endif | ||
372 | ldi 0xf0,$mask0xf0 | 371 | ldi 0xf0,$mask0xf0 |
373 | ___ | 372 | ___ |
374 | $code.=<<___ if ($SIZE_T==4); | 373 | $code.=<<___ if ($SIZE_T==4); |
@@ -619,15 +618,15 @@ $code.=<<___; | |||
619 | $POPMB -$FRAME(%sp),%r3 | 618 | $POPMB -$FRAME(%sp),%r3 |
620 | .PROCEND | 619 | .PROCEND |
621 | 620 | ||
621 | .section .rodata | ||
622 | .ALIGN 64 | 622 | .ALIGN 64 |
623 | L\$rem_4bit | 623 | L\$rem_4bit |
624 | .WORD `0x0000<<16`,0,`0x1C20<<16`,0,`0x3840<<16`,0,`0x2460<<16`,0 | 624 | .WORD `0x0000<<16`,0,`0x1C20<<16`,0,`0x3840<<16`,0,`0x2460<<16`,0 |
625 | .WORD `0x7080<<16`,0,`0x6CA0<<16`,0,`0x48C0<<16`,0,`0x54E0<<16`,0 | 625 | .WORD `0x7080<<16`,0,`0x6CA0<<16`,0,`0x48C0<<16`,0,`0x54E0<<16`,0 |
626 | .WORD `0xE100<<16`,0,`0xFD20<<16`,0,`0xD940<<16`,0,`0xC560<<16`,0 | 626 | .WORD `0xE100<<16`,0,`0xFD20<<16`,0,`0xD940<<16`,0,`0xC560<<16`,0 |
627 | .WORD `0x9180<<16`,0,`0x8DA0<<16`,0,`0xA9C0<<16`,0,`0xB5E0<<16`,0 | 627 | .WORD `0x9180<<16`,0,`0x8DA0<<16`,0,`0xA9C0<<16`,0,`0xB5E0<<16`,0 |
628 | .previous | ||
628 | 629 | ||
629 | .data | ||
630 | .STRINGZ "GHASH for PA-RISC, GRYPTOGAMS by <appro\@openssl.org>" | ||
631 | .ALIGN 64 | 630 | .ALIGN 64 |
632 | ___ | 631 | ___ |
633 | 632 | ||
diff --git a/src/lib/libcrypto/rc4/asm/rc4-parisc.pl b/src/lib/libcrypto/rc4/asm/rc4-parisc.pl index 7e7974430a..24e3e0c30b 100644 --- a/src/lib/libcrypto/rc4/asm/rc4-parisc.pl +++ b/src/lib/libcrypto/rc4/asm/rc4-parisc.pl | |||
@@ -137,12 +137,7 @@ ___ | |||
137 | 137 | ||
138 | $code=<<___; | 138 | $code=<<___; |
139 | .LEVEL $LEVEL | 139 | .LEVEL $LEVEL |
140 | #if 0 | ||
141 | .SPACE \$TEXT\$ | ||
142 | .SUBSPA \$CODE\$,QUAD=0,ALIGN=8,ACCESS=0x2C,CODE_ONLY | ||
143 | #else | ||
144 | .text | 140 | .text |
145 | #endif | ||
146 | 141 | ||
147 | .EXPORT RC4,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR | 142 | .EXPORT RC4,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR |
148 | RC4 | 143 | RC4 |
@@ -297,20 +292,22 @@ RC4_options | |||
297 | .PROC | 292 | .PROC |
298 | .CALLINFO NO_CALLS | 293 | .CALLINFO NO_CALLS |
299 | .ENTRY | 294 | .ENTRY |
300 | blr %r0,%r28 | 295 | #ifdef __PIC__ |
301 | ldi 3,%r1 | 296 | addil LT'L\$opts, %r19 |
302 | L\$pic | 297 | ldw RT'L\$opts(%r1), %r28 |
303 | andcm %r28,%r1,%r28 | 298 | #else |
299 | ldil L'L\$opts, %t1 | ||
300 | ldo R'L\$opts(%t1), %r28 | ||
301 | #endif | ||
304 | bv (%r2) | 302 | bv (%r2) |
305 | .EXIT | 303 | .EXIT |
306 | ldo L\$opts-L\$pic(%r28),%r28 | 304 | nop |
307 | .PROCEND | 305 | .PROCEND |
308 | 306 | ||
309 | .data | 307 | .section .rodata |
310 | .ALIGN 8 | 308 | .ALIGN 8 |
311 | L\$opts | 309 | L\$opts |
312 | .STRINGZ "rc4(4x,`$SZ==1?"char":"int"`)" | 310 | .STRINGZ "rc4(4x,`$SZ==1?"char":"int"`)" |
313 | .STRINGZ "RC4 for PA-RISC, CRYPTOGAMS by <appro\@openssl.org>" | ||
314 | ___ | 311 | ___ |
315 | $code =~ s/\`([^\`]*)\`/eval $1/gem; | 312 | $code =~ s/\`([^\`]*)\`/eval $1/gem; |
316 | $code =~ s/cmpib,\*/comib,/gm if ($SIZE_T==4); | 313 | $code =~ s/cmpib,\*/comib,/gm if ($SIZE_T==4); |
diff --git a/src/lib/libcrypto/sha/asm/sha1-parisc.pl b/src/lib/libcrypto/sha/asm/sha1-parisc.pl index 6cb4656422..783c26272b 100644 --- a/src/lib/libcrypto/sha/asm/sha1-parisc.pl +++ b/src/lib/libcrypto/sha/asm/sha1-parisc.pl | |||
@@ -146,12 +146,7 @@ ___ | |||
146 | 146 | ||
147 | $code=<<___; | 147 | $code=<<___; |
148 | .LEVEL $LEVEL | 148 | .LEVEL $LEVEL |
149 | #if 0 | ||
150 | .SPACE \$TEXT\$ | ||
151 | .SUBSPA \$CODE\$,QUAD=0,ALIGN=8,ACCESS=0x2C,CODE_ONLY | ||
152 | #else | ||
153 | .text | 149 | .text |
154 | #endif | ||
155 | 150 | ||
156 | .EXPORT sha1_block_data_order,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR | 151 | .EXPORT sha1_block_data_order,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR |
157 | sha1_block_data_order | 152 | sha1_block_data_order |
@@ -254,9 +249,6 @@ $code.=<<___; | |||
254 | .EXIT | 249 | .EXIT |
255 | $POPMB -$FRAME(%sp),%r3 | 250 | $POPMB -$FRAME(%sp),%r3 |
256 | .PROCEND | 251 | .PROCEND |
257 | |||
258 | .data | ||
259 | .STRINGZ "SHA1 block transform for PA-RISC, CRYPTOGAMS by <appro\@openssl.org>" | ||
260 | ___ | 252 | ___ |
261 | 253 | ||
262 | $code =~ s/\`([^\`]*)\`/eval $1/gem; | 254 | $code =~ s/\`([^\`]*)\`/eval $1/gem; |
diff --git a/src/lib/libcrypto/sha/asm/sha512-parisc.pl b/src/lib/libcrypto/sha/asm/sha512-parisc.pl index 0704302d2a..42832e29f1 100755 --- a/src/lib/libcrypto/sha/asm/sha512-parisc.pl +++ b/src/lib/libcrypto/sha/asm/sha512-parisc.pl | |||
@@ -159,13 +159,9 @@ ___ | |||
159 | 159 | ||
160 | $code=<<___; | 160 | $code=<<___; |
161 | .LEVEL $LEVEL | 161 | .LEVEL $LEVEL |
162 | #if 0 | ||
163 | .SPACE \$TEXT\$ | ||
164 | .SUBSPA \$CODE\$,QUAD=0,ALIGN=8,ACCESS=0x2C,CODE_ONLY | ||
165 | #else | ||
166 | .text | 162 | .text |
167 | #endif | ||
168 | 163 | ||
164 | .section .rodata | ||
169 | .ALIGN 64 | 165 | .ALIGN 64 |
170 | L\$table | 166 | L\$table |
171 | ___ | 167 | ___ |
@@ -230,6 +226,7 @@ $code.=<<___ if ($SZ==4); | |||
230 | .WORD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 | 226 | .WORD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 |
231 | ___ | 227 | ___ |
232 | $code.=<<___; | 228 | $code.=<<___; |
229 | .previous | ||
233 | 230 | ||
234 | .EXPORT $func,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR | 231 | .EXPORT $func,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR |
235 | .ALIGN 64 | 232 | .ALIGN 64 |
@@ -262,11 +259,13 @@ $func | |||
262 | $PUSH $inp,`-$FRAME_MARKER-3*$SIZE_T`(%sp) | 259 | $PUSH $inp,`-$FRAME_MARKER-3*$SIZE_T`(%sp) |
263 | $PUSH $ctx,`-$FRAME_MARKER-2*$SIZE_T`(%sp) | 260 | $PUSH $ctx,`-$FRAME_MARKER-2*$SIZE_T`(%sp) |
264 | 261 | ||
265 | blr %r0,$Tbl | 262 | #ifdef __PIC__ |
266 | ldi 3,$t1 | 263 | addil LT'L\$table, %r19 |
267 | L\$pic | 264 | ldw RT'L\$table(%r1), $Tbl |
268 | andcm $Tbl,$t1,$Tbl ; wipe privilege level | 265 | #else |
269 | ldo L\$table-L\$pic($Tbl),$Tbl | 266 | ldil L'L\$table, %t1 |
267 | ldo R'L\$table(%t1), $Tbl | ||
268 | #endif | ||
270 | ___ | 269 | ___ |
271 | $code.=<<___ if ($SZ==8 && $SIZE_T==4); | 270 | $code.=<<___ if ($SZ==8 && $SIZE_T==4); |
272 | #ifndef __OpenBSD__ | 271 | #ifndef __OpenBSD__ |
@@ -692,9 +691,6 @@ $code.=<<___; | |||
692 | .EXIT | 691 | .EXIT |
693 | $POPMB -$FRAME(%sp),%r3 | 692 | $POPMB -$FRAME(%sp),%r3 |
694 | .PROCEND | 693 | .PROCEND |
695 | |||
696 | .data | ||
697 | .STRINGZ "SHA`64*$SZ` block transform for PA-RISC, CRYPTOGAMS by <appro\@openssl.org>" | ||
698 | ___ | 694 | ___ |
699 | 695 | ||
700 | # Explicitly encode PA-RISC 2.0 instructions used in this module, so | 696 | # Explicitly encode PA-RISC 2.0 instructions used in this module, so |