############################################################################
# arch/arm/src/armv7-a/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.  The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################

# Common ARM files

include common/Make.defs
include arm_a_r/Make.defs

# The vector table is the "head" object, i.e., the one that must forced into
# the link in order to draw in all of the other components

HEAD_ASRC += arm_vectortab.S

# Common assembly language files

CMN_ASRCS += arm_cpuhead.S arm_vectors.S arm_saveusercontext.S

# Common C source files

CMN_CSRCS += arm_cache.c arm_cpuinfo.c
CMN_CSRCS += arm_gicv2.c arm_gicv2_dump.c
CMN_CSRCS += arm_initialstate.c arm_mmu.c
CMN_CSRCS += arm_undefinedinsn.c
CMN_CSRCS += arm_perf.c arm_cpuidlestack.c cp15_cacheops.c

ifeq ($(CONFIG_ARMV7A_GICv2M),y)
  CMN_CSRCS += arm_gicv2m.c
endif

ifeq ($(CONFIG_ARMV7A_HAVE_PTM),y)
  CMN_CSRCS += arm_timer.c
endif

ifeq ($(CONFIG_ARMV7A_L2CC_PL310),y)
  CMN_CSRCS += arm_l2cc_pl310.c
endif

ifeq ($(CONFIG_LEGACY_PAGING),y)
  CMN_CSRCS += arm_allocpage.c arm_checkmapping.c arm_pginitialize.c
  CMN_CSRCS += arm_va2pte.c
  CMN_ASRCS += arm_pghead.S
else
  CMN_ASRCS += arm_head.S
endif

ifeq ($(CONFIG_ARCH_TRUSTZONE_SECURE),y)
  CMN_CSRCS += arm_sm_runtime.c
  CMN_ASRCS += arm_sm_vector.S
endif

ifeq ($(CONFIG_ARCH_ADDRENV),y)
  CMN_CSRCS += arm_addrenv.c arm_addrenv_utils.c arm_addrenv_perms.c arm_pgalloc.c
  CMN_CSRCS += arm_addrenv_pgmap.c
  ifeq ($(CONFIG_ARCH_STACK_DYNAMIC),y)
    CMN_CSRCS += arm_addrenv_ustack.c
  endif
  ifeq ($(CONFIG_ARCH_KERNEL_STACK),y)
    CMN_CSRCS += arm_addrenv_kstack.c
  endif
  ifeq ($(CONFIG_ARCH_VMA_MAPPING),y)
    CMN_CSRCS += arm_addrenv_shm.c
  endif
endif

ifeq ($(CONFIG_MM_PGALLOC),y)
  CMN_CSRCS += arm_physpgaddr.c
  ifeq ($(CONFIG_ARCH_PGPOOL_MAPPING),y)
    CMN_CSRCS += arm_virtpgaddr.c
  endif
endif

ifeq ($(CONFIG_ARCH_FPU),y)
  CMN_CSRCS += arm_fpucmp.c
  CMN_ASRCS += arm_fpuconfig.S
endif

ifeq ($(CONFIG_SMP),y)
  CMN_CSRCS += arm_cpustart.c arm_smpcall.c
  CMN_CSRCS += arm_scu.c
endif

ifeq ($(CONFIG_ARM_PSCI),y)
  CMN_ASRCS += arm_smccc.S
  CMN_CSRCS += arm_cpu_psci.c
endif

ifeq ($(CONFIG_ARCH_HIPRI_INTERRUPT),y)
  CMN_CSRCS += arm_dofiq.c
endif

ifeq ($(CONFIG_ARCH_PERF_EVENTS_USER_ACCESS),y)
  CMN_UCSRCS += arm_perf.c
endif

VPATH += arm_a_r