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(__linux__) && defined(__ELF__)
11 .section .note.GNU-stack,"",%progbits
14 #if defined(__arm__) && defined(__APCS_32__)
16 .macro salsa8_core_doubleround_body
21 eor r2, r2, r11, ror #23
23 eor r7, r7, r12, ror #23
26 eor r8, r8, r11, ror #23
28 eor lr, lr, r12, ror #23
34 eor r1, r1, r9, ror #19
36 eor r6, r6, r10, ror #19
39 eor r11, r11, r9, ror #19
41 eor r12, r12, r10, ror #19
47 eor r0, r0, r8, ror #14
49 eor r5, r5, lr, ror #14
51 eor r9, r9, r8, ror #14
53 eor r10, r10, lr, ror #14
61 eor r11, r11, r8, ror #25
63 eor r12, r12, lr, ror #25
65 eor r1, r1, r8, ror #25
67 eor r6, r6, lr, ror #25
72 eor r8, r8, r9, ror #23
74 eor lr, lr, r10, ror #23
77 eor r2, r2, r9, ror #23
79 eor r7, r7, r10, ror #23
85 eor r9, r9, r11, ror #19
87 eor r10, r10, r12, ror #19
90 eor r3, r3, r11, ror #19
92 eor r4, r4, r12, ror #19
106 eor r3, r3, r8, ror #25
109 eor r4, r4, lr, ror #25
111 eor r9, r9, r8, ror #25
112 eor r10, r10, lr, ror #25
114 salsa8_core_doubleround_body
120 eor r11, r11, r8, ror #14
122 eor r12, r12, lr, ror #14
126 eor r0, r0, r8, ror #14
128 eor r5, r5, lr, ror #14
135 eor r3, r3, r8, ror #25
137 eor r4, r4, lr, ror #25
139 eor r9, r9, r8, ror #25
140 eor r10, r10, lr, ror #25
142 salsa8_core_doubleround_body
148 eor r11, r11, r8, ror #14
150 eor r12, r12, lr, ror #14
154 eor r0, r0, r8, ror #14
156 eor r5, r5, lr, ror #14
163 eor r3, r3, r8, ror #25
165 eor r4, r4, lr, ror #25
167 eor r9, r9, r8, ror #25
168 eor r10, r10, lr, ror #25
170 salsa8_core_doubleround_body
176 eor r11, r11, r8, ror #14
178 eor r12, r12, lr, ror #14
182 eor r0, r0, r8, ror #14
184 eor r5, r5, lr, ror #14
191 eor r3, r3, r8, ror #25
193 eor r4, r4, lr, ror #25
195 eor r9, r9, r8, ror #25
196 eor r10, r10, lr, ror #25
198 salsa8_core_doubleround_body
205 eor r11, r11, r8, ror #14
206 eor r12, r12, lr, ror #14
211 eor r0, r0, r8, ror #14
213 eor r5, r5, lr, ror #14
219 .macro scrypt_core_macro1a_x4
232 .macro scrypt_core_macro1b_x4
254 .macro scrypt_core_macro2_x4
271 .macro scrypt_core_macro3_x4
281 .macro scrypt_core_macro3_x6
283 ldmia r0, {r8-r12, lr}
300 .type scrypt_core, %function
304 stmfd sp!, {r4-r11, lr}
308 add r12, r1, #1024*32*4
314 scrypt_core_macro1a_x4
315 scrypt_core_macro1a_x4
316 scrypt_core_macro1a_x4
317 scrypt_core_macro1a_x4
325 scrypt_core_macro2_x4
326 scrypt_core_macro2_x4
327 scrypt_core_macro2_x4
328 scrypt_core_macro2_x4
335 scrypt_core_macro3_x6
336 scrypt_core_macro3_x6
339 scrypt_core_macro3_x4
344 bne scrypt_core_loop1
346 sub r1, r1, #1024*32*4
353 mov r4, r4, lsl #32-10
354 add r1, r1, r4, lsr #32-10-7
359 scrypt_core_macro1b_x4
360 scrypt_core_macro1b_x4
361 scrypt_core_macro1b_x4
362 scrypt_core_macro1b_x4
369 scrypt_core_macro2_x4
370 scrypt_core_macro2_x4
371 scrypt_core_macro2_x4
372 scrypt_core_macro2_x4
379 scrypt_core_macro3_x6
380 scrypt_core_macro3_x6
381 scrypt_core_macro3_x4
387 bne scrypt_core_loop2
391 ldmfd sp!, {r4-r11, lr}
394 ldmfd sp!, {r4-r11, pc}