Add GCC vli_rshift1 assembly

Signed-off-by: Kevin Bracey <kevin.bracey@arm.com>
diff --git a/tinycrypt/ecc.c b/tinycrypt/ecc.c
index b9986e4..40256dc 100644
--- a/tinycrypt/ecc.c
+++ b/tinycrypt/ecc.c
@@ -525,6 +525,32 @@
     BX      lr
 #endif
 }
+#elif defined MBEDTLS_HAVE_ASM && defined __GNUC__ && defined __arm__ && defined __thumb2__
+static void uECC_vli_rshift1(uECC_word_t *vli)
+{
+    register uECC_word_t *r0 asm ("r0") = vli;
+#if NUM_ECC_WORDS != 8
+#error adjust ARM assembly to handle NUM_ECC_WORDS != 8
+#endif
+    asm volatile (
+    "ADDS    r0,#32           \n\t"
+    "LDMDB   r0,{r1-r3,ip}    \n\t"
+    "LSRS    ip,ip,#1         \n\t"
+    "RRXS    r3,r3            \n\t"
+    "RRXS    r2,r2            \n\t"
+    "RRXS    r1,r1            \n\t"
+    "STMDB   r0!,{r1-r3,ip}   \n\t"
+    "LDMDB   r0,{r1-r3,ip}    \n\t"
+    "RRXS    ip,ip            \n\t"
+    "RRXS    r3,r3            \n\t"
+    "RRXS    r2,r2            \n\t"
+    "RRX     r1,r1            \n\t"
+    "STMDB   r0!,{r1-r3,ip}   \n\t"
+    : "+r" (r0)
+    :
+    : "r1", "r2", "r3", "ip", "cc", "memory"
+    );
+}
 #else
 static void uECC_vli_rshift1(uECC_word_t *vli)
 {