summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/aes/asm/aes-sparcv9.pl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xsrc/lib/libcrypto/aes/asm/aes-sparcv9.pl61
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
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