Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: third_party/boringssl/linux-arm/crypto/aes/aes-armv4.S

Issue 1136743004: Roll src/third_party/boringssl/src 68de407:771a138 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698