diff options
Diffstat (limited to '')
-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 | ||