summaryrefslogtreecommitdiff
path: root/libavutil/arm
diff options
context:
space:
mode:
Diffstat (limited to 'libavutil/arm')
-rw-r--r--libavutil/arm/cpu.c4
-rw-r--r--libavutil/arm/cpu.h5
2 files changed, 9 insertions, 0 deletions
diff --git a/libavutil/arm/cpu.c b/libavutil/arm/cpu.c
index 02def0b470..3889ef011c 100644
--- a/libavutil/arm/cpu.c
+++ b/libavutil/arm/cpu.c
@@ -137,6 +137,10 @@ int ff_get_cpu_flags_arm(void)
if (flags & AV_CPU_FLAG_ARMV6T2)
flags |= AV_CPU_FLAG_ARMV6;
+ /* set the virtual VFPv2 vector mode flag */
+ if ((flags & AV_CPU_FLAG_VFP) && !(flags & (AV_CPU_FLAG_VFPV3 | AV_CPU_FLAG_NEON)))
+ flags |= AV_CPU_FLAG_VFP_VM;
+
return flags;
}
diff --git a/libavutil/arm/cpu.h b/libavutil/arm/cpu.h
index 9b3b6ff58b..27a2edacf5 100644
--- a/libavutil/arm/cpu.h
+++ b/libavutil/arm/cpu.h
@@ -31,4 +31,9 @@
#define have_neon(flags) CPUEXT(flags, NEON)
#define have_setend(flags) CPUEXT(flags, SETEND)
+/* some functions use the VFPv2 vector mode which is deprecated in ARMv7-A
+ * and might trap on such CPU depending on the OS configuration */
+#define have_vfp_vm(flags) \
+ (have_armv6(flags) && ((flags) & AV_CPU_FLAG_VFP_VM))
+
#endif /* AVUTIL_ARM_CPU_H */