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