2 # Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
4 # SPDX-License-Identifier: BSD-3-Clause
7 ifneq (${ARCH},aarch32
)
8 $(error ARM_ARCH_MAJOR
=7 mandates ARCH
=aarch32
)
11 # For ARMv7, set march32 from platform directive ARMV7_CORTEX_Ax=yes
12 # and ARM_WITH_NEON=yes/no.
14 # GCC and Clang require -march=armv7-a for C-A9 and -march=armv7ve for C-A15.
15 # armClang requires -march=armv7-a for all ARMv7 Cortex-A. To comply with
16 # all, just drop -march and supply only -mcpu.
18 # Platform can override march32-directive through MARCH32_DIRECTIVE
19 ifdef MARCH32_DIRECTIVE
20 march32-directive
:= $(MARCH32_DIRECTIVE
)
22 march32-set-
${ARM_CORTEX_A5} := -mcpu
=cortex-a5
23 march32-set-
${ARM_CORTEX_A7} := -mcpu
=cortex-a7
24 march32-set-
${ARM_CORTEX_A9} := -mcpu
=cortex-a9
25 march32-set-
${ARM_CORTEX_A12} := -mcpu
=cortex-a12
26 march32-set-
${ARM_CORTEX_A15} := -mcpu
=cortex-a15
27 march32-set-
${ARM_CORTEX_A17} := -mcpu
=cortex-a17
28 march32-neon-
$(ARM_WITH_NEON
) := -mfpu
=neon
30 # default to -march=armv7-a as target directive
31 march32-set-yes ?
= -march
=armv7-a
32 march32-directive
:= ${march32-set-yes
} ${march32-neon-yes
}
35 # Platform may override these extension support directives:
37 # ARMV7_SUPPORTS_LARGE_PAGE_ADDRESSING
38 # Defined if core supports the Large Page Addressing extension.
40 # ARMV7_SUPPORTS_VIRTUALIZATION
41 # Defined if ARMv7 core supports the Virtualization extension.
43 # ARMV7_SUPPORTS_GENERIC_TIMER
44 # Defined if ARMv7 core supports the Generic Timer extension.
46 ifeq ($(filter yes
,$(ARM_CORTEX_A7
) $(ARM_CORTEX_A12
) $(ARM_CORTEX_A15
) $(ARM_CORTEX_A17
)),yes
)
47 $(eval
$(call add_define
,ARMV7_SUPPORTS_LARGE_PAGE_ADDRESSING
))
48 $(eval
$(call add_define
,ARMV7_SUPPORTS_VIRTUALIZATION
))
49 $(eval
$(call add_define
,ARMV7_SUPPORTS_GENERIC_TIMER
))
50 $(eval
$(call add_define
,ARMV7_SUPPORTS_VFP
))
53 ifeq ($(ARM_CORTEX_A5
),yes
)
54 $(eval
$(call add_define
,ARM_CORTEX_A5
))