blob: b993d725c9902bd5dd81e02363b255079e8f912c [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
31# CPU with single thread: max 4 clusters with up to 4 CPUs
32$(eval $(call CREATE_SEQ,CLS,4))
33$(eval $(call CREATE_SEQ,CPU,4))
34endif
35
36# Check cluster count
37ifneq ($(FVP_CLUSTER_COUNT),$(filter $(FVP_CLUSTER_COUNT),$(CLS)))
38 $(error "Incorrect FVP_CLUSTER_COUNT = ${FVP_CLUSTER_COUNT} \
39 specified for FVP port with FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU}")
40endif
41
42# Check number of CPUs per cluster
43ifneq ($(FVP_MAX_CPUS_PER_CLUSTER),$(filter $(FVP_MAX_CPUS_PER_CLUSTER),$(CPU)))
44 $(error "Incorrect FVP_MAX_CPUS_PER_CLUSTER = ${FVP_MAX_CPUS_PER_CLUSTER} \
45 specified for FVP port with FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU}")
46endif
47
48# Pass FVP topology definitions to the build system
49$(eval $(call add_define,TFTF_DEFINES,FVP_CLUSTER_COUNT))
50$(eval $(call add_define,TFTF_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
Alexei Fedorov0f305472019-10-29 14:06:54 +000051$(eval $(call add_define,TFTF_DEFINES,FVP_MAX_PE_PER_CPU))
Alexei Fedorov7cc25872020-06-02 16:35:36 +010052
53$(eval $(call add_define,NS_BL1U_DEFINES,FVP_CLUSTER_COUNT))
54$(eval $(call add_define,NS_BL1U_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
Alexei Fedorov0f305472019-10-29 14:06:54 +000055$(eval $(call add_define,NS_BL1U_DEFINES,FVP_MAX_PE_PER_CPU))
Alexei Fedorov7cc25872020-06-02 16:35:36 +010056
57$(eval $(call add_define,NS_BL2U_DEFINES,FVP_CLUSTER_COUNT))
58$(eval $(call add_define,NS_BL2U_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
Alexei Fedorov0f305472019-10-29 14:06:54 +000059$(eval $(call add_define,NS_BL2U_DEFINES,FVP_MAX_PE_PER_CPU))
60
Sandrine Bailleux2b001322018-12-10 13:51:32 +010061PLAT_INCLUDES := -Iplat/arm/fvp/include/
62
63PLAT_SOURCES := drivers/arm/gic/arm_gic_v2v3.c \
64 drivers/arm/gic/gic_v2.c \
65 drivers/arm/gic/gic_v3.c \
66 drivers/arm/sp805/sp805.c \
67 drivers/arm/timer/private_timer.c \
68 drivers/arm/timer/system_timer.c \
69 plat/arm/fvp/${ARCH}/plat_helpers.S \
70 plat/arm/fvp/fvp_pwr_state.c \
71 plat/arm/fvp/fvp_topology.c \
72 plat/arm/fvp/fvp_mem_prot.c \
73 plat/arm/fvp/plat_setup.c
74
75CACTUS_SOURCES += plat/arm/fvp/${ARCH}/plat_helpers.S
76
77# Firmware update is implemented on FVP.
78FIRMWARE_UPDATE := 1
79
Sandrine Bailleuxac992f32020-03-02 11:05:15 +010080PLAT_TESTS_SKIP_LIST := plat/arm/fvp/fvp_tests_to_skip.txt
81
Sandrine Bailleux2b001322018-12-10 13:51:32 +010082include plat/arm/common/arm_common.mk