1# 2# Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. 3# 4# SPDX-License-Identifier: BSD-3-Clause 5# 6 7ifneq (${ARCH},aarch32) 8$(error ARM_ARCH_MAJOR=7 mandates ARCH=aarch32) 9endif 10 11# For ARMv7, set march32 from platform directive ARMV7_CORTEX_Ax=yes 12# and ARM_WITH_NEON=yes/no. 13# 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. 17 18# Platform can override march32-directive through MARCH32_DIRECTIVE 19ifdef MARCH32_DIRECTIVE 20march32-directive := $(MARCH32_DIRECTIVE) 21else 22march32-set-${ARM_CORTEX_A5} := -mcpu=cortex-a5 23march32-set-${ARM_CORTEX_A7} := -mcpu=cortex-a7 24march32-set-${ARM_CORTEX_A9} := -mcpu=cortex-a9 25march32-set-${ARM_CORTEX_A12} := -mcpu=cortex-a12 26march32-set-${ARM_CORTEX_A15} := -mcpu=cortex-a15 27march32-set-${ARM_CORTEX_A17} := -mcpu=cortex-a17 28march32-neon-$(ARM_WITH_NEON) := -mfpu=neon 29 30# default to -march=armv7-a as target directive 31march32-set-yes ?= -march=armv7-a 32march32-directive := ${march32-set-yes} ${march32-neon-yes} 33endif 34 35# Platform may override these extension support directives: 36# 37# ARMV7_SUPPORTS_LARGE_PAGE_ADDRESSING 38# Defined if core supports the Large Page Addressing extension. 39# 40# ARMV7_SUPPORTS_VIRTUALIZATION 41# Defined if ARMv7 core supports the Virtualization extension. 42# 43# ARMV7_SUPPORTS_GENERIC_TIMER 44# Defined if ARMv7 core supports the Generic Timer extension. 45 46ifeq ($(filter yes,$(ARM_CORTEX_A7) $(ARM_CORTEX_A12) $(ARM_CORTEX_A15) $(ARM_CORTEX_A17)),yes) 47$(eval $(call add_defines,\ 48 $(sort \ 49 ARMV7_SUPPORTS_LARGE_PAGE_ADDRESSING \ 50 ARMV7_SUPPORTS_VIRTUALIZATION \ 51 ARMV7_SUPPORTS_GENERIC_TIMER \ 52 ARMV7_SUPPORTS_VFP \ 53))) 54endif 55 56ifeq ($(ARM_CORTEX_A5),yes) 57$(eval $(call add_define,ARM_CORTEX_A5)) 58endif 59