2 * Copyright 2012 pooler@litecoinpool.org
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the Free
6 * Software Foundation; either version 2 of the License, or (at your option)
7 * any later version. See COPYING for more details.
10 #if defined(__arm__) && defined(__APCS_32__)
12 .macro salsa8_core_doubleround_body
17 eor r2, r2, r11, ror #23
19 eor r7, r7, r12, ror #23
22 eor r8, r8, r11, ror #23
24 eor lr, lr, r12, ror #23
30 eor r1, r1, r9, ror #19
32 eor r6, r6, r10, ror #19
35 eor r11, r11, r9, ror #19
37 eor r12, r12, r10, ror #19
43 eor r0, r0, r8, ror #14
45 eor r5, r5, lr, ror #14
47 eor r9, r9, r8, ror #14
49 eor r10, r10, lr, ror #14
57 eor r11, r11, r8, ror #25
59 eor r12, r12, lr, ror #25
61 eor r1, r1, r8, ror #25
63 eor r6, r6, lr, ror #25
68 eor r8, r8, r9, ror #23
70 eor lr, lr, r10, ror #23
73 eor r2, r2, r9, ror #23
75 eor r7, r7, r10, ror #23
81 eor r9, r9, r11, ror #19
83 eor r10, r10, r12, ror #19
86 eor r3, r3, r11, ror #19
88 eor r4, r4, r12, ror #19
102 eor r3, r3, r8, ror #25
105 eor r4, r4, lr, ror #25
107 eor r9, r9, r8, ror #25
108 eor r10, r10, lr, ror #25
110 salsa8_core_doubleround_body
116 eor r11, r11, r8, ror #14
118 eor r12, r12, lr, ror #14
122 eor r0, r0, r8, ror #14
124 eor r5, r5, lr, ror #14
131 eor r3, r3, r8, ror #25
133 eor r4, r4, lr, ror #25
135 eor r9, r9, r8, ror #25
136 eor r10, r10, lr, ror #25
138 salsa8_core_doubleround_body
144 eor r11, r11, r8, ror #14
146 eor r12, r12, lr, ror #14
150 eor r0, r0, r8, ror #14
152 eor r5, r5, lr, ror #14
159 eor r3, r3, r8, ror #25
161 eor r4, r4, lr, ror #25
163 eor r9, r9, r8, ror #25
164 eor r10, r10, lr, ror #25
166 salsa8_core_doubleround_body
172 eor r11, r11, r8, ror #14
174 eor r12, r12, lr, ror #14
178 eor r0, r0, r8, ror #14
180 eor r5, r5, lr, ror #14
187 eor r3, r3, r8, ror #25
189 eor r4, r4, lr, ror #25
191 eor r9, r9, r8, ror #25
192 eor r10, r10, lr, ror #25
194 salsa8_core_doubleround_body
201 eor r11, r11, r8, ror #14
202 eor r12, r12, lr, ror #14
207 eor r0, r0, r8, ror #14
209 eor r5, r5, lr, ror #14
215 .macro scrypt_core_macro1a_x4
228 .macro scrypt_core_macro1b_x4
250 .macro scrypt_core_macro2_x4
267 .macro scrypt_core_macro3_x4
277 .macro scrypt_core_macro3_x6
279 ldmia r0, {r8-r12, lr}
296 .type scrypt_core, %function
300 stmfd sp!, {r4-r11, lr}
304 add r12, r1, #1024*32*4
310 scrypt_core_macro1a_x4
311 scrypt_core_macro1a_x4
312 scrypt_core_macro1a_x4
313 scrypt_core_macro1a_x4
321 scrypt_core_macro2_x4
322 scrypt_core_macro2_x4
323 scrypt_core_macro2_x4
324 scrypt_core_macro2_x4
331 scrypt_core_macro3_x6
332 scrypt_core_macro3_x6
335 scrypt_core_macro3_x4
340 bne scrypt_core_loop1
342 sub r1, r1, #1024*32*4
349 mov r4, r4, lsl #32-10
350 add r1, r1, r4, lsr #32-10-7
355 scrypt_core_macro1b_x4
356 scrypt_core_macro1b_x4
357 scrypt_core_macro1b_x4
358 scrypt_core_macro1b_x4
365 scrypt_core_macro2_x4
366 scrypt_core_macro2_x4
367 scrypt_core_macro2_x4
368 scrypt_core_macro2_x4
375 scrypt_core_macro3_x6
376 scrypt_core_macro3_x6
377 scrypt_core_macro3_x4
383 bne scrypt_core_loop2
387 ldmfd sp!, {r4-r11, lr}
390 ldmfd sp!, {r4-r11, pc}