summaryrefslogtreecommitdiffstats
path: root/libFDK/include/arm/clz_arm.h
diff options
context:
space:
mode:
Diffstat (limited to 'libFDK/include/arm/clz_arm.h')
-rw-r--r--libFDK/include/arm/clz_arm.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/libFDK/include/arm/clz_arm.h b/libFDK/include/arm/clz_arm.h
index b33b800..7b9d614 100644
--- a/libFDK/include/arm/clz_arm.h
+++ b/libFDK/include/arm/clz_arm.h
@@ -92,6 +92,14 @@ amm-info@iis.fraunhofer.de
#if defined(__GNUC__) && defined(__ARM_ARCH_5TE__) /* cppp replaced: elif */
/* ARM gcc*/
+#if defined(__thumb__) && !defined(__thumb2__)
+# define __SWITCH_TO_ARM \
+ ".align\n" \
+ ".arm\n"
+
+#else
+# define __SWITCH_TO_ARM /* nothing */
+#endif
#define FUNCTION_fixnormz_D
#define FUNCTION_fixnorm_D
@@ -99,7 +107,7 @@ amm-info@iis.fraunhofer.de
inline INT fixnormz_D(LONG value)
{
INT result;
- asm("clz %0, %1 ": "=r"(result) : "r"(value) );
+ asm(__SWITCH_TO_ARM "clz %0, %1 ": "=r"(result) : "r"(value) );
return result;
}