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