diff --git a/include/polarssl/bn_mul.h b/include/polarssl/bn_mul.h
index 22076dbe5f..f278dd04e3 100644
--- a/include/polarssl/bn_mul.h
+++ b/include/polarssl/bn_mul.h
@@ -498,6 +498,8 @@
 
 #if defined(__arm__)
 
+#if !defined(__thumb__)
+
 #define MULADDC_INIT                            \
     asm( "ldr    r0, %0         " :: "m" (s));  \
     asm( "ldr    r1, %0         " :: "m" (d));  \
@@ -519,6 +521,8 @@
     asm( "str    r0, %0         " : "=m" (s) :: \
     "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7" );
 
+#endif /* Thumb */
+
 #endif /* ARMv3 */
 
 #if defined(__alpha__)