Merge pull request #8516 from mschulz-at-hilscher/fixes/divided-assembler-syntax-error-gcc493

Fixes invalid default choice of thumb assembler syntax.
diff --git a/library/constant_time_impl.h b/library/constant_time_impl.h
index f0b2fc0..18a967b 100644
--- a/library/constant_time_impl.h
+++ b/library/constant_time_impl.h
@@ -120,10 +120,12 @@
  * On Thumb 2 and Arm, both compilers are happy with the "s" suffix,
  * although we don't actually care about setting the flags.
  *
- * For gcc, restore divided syntax afterwards - otherwise old versions of gcc
- * seem to apply unified syntax globally, which breaks other asm code.
+ * For old versions of gcc (see #8516 for details), restore divided
+ * syntax afterwards - otherwise old versions of gcc seem to apply
+ * unified syntax globally, which breaks other asm code.
  */
-#if !defined(__clang__)
+#if defined(MBEDTLS_COMPILER_IS_GCC) && defined(__thumb__) && !defined(__thumb2__) && \
+    (__GNUC__ < 11) && !defined(__ARM_ARCH_2__)
 #define RESTORE_ASM_SYNTAX  ".syntax divided                      \n\t"
 #else
 #define RESTORE_ASM_SYNTAX