blob: 42779c720e6a0652952f95d5f644d513ca4a80fd [file] [log] [blame]
Sandrine Bailleux2b001322018-12-10 13:51:32 +01001#
Alexei Fedorov7cc25872020-06-02 16:35:36 +01002# Copyright (c) 2018-2020, Arm Limited. All rights reserved.
Sandrine Bailleux2b001322018-12-10 13:51:32 +01003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
Alexei Fedorov0f305472019-10-29 14:06:54 +00007# Default number of threads per CPU on FVP
Alexei Fedorov7cc25872020-06-02 16:35:36 +01008FVP_MAX_PE_PER_CPU := 1
Alexei Fedorov0f305472019-10-29 14:06:54 +00009
10# Check the PE per core count
11ifneq ($(FVP_MAX_PE_PER_CPU),$(filter $(FVP_MAX_PE_PER_CPU),1 2))
Alexei Fedorov7cc25872020-06-02 16:35:36 +010012$(error "Incorrect FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU} \
13 specified for FVP port")
Alexei Fedorov0f305472019-10-29 14:06:54 +000014endif
15
Alexei Fedorov7cc25872020-06-02 16:35:36 +010016# Default cluster count and number of CPUs per cluster for FVP
17ifeq ($(FVP_MAX_PE_PER_CPU),1)
18FVP_CLUSTER_COUNT := 2
19FVP_MAX_CPUS_PER_CLUSTER := 4
20else
21FVP_CLUSTER_COUNT := 1
22FVP_MAX_CPUS_PER_CLUSTER := 8
23endif
24
25# Check cluster count and number of CPUs per cluster
26ifeq ($(FVP_MAX_PE_PER_CPU),2)
27# Multithreaded CPU: 1 cluster with up to 8 CPUs
28$(eval $(call CREATE_SEQ,CLS,1))
29$(eval $(call CREATE_SEQ,CPU,8))
30else
Alexei Fedorov250fccc2020-10-05 13:48:26 +010031# CPU inside DynamIQ Shared Unit: 1 cluster with up to 8 CPUs
32ifeq ($(FVP_CLUSTER_COUNT),1)
33$(eval $(call CREATE_SEQ,CLS,1))
34$(eval $(call CREATE_SEQ,CPU,8))
35else
Alexei Fedorov7cc25872020-06-02 16:35:36 +010036# CPU with single thread: max 4 clusters with up to 4 CPUs
37$(eval $(call CREATE_SEQ,CLS,4))
38$(eval $(call CREATE_SEQ,CPU,4))
39endif
Alexei Fedorov250fccc2020-10-05 13:48:26 +010040endif
Alexei Fedorov7cc25872020-06-02 16:35:36 +010041
42# Check cluster count
43ifneq ($(FVP_CLUSTER_COUNT),$(filter $(FVP_CLUSTER_COUNT),$(CLS)))
44 $(error "Incorrect FVP_CLUSTER_COUNT = ${FVP_CLUSTER_COUNT} \
Alexei Fedorov250fccc2020-10-05 13:48:26 +010045 specified for FVP port with \
46 FVP_MAX_CPUS_PER_CLUSTER = ${FVP_MAX_CPUS_PER_CLUSTER} \
47 FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU}")
Alexei Fedorov7cc25872020-06-02 16:35:36 +010048endif
49
50# Check number of CPUs per cluster
51ifneq ($(FVP_MAX_CPUS_PER_CLUSTER),$(filter $(FVP_MAX_CPUS_PER_CLUSTER),$(CPU)))
52 $(error "Incorrect FVP_MAX_CPUS_PER_CLUSTER = ${FVP_MAX_CPUS_PER_CLUSTER} \
Alexei Fedorov250fccc2020-10-05 13:48:26 +010053 specified for FVP port with \
54 FVP_CLUSTER_COUNT = ${FVP_CLUSTER_COUNT} \
55 FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU}")
Alexei Fedorov7cc25872020-06-02 16:35:36 +010056endif
57
58# Pass FVP topology definitions to the build system
59$(eval $(call add_define,TFTF_DEFINES,FVP_CLUSTER_COUNT))
60$(eval $(call add_define,TFTF_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
Alexei Fedorov0f305472019-10-29 14:06:54 +000061$(eval $(call add_define,TFTF_DEFINES,FVP_MAX_PE_PER_CPU))
Alexei Fedorov7cc25872020-06-02 16:35:36 +010062
63$(eval $(call add_define,NS_BL1U_DEFINES,FVP_CLUSTER_COUNT))
64$(eval $(call add_define,NS_BL1U_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
Alexei Fedorov0f305472019-10-29 14:06:54 +000065$(eval $(call add_define,NS_BL1U_DEFINES,FVP_MAX_PE_PER_CPU))
Alexei Fedorov7cc25872020-06-02 16:35:36 +010066
67$(eval $(call add_define,NS_BL2U_DEFINES,FVP_CLUSTER_COUNT))
68$(eval $(call add_define,NS_BL2U_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
Alexei Fedorov0f305472019-10-29 14:06:54 +000069$(eval $(call add_define,NS_BL2U_DEFINES,FVP_MAX_PE_PER_CPU))
70
Arunachalam Ganapathy51be1fe2020-09-22 13:25:21 +010071PLAT_INCLUDES += -Iplat/arm/fvp/include/
Sandrine Bailleux2b001322018-12-10 13:51:32 +010072
73PLAT_SOURCES := drivers/arm/gic/arm_gic_v2v3.c \
74 drivers/arm/gic/gic_v2.c \
75 drivers/arm/gic/gic_v3.c \
76 drivers/arm/sp805/sp805.c \
77 drivers/arm/timer/private_timer.c \
78 drivers/arm/timer/system_timer.c \
79 plat/arm/fvp/${ARCH}/plat_helpers.S \
80 plat/arm/fvp/fvp_pwr_state.c \
81 plat/arm/fvp/fvp_topology.c \
82 plat/arm/fvp/fvp_mem_prot.c \
83 plat/arm/fvp/plat_setup.c
84
85CACTUS_SOURCES += plat/arm/fvp/${ARCH}/plat_helpers.S
86
87# Firmware update is implemented on FVP.
88FIRMWARE_UPDATE := 1
89
Sandrine Bailleuxac992f32020-03-02 11:05:15 +010090PLAT_TESTS_SKIP_LIST := plat/arm/fvp/fvp_tests_to_skip.txt
91
Sandrine Bailleux2b001322018-12-10 13:51:32 +010092include plat/arm/common/arm_common.mk