diff options
| author | miod <> | 2023-01-13 17:27:26 +0000 |
|---|---|---|
| committer | miod <> | 2023-01-13 17:27:26 +0000 |
| commit | 25c59400a04e7301aaa6acb604b5ebef9d2f4cf1 (patch) | |
| tree | 9aab92100156f42a43295dcb4074ba395f3a234d /src/lib/libcrypto/aes/asm | |
| parent | 6f56f28c72618c1e8d79d943e58f0f1c66e73832 (diff) | |
| download | openbsd-25c59400a04e7301aaa6acb604b5ebef9d2f4cf1.tar.gz openbsd-25c59400a04e7301aaa6acb604b5ebef9d2f4cf1.tar.bz2 openbsd-25c59400a04e7301aaa6acb604b5ebef9d2f4cf1.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 kettenis@
Diffstat (limited to 'src/lib/libcrypto/aes/asm')
| -rwxr-xr-x | src/lib/libcrypto/aes/asm/aes-sparcv9.pl | 61 |
1 files changed, 48 insertions, 13 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 |
| 85 | AES_Te: | 85 | AES_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 |
| 514 | AES_encrypt: | 515 | AES_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 | ||
| 525 | 1: 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 | ||
| 585 | 1: 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 |
| 631 | AES_Td: | 649 | AES_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 |
| 1060 | AES_decrypt: | 1079 | AES_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 | ||
| 1071 | 1: 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 | ||
| 1131 | 1: 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 | ||
