Fix ARM Thumb-1 build (#59)
diff --git a/asm_arm.inc b/asm_arm.inc
index 510af70..cd235b8 100644
--- a/asm_arm.inc
+++ b/asm_arm.inc
@@ -65,6 +65,7 @@
"movs %[carry], #0 \n\t"
#if (uECC_MAX_WORDS != uECC_MIN_WORDS)
"adr %[left], 1f \n\t"
+ ".align 4 \n\t"
"adds %[jump], %[left] \n\t"
#endif
@@ -118,6 +119,7 @@
"movs %[carry], #0 \n\t"
#if (uECC_MAX_WORDS != uECC_MIN_WORDS)
"adr %[left], 1f \n\t"
+ ".align 4 \n\t"
"adds %[jump], %[left] \n\t"
#endif
@@ -973,7 +975,10 @@
"subs %[r7], %[r0] \n\t" /* r7 = i = k - (num_words - 1) (times 4) */
"3: \n\t" /* inner loop */
- "push {%[r3], %[r4], %[r5], %[r6]} \n\t" /* push things, r3 (c0) is at the top of stack. */
+ "push {%[r6]} \n\t"
+ "push {%[r5]} \n\t"
+ "push {%[r4]} \n\t"
+ "push {%[r3]} \n\t" /* push things, r3 (c0) is at the top of stack. */
"subs %[r0], %[r6], %[r7] \n\t" /* r0 = k - i */
"ldr %[r4], [%[r2], %[r0]] \n\t" /* r4 = right[k - i] */
@@ -1003,7 +1008,9 @@
"adcs %[r6], %[r3] \n\t" /* r6 = high word =
a1 * b1 + carry + ((b0 * a1 + a0 * b1) >> 16) */
- "pop {%[r3], %[r4], %[r5]} \n\t" /* r3 = c0, r4 = c1, r5 = c2 */
+ "pop {%[r3]} \n\t" /* r3 = c0 */
+ "pop {%[r4]} \n\t" /* r4 = c1 */
+ "pop {%[r5]} \n\t" /* r5 = c2 */
"adds %[r3], %[r0] \n\t" /* add low word to c0 */
"adcs %[r4], %[r6] \n\t" /* add high word to c1, including carry */
"movs %[r0], #0 \n\t" /* r0 = 0 (does not affect carry bit) */
@@ -1146,7 +1153,10 @@
"subs %[r6], %[r0] \n\t" /* r6 = i = k - (num_words - 1) (times 4) */
"3: \n\t" /* inner loop */
- "push {%[r2], %[r3], %[r4], %[r5]} \n\t" /* push things, r2 (c0) is at the top of stack. */
+ "push {%[r5]} \n\t"
+ "push {%[r4]} \n\t"
+ "push {%[r3]} \n\t"
+ "push {%[r2]} \n\t" /* push things, r2 (c0) is at the top of stack. */
"subs %[r7], %[r5], %[r6] \n\t" /* r7 = k - i */
"ldr %[r3], [%[r1], %[r7]] \n\t" /* r3 = left[k - i] */
@@ -1186,7 +1196,9 @@
"adcs %[r5], %[r3] \n\t" /* add carry from shift to high word */
"4: \n\t"
- "pop {%[r2], %[r3], %[r4]} \n\t" /* r2 = c0, r3 = c1, r4 = c2 */
+ "pop {%[r2]} \n\t" /* r2 = c0 */
+ "pop {%[r3]} \n\t" /* r3 = c1 */
+ "pop {%[r4]} \n\t" /* r4 = c2 */
"adds %[r2], %[r0] \n\t" /* add low word to c0 */
"adcs %[r3], %[r5] \n\t" /* add high word to c1, including carry */
"movs %[r0], #0 \n\t" /* r0 = 0 (does not affect carry bit) */