armv7-a-neon.mk revision eed015a1aa9460d41a3b3b3ad0d3d200fcd7999c
1# Configuration for Linux on ARM.
2# Generating binaries for the ARMv7-a architecture and higher with NEON
3#
4ARCH_ARM_HAVE_ARMV7A            := true
5ARCH_ARM_HAVE_VFP               := true
6ARCH_ARM_HAVE_VFP_D32           := true
7ARCH_ARM_HAVE_NEON              := true
8
9local_arch_has_lpae := false
10
11ifneq (,$(filter cortex-a15 krait denver,$(TARGET_$(combo_2nd_arch_prefix)CPU_VARIANT)))
12	# TODO: krait is not a cortex-a15, we set the variant to cortex-a15 so that
13	#       hardware divide operations are generated. This should be removed and a
14	#       krait CPU variant added to GCC. For clang we specify -mcpu for krait in
15	#       core/clang/arm.mk.
16	arch_variant_cflags := -mcpu=cortex-a15
17
18	local_arch_has_lpae := true
19	arch_variant_ldflags := \
20		-Wl,--no-fix-cortex-a8
21else
22ifeq ($(strip $(TARGET_$(combo_2nd_arch_prefix)CPU_VARIANT)),cortex-a8)
23	arch_variant_cflags := -mcpu=cortex-a8
24	arch_variant_ldflags := \
25		-Wl,--fix-cortex-a8
26else
27ifneq (,$(filter cortex-a7 cortex-a53 cortex-a53.a57,$(TARGET_$(combo_2nd_arch_prefix)CPU_VARIANT)))
28	arch_variant_cflags := -mcpu=cortex-a7
29
30	local_arch_has_lpae := true
31	arch_variant_ldflags := \
32		-Wl,--no-fix-cortex-a8
33else
34	arch_variant_cflags := -march=armv7-a
35	# Generic ARM might be a Cortex A8 -- better safe than sorry
36	arch_variant_ldflags := \
37		-Wl,--fix-cortex-a8
38endif
39endif
40endif
41
42ifeq (true,$(local_arch_has_lpae))
43	# Fake an ARM compiler flag as these processors support LPAE which GCC/clang
44	# don't advertise.
45	# TODO This is a hack and we need to add it for each processor that supports LPAE until some
46	# better solution comes around. See Bug 27340895
47	arch_variant_cflags += -D__ARM_FEATURE_LPAE=1
48endif
49
50local_arch_has_lpae :=
51
52arch_variant_cflags += \
53    -mfloat-abi=softfp \
54    -mfpu=neon
55