OLD | NEW |
1 | 1 |
2 @ ==================================================================== | 2 @ ==================================================================== |
3 @ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL | 3 @ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL |
4 @ project. The module is, however, dual licensed under OpenSSL and | 4 @ project. The module is, however, dual licensed under OpenSSL and |
5 @ CRYPTOGAMS licenses depending on where you obtain it. For further | 5 @ CRYPTOGAMS licenses depending on where you obtain it. For further |
6 @ details see http://www.openssl.org/~appro/cryptogams/. | 6 @ details see http://www.openssl.org/~appro/cryptogams/. |
7 @ ==================================================================== | 7 @ ==================================================================== |
8 | 8 |
9 @ AES for ARMv4 | 9 @ AES for ARMv4 |
10 | 10 |
(...skipping 25 matching lines...) Expand all Loading... |
36 # include "arm_arch.h" | 36 # include "arm_arch.h" |
37 #else | 37 #else |
38 # define __ARM_ARCH__ __LINUX_ARM_ARCH__ | 38 # define __ARM_ARCH__ __LINUX_ARM_ARCH__ |
39 #endif | 39 #endif |
40 | 40 |
41 .text | 41 .text |
42 #if __ARM_ARCH__<7 | 42 #if __ARM_ARCH__<7 |
43 .code 32 | 43 .code 32 |
44 #else | 44 #else |
45 .syntax unified | 45 .syntax unified |
46 # ifdef __thumb2__ | 46 # if defined(__thumb2__) && !defined(__APPLE__) |
47 .thumb | 47 .thumb |
48 # else | 48 # else |
49 .code 32 | 49 .code 32 |
50 # endif | 50 # endif |
51 #endif | 51 #endif |
52 | 52 |
53 .type AES_Te,%object | 53 .type AES_Te,%object |
54 .align 5 | 54 .align 5 |
55 AES_Te: | 55 AES_Te: |
56 .word 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d | 56 .word 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 .byte 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 | 151 .byte 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 |
152 .byte 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 | 152 .byte 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 |
153 @ rcon[] | 153 @ rcon[] |
154 .word 0x01000000, 0x02000000, 0x04000000, 0x08000000 | 154 .word 0x01000000, 0x02000000, 0x04000000, 0x08000000 |
155 .word 0x10000000, 0x20000000, 0x40000000, 0x80000000 | 155 .word 0x10000000, 0x20000000, 0x40000000, 0x80000000 |
156 .word 0x1B000000, 0x36000000, 0, 0, 0, 0, 0, 0 | 156 .word 0x1B000000, 0x36000000, 0, 0, 0, 0, 0, 0 |
157 .size AES_Te,.-AES_Te | 157 .size AES_Te,.-AES_Te |
158 | 158 |
159 @ void asm_AES_encrypt(const unsigned char *in, unsigned char *out, | 159 @ void asm_AES_encrypt(const unsigned char *in, unsigned char *out, |
160 @ const AES_KEY *key) { | 160 @ const AES_KEY *key) { |
161 .global asm_AES_encrypt | 161 .globl» asm_AES_encrypt |
162 .hidden asm_AES_encrypt | 162 .hidden»asm_AES_encrypt |
163 .type asm_AES_encrypt,%function | 163 .type» asm_AES_encrypt,%function |
164 .align 5 | 164 .align 5 |
165 asm_AES_encrypt: | 165 asm_AES_encrypt: |
166 #if __ARM_ARCH__<7 | 166 #if __ARM_ARCH__<7 |
167 sub r3,pc,#8 @ asm_AES_encrypt | 167 sub r3,pc,#8 @ asm_AES_encrypt |
168 #else | 168 #else |
169 adr r3,asm_AES_encrypt | 169 adr r3,asm_AES_encrypt |
170 #endif | 170 #endif |
171 » stmdb sp!,{r1,r4-r12,lr} | 171 » stmdb» sp!,{r1,r4-r12,lr} |
| 172 #ifdef» __APPLE__ |
| 173 » adr» r10,AES_Te |
| 174 #else |
| 175 » sub» r10,r3,#asm_AES_encrypt-AES_Te» @ Te |
| 176 #endif |
172 mov r12,r0 @ inp | 177 mov r12,r0 @ inp |
173 mov r11,r2 | 178 mov r11,r2 |
174 sub r10,r3,#asm_AES_encrypt-AES_Te @ Te | |
175 #if __ARM_ARCH__<7 | 179 #if __ARM_ARCH__<7 |
176 ldrb r0,[r12,#3] @ load input data in endian-neutral | 180 ldrb r0,[r12,#3] @ load input data in endian-neutral |
177 ldrb r4,[r12,#2] @ manner... | 181 ldrb r4,[r12,#2] @ manner... |
178 ldrb r5,[r12,#1] | 182 ldrb r5,[r12,#1] |
179 ldrb r6,[r12,#0] | 183 ldrb r6,[r12,#0] |
180 orr r0,r0,r4,lsl#8 | 184 orr r0,r0,r4,lsl#8 |
181 ldrb r1,[r12,#7] | 185 ldrb r1,[r12,#7] |
182 orr r0,r0,r5,lsl#16 | 186 orr r0,r0,r5,lsl#16 |
183 ldrb r4,[r12,#6] | 187 ldrb r4,[r12,#6] |
184 orr r0,r0,r6,lsl#24 | 188 orr r0,r0,r6,lsl#24 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 strb r6,[r12,#10] | 255 strb r6,[r12,#10] |
252 mov r5,r3,lsr#16 | 256 mov r5,r3,lsr#16 |
253 strb r2,[r12,#11] | 257 strb r2,[r12,#11] |
254 mov r6,r3,lsr#8 | 258 mov r6,r3,lsr#8 |
255 strb r4,[r12,#12] | 259 strb r4,[r12,#12] |
256 strb r5,[r12,#13] | 260 strb r5,[r12,#13] |
257 strb r6,[r12,#14] | 261 strb r6,[r12,#14] |
258 strb r3,[r12,#15] | 262 strb r3,[r12,#15] |
259 #endif | 263 #endif |
260 #if __ARM_ARCH__>=5 | 264 #if __ARM_ARCH__>=5 |
261 » ldmia» sp!,{r4-r12,pc} | 265 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} |
262 #else | 266 #else |
263 » ldmia sp!,{r4-r12,lr} | 267 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
264 tst lr,#1 | 268 tst lr,#1 |
265 moveq pc,lr @ be binary compatible with V4, yet | 269 moveq pc,lr @ be binary compatible with V4, yet |
266 » .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-
) | 270 .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-) |
267 #endif | 271 #endif |
268 .size asm_AES_encrypt,.-asm_AES_encrypt | 272 .size asm_AES_encrypt,.-asm_AES_encrypt |
269 | 273 |
270 .type _armv4_AES_encrypt,%function | 274 .type» _armv4_AES_encrypt,%function |
271 .align 2 | 275 .align 2 |
272 _armv4_AES_encrypt: | 276 _armv4_AES_encrypt: |
273 str lr,[sp,#-4]! @ push lr | 277 str lr,[sp,#-4]! @ push lr |
274 » ldmia» r11!,{r4-r7} | 278 » ldmia» r11!,{r4,r5,r6,r7} |
275 eor r0,r0,r4 | 279 eor r0,r0,r4 |
276 ldr r12,[r11,#240-16] | 280 ldr r12,[r11,#240-16] |
277 eor r1,r1,r5 | 281 eor r1,r1,r5 |
278 eor r2,r2,r6 | 282 eor r2,r2,r6 |
279 eor r3,r3,r7 | 283 eor r3,r3,r7 |
280 sub r12,r12,#1 | 284 sub r12,r12,#1 |
281 mov lr,#255 | 285 mov lr,#255 |
282 | 286 |
283 and r7,lr,r0 | 287 and r7,lr,r0 |
284 and r8,lr,r0,lsr#8 | 288 and r8,lr,r0,lsr#8 |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 | 401 |
398 eor r0,r0,r7 | 402 eor r0,r0,r7 |
399 eor r1,r1,r4 | 403 eor r1,r1,r4 |
400 eor r2,r2,r5 | 404 eor r2,r2,r5 |
401 eor r3,r3,r6 | 405 eor r3,r3,r6 |
402 | 406 |
403 sub r10,r10,#2 | 407 sub r10,r10,#2 |
404 ldr pc,[sp],#4 @ pop and return | 408 ldr pc,[sp],#4 @ pop and return |
405 .size _armv4_AES_encrypt,.-_armv4_AES_encrypt | 409 .size _armv4_AES_encrypt,.-_armv4_AES_encrypt |
406 | 410 |
407 .global asm_AES_set_encrypt_key | 411 .globl» asm_AES_set_encrypt_key |
408 .hidden asm_AES_set_encrypt_key | 412 .hidden»asm_AES_set_encrypt_key |
409 .type asm_AES_set_encrypt_key,%function | 413 .type» asm_AES_set_encrypt_key,%function |
410 .align 5 | 414 .align 5 |
411 asm_AES_set_encrypt_key: | 415 asm_AES_set_encrypt_key: |
412 _armv4_AES_set_encrypt_key: | 416 _armv4_AES_set_encrypt_key: |
413 #if __ARM_ARCH__<7 | 417 #if __ARM_ARCH__<7 |
414 sub r3,pc,#8 @ asm_AES_set_encrypt_key | 418 sub r3,pc,#8 @ asm_AES_set_encrypt_key |
415 #else | 419 #else |
416 adr r3,asm_AES_set_encrypt_key | 420 adr r3,asm_AES_set_encrypt_key |
417 #endif | 421 #endif |
418 teq r0,#0 | 422 teq r0,#0 |
419 #if __ARM_ARCH__>=7 | 423 #if __ARM_ARCH__>=7 |
(...skipping 12 matching lines...) Expand all Loading... |
432 beq .Lok | 436 beq .Lok |
433 teq r1,#192 | 437 teq r1,#192 |
434 beq .Lok | 438 beq .Lok |
435 teq r1,#256 | 439 teq r1,#256 |
436 #if __ARM_ARCH__>=7 | 440 #if __ARM_ARCH__>=7 |
437 itt ne @ Thumb2 thing, sanity check in ARM | 441 itt ne @ Thumb2 thing, sanity check in ARM |
438 #endif | 442 #endif |
439 movne r0,#-1 | 443 movne r0,#-1 |
440 bne .Labrt | 444 bne .Labrt |
441 | 445 |
442 .Lok:» stmdb sp!,{r4-r12,lr} | 446 .Lok:» stmdb» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
443 » sub» r10,r3,#_armv4_AES_set_encrypt_key-AES_Te-1024» @ Te4 | |
444 | |
445 mov r12,r0 @ inp | 447 mov r12,r0 @ inp |
446 mov lr,r1 @ bits | 448 mov lr,r1 @ bits |
447 mov r11,r2 @ key | 449 mov r11,r2 @ key |
448 | 450 |
| 451 #ifdef __APPLE__ |
| 452 adr r10,AES_Te+1024 @ Te4 |
| 453 #else |
| 454 sub r10,r3,#_armv4_AES_set_encrypt_key-AES_Te-1024 @ Te4 |
| 455 #endif |
| 456 |
449 #if __ARM_ARCH__<7 | 457 #if __ARM_ARCH__<7 |
450 ldrb r0,[r12,#3] @ load input data in endian-neutral | 458 ldrb r0,[r12,#3] @ load input data in endian-neutral |
451 ldrb r4,[r12,#2] @ manner... | 459 ldrb r4,[r12,#2] @ manner... |
452 ldrb r5,[r12,#1] | 460 ldrb r5,[r12,#1] |
453 ldrb r6,[r12,#0] | 461 ldrb r6,[r12,#0] |
454 orr r0,r0,r4,lsl#8 | 462 orr r0,r0,r4,lsl#8 |
455 ldrb r1,[r12,#7] | 463 ldrb r1,[r12,#7] |
456 orr r0,r0,r5,lsl#16 | 464 orr r0,r0,r5,lsl#16 |
457 ldrb r4,[r12,#6] | 465 ldrb r4,[r12,#6] |
458 orr r0,r0,r6,lsl#24 | 466 orr r0,r0,r6,lsl#24 |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 str r4,[r11,#-16] | 697 str r4,[r11,#-16] |
690 eor r8,r8,r7 @ rk[14]=rk[6]^rk[13] | 698 eor r8,r8,r7 @ rk[14]=rk[6]^rk[13] |
691 str r7,[r11,#-12] | 699 str r7,[r11,#-12] |
692 eor r9,r9,r8 @ rk[15]=rk[7]^rk[14] | 700 eor r9,r9,r8 @ rk[15]=rk[7]^rk[14] |
693 str r8,[r11,#-8] | 701 str r8,[r11,#-8] |
694 str r9,[r11,#-4] | 702 str r9,[r11,#-4] |
695 b .L256_loop | 703 b .L256_loop |
696 | 704 |
697 .align 2 | 705 .align 2 |
698 .Ldone: mov r0,#0 | 706 .Ldone: mov r0,#0 |
699 » ldmia sp!,{r4-r12,lr} | 707 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
700 .Labrt: | 708 .Labrt: |
701 #if defined(__thumb2__) && __ARM_ARCH__>=7 | 709 #if __ARM_ARCH__>=5 |
702 » .short» 0x4770» » » @ .word»0xe12fff1e in Thumb2 encoding | 710 » bx» lr» » » » @ .word»0xe12fff1e |
703 #else | 711 #else |
704 tst lr,#1 | 712 tst lr,#1 |
705 moveq pc,lr @ be binary compatible with V4, yet | 713 moveq pc,lr @ be binary compatible with V4, yet |
706 » .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-
) | 714 .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-) |
707 #endif | 715 #endif |
708 .size asm_AES_set_encrypt_key,.-asm_AES_set_encrypt_key | 716 .size asm_AES_set_encrypt_key,.-asm_AES_set_encrypt_key |
709 | 717 |
710 .global asm_AES_set_decrypt_key | 718 .globl» asm_AES_set_decrypt_key |
711 .hidden asm_AES_set_decrypt_key | 719 .hidden»asm_AES_set_decrypt_key |
712 .type asm_AES_set_decrypt_key,%function | 720 .type» asm_AES_set_decrypt_key,%function |
713 .align 5 | 721 .align 5 |
714 asm_AES_set_decrypt_key: | 722 asm_AES_set_decrypt_key: |
715 str lr,[sp,#-4]! @ push lr | 723 str lr,[sp,#-4]! @ push lr |
716 bl _armv4_AES_set_encrypt_key | 724 bl _armv4_AES_set_encrypt_key |
717 teq r0,#0 | 725 teq r0,#0 |
718 ldr lr,[sp],#4 @ pop lr | 726 ldr lr,[sp],#4 @ pop lr |
719 bne .Labrt | 727 bne .Labrt |
720 | 728 |
721 mov r0,r2 @ asm_AES_set_encrypt_key preserves r2, | 729 mov r0,r2 @ asm_AES_set_encrypt_key preserves r2, |
722 mov r1,r2 @ which is AES_KEY *key | 730 mov r1,r2 @ which is AES_KEY *key |
723 b _armv4_AES_set_enc2dec_key | 731 b _armv4_AES_set_enc2dec_key |
724 .size asm_AES_set_decrypt_key,.-asm_AES_set_decrypt_key | 732 .size asm_AES_set_decrypt_key,.-asm_AES_set_decrypt_key |
725 | 733 |
726 @ void AES_set_enc2dec_key(const AES_KEY *inp,AES_KEY *out) | 734 @ void AES_set_enc2dec_key(const AES_KEY *inp,AES_KEY *out) |
727 .global»AES_set_enc2dec_key | 735 .globl» AES_set_enc2dec_key |
728 .hidden AES_set_enc2dec_key | 736 .hidden AES_set_enc2dec_key |
729 .type AES_set_enc2dec_key,%function | 737 .type AES_set_enc2dec_key,%function |
730 .align 5 | 738 .align 5 |
731 AES_set_enc2dec_key: | 739 AES_set_enc2dec_key: |
732 _armv4_AES_set_enc2dec_key: | 740 _armv4_AES_set_enc2dec_key: |
733 » stmdb sp!,{r4-r12,lr} | 741 » stmdb» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
734 | 742 |
735 ldr r12,[r0,#240] | 743 ldr r12,[r0,#240] |
736 mov r7,r0 @ input | 744 mov r7,r0 @ input |
737 add r8,r0,r12,lsl#4 | 745 add r8,r0,r12,lsl#4 |
738 mov r11,r1 @ ouput | 746 mov r11,r1 @ ouput |
739 add r10,r1,r12,lsl#4 | 747 add r10,r1,r12,lsl#4 |
740 str r12,[r1,#240] | 748 str r12,[r1,#240] |
741 | 749 |
742 .Linv: ldr r0,[r7],#16 | 750 .Linv: ldr r0,[r7],#16 |
743 ldr r1,[r7,#-12] | 751 ldr r1,[r7,#-12] |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 eor r4,r4,r5,ror#16 @ ^= ROTATE(tpd=tp9^tp4,16) | 813 eor r4,r4,r5,ror#16 @ ^= ROTATE(tpd=tp9^tp4,16) |
806 eor r4,r4,r5,ror#8 @ ^= ROTATE(tp9,24) | 814 eor r4,r4,r5,ror#8 @ ^= ROTATE(tp9,24) |
807 | 815 |
808 ldr r0,[r11,#4] @ prefetch tp1 | 816 ldr r0,[r11,#4] @ prefetch tp1 |
809 str r4,[r11],#4 | 817 str r4,[r11],#4 |
810 subs r12,r12,#1 | 818 subs r12,r12,#1 |
811 bne .Lmix | 819 bne .Lmix |
812 | 820 |
813 mov r0,#0 | 821 mov r0,#0 |
814 #if __ARM_ARCH__>=5 | 822 #if __ARM_ARCH__>=5 |
815 » ldmia» sp!,{r4-r12,pc} | 823 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} |
816 #else | 824 #else |
817 » ldmia sp!,{r4-r12,lr} | 825 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
818 tst lr,#1 | 826 tst lr,#1 |
819 moveq pc,lr @ be binary compatible with V4, yet | 827 moveq pc,lr @ be binary compatible with V4, yet |
820 » .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-
) | 828 .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-) |
821 #endif | 829 #endif |
822 .size AES_set_enc2dec_key,.-AES_set_enc2dec_key | 830 .size AES_set_enc2dec_key,.-AES_set_enc2dec_key |
823 | 831 |
824 .type AES_Td,%object | 832 .type AES_Td,%object |
825 .align 5 | 833 .align 5 |
826 AES_Td: | 834 AES_Td: |
827 .word 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96 | 835 .word 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96 |
828 .word 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393 | 836 .word 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393 |
829 .word 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25 | 837 .word 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25 |
830 .word 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f | 838 .word 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
918 .byte 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d | 926 .byte 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d |
919 .byte 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef | 927 .byte 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef |
920 .byte 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0 | 928 .byte 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0 |
921 .byte 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 | 929 .byte 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 |
922 .byte 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 | 930 .byte 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 |
923 .byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d | 931 .byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d |
924 .size AES_Td,.-AES_Td | 932 .size AES_Td,.-AES_Td |
925 | 933 |
926 @ void asm_AES_decrypt(const unsigned char *in, unsigned char *out, | 934 @ void asm_AES_decrypt(const unsigned char *in, unsigned char *out, |
927 @ const AES_KEY *key) { | 935 @ const AES_KEY *key) { |
928 .global asm_AES_decrypt | 936 .globl» asm_AES_decrypt |
929 .hidden asm_AES_decrypt | 937 .hidden»asm_AES_decrypt |
930 .type asm_AES_decrypt,%function | 938 .type» asm_AES_decrypt,%function |
931 .align 5 | 939 .align 5 |
932 asm_AES_decrypt: | 940 asm_AES_decrypt: |
933 #if __ARM_ARCH__<7 | 941 #if __ARM_ARCH__<7 |
934 sub r3,pc,#8 @ asm_AES_decrypt | 942 sub r3,pc,#8 @ asm_AES_decrypt |
935 #else | 943 #else |
936 adr r3,asm_AES_decrypt | 944 adr r3,asm_AES_decrypt |
937 #endif | 945 #endif |
938 » stmdb sp!,{r1,r4-r12,lr} | 946 » stmdb» sp!,{r1,r4-r12,lr} |
| 947 #ifdef» __APPLE__ |
| 948 » adr» r10,AES_Td |
| 949 #else |
| 950 » sub» r10,r3,#asm_AES_decrypt-AES_Td» @ Td |
| 951 #endif |
939 mov r12,r0 @ inp | 952 mov r12,r0 @ inp |
940 mov r11,r2 | 953 mov r11,r2 |
941 sub r10,r3,#asm_AES_decrypt-AES_Td @ Td | |
942 #if __ARM_ARCH__<7 | 954 #if __ARM_ARCH__<7 |
943 ldrb r0,[r12,#3] @ load input data in endian-neutral | 955 ldrb r0,[r12,#3] @ load input data in endian-neutral |
944 ldrb r4,[r12,#2] @ manner... | 956 ldrb r4,[r12,#2] @ manner... |
945 ldrb r5,[r12,#1] | 957 ldrb r5,[r12,#1] |
946 ldrb r6,[r12,#0] | 958 ldrb r6,[r12,#0] |
947 orr r0,r0,r4,lsl#8 | 959 orr r0,r0,r4,lsl#8 |
948 ldrb r1,[r12,#7] | 960 ldrb r1,[r12,#7] |
949 orr r0,r0,r5,lsl#16 | 961 orr r0,r0,r5,lsl#16 |
950 ldrb r4,[r12,#6] | 962 ldrb r4,[r12,#6] |
951 orr r0,r0,r6,lsl#24 | 963 orr r0,r0,r6,lsl#24 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1018 strb r6,[r12,#10] | 1030 strb r6,[r12,#10] |
1019 mov r5,r3,lsr#16 | 1031 mov r5,r3,lsr#16 |
1020 strb r2,[r12,#11] | 1032 strb r2,[r12,#11] |
1021 mov r6,r3,lsr#8 | 1033 mov r6,r3,lsr#8 |
1022 strb r4,[r12,#12] | 1034 strb r4,[r12,#12] |
1023 strb r5,[r12,#13] | 1035 strb r5,[r12,#13] |
1024 strb r6,[r12,#14] | 1036 strb r6,[r12,#14] |
1025 strb r3,[r12,#15] | 1037 strb r3,[r12,#15] |
1026 #endif | 1038 #endif |
1027 #if __ARM_ARCH__>=5 | 1039 #if __ARM_ARCH__>=5 |
1028 » ldmia» sp!,{r4-r12,pc} | 1040 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} |
1029 #else | 1041 #else |
1030 » ldmia sp!,{r4-r12,lr} | 1042 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} |
1031 tst lr,#1 | 1043 tst lr,#1 |
1032 moveq pc,lr @ be binary compatible with V4, yet | 1044 moveq pc,lr @ be binary compatible with V4, yet |
1033 » .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-
) | 1045 .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-) |
1034 #endif | 1046 #endif |
1035 .size asm_AES_decrypt,.-asm_AES_decrypt | 1047 .size asm_AES_decrypt,.-asm_AES_decrypt |
1036 | 1048 |
1037 .type _armv4_AES_decrypt,%function | 1049 .type» _armv4_AES_decrypt,%function |
1038 .align 2 | 1050 .align 2 |
1039 _armv4_AES_decrypt: | 1051 _armv4_AES_decrypt: |
1040 str lr,[sp,#-4]! @ push lr | 1052 str lr,[sp,#-4]! @ push lr |
1041 » ldmia» r11!,{r4-r7} | 1053 » ldmia» r11!,{r4,r5,r6,r7} |
1042 eor r0,r0,r4 | 1054 eor r0,r0,r4 |
1043 ldr r12,[r11,#240-16] | 1055 ldr r12,[r11,#240-16] |
1044 eor r1,r1,r5 | 1056 eor r1,r1,r5 |
1045 eor r2,r2,r6 | 1057 eor r2,r2,r6 |
1046 eor r3,r3,r7 | 1058 eor r3,r3,r7 |
1047 sub r12,r12,#1 | 1059 sub r12,r12,#1 |
1048 mov lr,#255 | 1060 mov lr,#255 |
1049 | 1061 |
1050 and r7,lr,r0,lsr#16 | 1062 and r7,lr,r0,lsr#16 |
1051 and r8,lr,r0,lsr#8 | 1063 and r8,lr,r0,lsr#8 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1172 ldr r6,[r11,#12] | 1184 ldr r6,[r11,#12] |
1173 | 1185 |
1174 eor r0,r0,r7 | 1186 eor r0,r0,r7 |
1175 eor r1,r1,r4 | 1187 eor r1,r1,r4 |
1176 eor r2,r2,r5 | 1188 eor r2,r2,r5 |
1177 eor r3,r3,r6 | 1189 eor r3,r3,r6 |
1178 | 1190 |
1179 sub r10,r10,#1024 | 1191 sub r10,r10,#1024 |
1180 ldr pc,[sp],#4 @ pop and return | 1192 ldr pc,[sp],#4 @ pop and return |
1181 .size _armv4_AES_decrypt,.-_armv4_AES_decrypt | 1193 .size _armv4_AES_decrypt,.-_armv4_AES_decrypt |
1182 .asciz» "AES for ARMv4, CRYPTOGAMS by <appro@openssl.org>" | 1194 .byte» 65,69,83,32,102,111,114,32,65,82,77,118,52,44,32,67,82,89,80,84,79,71,65
,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,
114,103,62,0 |
| 1195 .align» 2 |
1183 .align 2 | 1196 .align 2 |
1184 | 1197 |
1185 #endif | 1198 #endif |
OLD | NEW |