• Antonio Nino Diaz's avatar
    SPM: Deprecate the current implementation · 2d7b9e5e
    Antonio Nino Diaz authored
    
    The current SPM is a prototype that only supports one secure partition
    in EL0. The objective of SPM is to have multiple partitions. The current
    MM interface isn't adequate for this, so it is needed to modify heavily
    the code to add proper support for it.
    
    However, there are platforms which are already using this (like SGI) and
    removing the code would break it.  For this reason, the current SPM code
    has been duplicated in order to temporarily preserve compatibility. All
    new improvements/changes to SPM will be done in the non-deprecated copy,
    that may change without notice.
    
    The new build option SPM_DEPRECATED has been introduced to select the SPM
    implementation. It defaults to 1, that selects the deprecated SPM.
    
    Change-Id: Ic9f80b53b450e97b4d3f47e4ef4a138ee8d87443
    Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
    2d7b9e5e
bl31.mk 2.71 KB
#
# Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#

################################################################################
# Include SPM Makefile
################################################################################
ifeq (${ENABLE_SPM},1)
  ifeq (${SPM_DEPRECATED},1)
    ifeq (${EL3_EXCEPTION_HANDLING},0)
      $(error EL3_EXCEPTION_HANDLING must be 1 for SPM support)
    endif
    $(info Including deprecated SPM makefile)
    include services/std_svc/spm_deprecated/spm.mk
  else
    $(info Including SPM makefile)
    include services/std_svc/spm/spm.mk
  endif
endif


include lib/psci/psci_lib.mk

BL31_SOURCES		+=	bl31/bl31_main.c				\
				bl31/interrupt_mgmt.c				\
				bl31/aarch64/bl31_entrypoint.S			\
				bl31/aarch64/crash_reporting.S			\
				bl31/aarch64/ea_delegate.S			\
				bl31/aarch64/runtime_exceptions.S		\
				bl31/bl31_context_mgmt.c			\
				common/runtime_svc.c				\
				lib/aarch64/setjmp.S				\
				lib/cpus/aarch64/dsu_helpers.S			\
				plat/common/aarch64/platform_mp_stack.S		\
				services/arm_arch_svc/arm_arch_svc_setup.c	\
				services/std_svc/std_svc_setup.c		\
				${PSCI_LIB_SOURCES}				\
				${SPM_SOURCES}


ifeq (${ENABLE_PMF}, 1)
BL31_SOURCES		+=	lib/pmf/pmf_main.c
endif

ifeq (${EL3_EXCEPTION_HANDLING},1)
BL31_SOURCES		+=	bl31/ehf.c
endif

ifeq (${SDEI_SUPPORT},1)
ifeq (${EL3_EXCEPTION_HANDLING},0)
  $(error EL3_EXCEPTION_HANDLING must be 1 for SDEI support)
endif
BL31_SOURCES		+=	services/std_svc/sdei/sdei_dispatch.S	\
				services/std_svc/sdei/sdei_event.c	\
				services/std_svc/sdei/sdei_intr_mgmt.c	\
				services/std_svc/sdei/sdei_main.c	\
				services/std_svc/sdei/sdei_state.c
endif

ifeq (${ENABLE_SPE_FOR_LOWER_ELS},1)
BL31_SOURCES		+=	lib/extensions/spe/spe.c
endif

ifeq (${ENABLE_AMU},1)
BL31_SOURCES		+=	lib/extensions/amu/aarch64/amu.c		\
				lib/extensions/amu/aarch64/amu_helpers.S
endif

ifeq (${ENABLE_SVE_FOR_NS},1)
BL31_SOURCES		+=	lib/extensions/sve/sve.c
endif

ifeq (${ENABLE_MPAM_FOR_LOWER_ELS},1)
BL31_SOURCES		+=	lib/extensions/mpam/mpam.c
endif

ifeq (${WORKAROUND_CVE_2017_5715},1)
BL31_SOURCES		+=	lib/cpus/aarch64/wa_cve_2017_5715_bpiall.S	\
				lib/cpus/aarch64/wa_cve_2017_5715_mmu.S
endif

BL31_LINKERFILE		:=	bl31/bl31.ld.S

# Flag used to indicate if Crash reporting via console should be included
# in BL31. This defaults to being present in DEBUG builds only
ifndef CRASH_REPORTING
CRASH_REPORTING		:=	$(DEBUG)
endif

$(eval $(call assert_boolean,CRASH_REPORTING))
$(eval $(call assert_boolean,EL3_EXCEPTION_HANDLING))
$(eval $(call assert_boolean,SDEI_SUPPORT))

$(eval $(call add_define,CRASH_REPORTING))
$(eval $(call add_define,EL3_EXCEPTION_HANDLING))
$(eval $(call add_define,SDEI_SUPPORT))