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"