Don't include unnecessary code when only 1 curve size is supported.
diff --git a/asm_arm.inc b/asm_arm.inc
index 6117163..7d02b52 100644
--- a/asm_arm.inc
+++ b/asm_arm.inc
@@ -49,10 +49,12 @@
const uECC_word_t *left,
const uECC_word_t *right,
wordcount_t num_words) {
-#if (uECC_PLATFORM == uECC_arm_thumb) || (uECC_PLATFORM == uECC_arm_thumb2)
+#if (uECC_MAX_WORDS != uECC_MIN_WORDS)
+ #if (uECC_PLATFORM == uECC_arm_thumb) || (uECC_PLATFORM == uECC_arm_thumb2)
uint32_t jump = ((uECC_MAX_WORDS - num_words) * 4 + 5) * 2 + 1;
-#else /* ARM */
+ #else /* ARM */
uint32_t jump = ((uECC_MAX_WORDS - num_words) * 4 + 5) * 4;
+ #endif
#endif
uint32_t carry;
uint32_t left_word;
@@ -61,15 +63,19 @@
__asm__ volatile (
".syntax unified \n\t"
"movs %[carry], #0 \n\t"
+ #if (uECC_MAX_WORDS != uECC_MIN_WORDS)
"mov %[left], pc \n\t"
"adds %[jump], %[left] \n\t"
+ #endif
"ldmia %[lptr]!, {%[left]} \n\t"
"ldmia %[rptr]!, {%[right]} \n\t"
"adds %[left], %[right] \n\t"
"stmia %[dptr]!, {%[left]} \n\t"
+ #if (uECC_MAX_WORDS != uECC_MIN_WORDS)
"bx %[jump] \n\t"
+ #endif
"ldmia %[lptr]!, {%[left]} \n\t"
"ldmia %[rptr]!, {%[right]} \n\t"
@@ -112,7 +118,10 @@
"adcs %[carry], %[carry] \n\t"
RESUME_SYNTAX
: [dptr] REG_RW_LO (result), [lptr] REG_RW_LO (left), [rptr] REG_RW_LO (right),
- [jump] REG_RW_LO (jump), [carry] REG_WRITE_LO (carry), [left] REG_WRITE_LO (left_word),
+ #if (uECC_MAX_WORDS != uECC_MIN_WORDS)
+ [jump] REG_RW_LO (jump),
+ #endif
+ [carry] REG_WRITE_LO (carry), [left] REG_WRITE_LO (left_word),
[right] REG_WRITE_LO (right_word)
:
: "cc", "memory"
@@ -125,10 +134,12 @@
const uECC_word_t *left,
const uECC_word_t *right,
wordcount_t num_words) {
-#if (uECC_PLATFORM == uECC_arm_thumb) || (uECC_PLATFORM == uECC_arm_thumb2)
+#if (uECC_MAX_WORDS != uECC_MIN_WORDS)
+ #if (uECC_PLATFORM == uECC_arm_thumb) || (uECC_PLATFORM == uECC_arm_thumb2)
uint32_t jump = ((uECC_MAX_WORDS - num_words) * 4 + 5) * 2 + 1;
-#else /* ARM */
+ #else /* ARM */
uint32_t jump = ((uECC_MAX_WORDS - num_words) * 4 + 5) * 4;
+ #endif
#endif
uint32_t carry;
uint32_t left_word;
@@ -137,15 +148,19 @@
__asm__ volatile (
".syntax unified \n\t"
"movs %[carry], #0 \n\t"
+ #if (uECC_MAX_WORDS != uECC_MIN_WORDS)
"mov %[left], pc \n\t"
"adds %[jump], %[left] \n\t"
+ #endif
"ldmia %[lptr]!, {%[left]} \n\t"
"ldmia %[rptr]!, {%[right]} \n\t"
"subs %[left], %[right] \n\t"
"stmia %[dptr]!, {%[left]} \n\t"
+ #if (uECC_MAX_WORDS != uECC_MIN_WORDS)
"bx %[jump] \n\t"
+ #endif
"ldmia %[lptr]!, {%[left]} \n\t"
"ldmia %[rptr]!, {%[right]} \n\t"
@@ -188,7 +203,10 @@
"adcs %[carry], %[carry] \n\t"
RESUME_SYNTAX
: [dptr] REG_RW_LO (result), [lptr] REG_RW_LO (left), [rptr] REG_RW_LO (right),
- [jump] REG_RW_LO (jump), [carry] REG_WRITE_LO (carry), [left] REG_WRITE_LO (left_word),
+ #if (uECC_MAX_WORDS != uECC_MIN_WORDS)
+ [jump] REG_RW_LO (jump),
+ #endif
+ [carry] REG_WRITE_LO (carry), [left] REG_WRITE_LO (left_word),
[right] REG_WRITE_LO (right_word)
:
: "cc", "memory"