blob: cb1a37b56ac622f2d483170c18a880efbf19e7b6 [file] [log] [blame]
Sandrine Bailleux2b001322018-12-10 13:51:32 +01001#
nabkah01002e5692022-10-10 12:36:46 +01002# Copyright (c) 2018-2022, Arm Limited. All rights reserved.
Sandrine Bailleux2b001322018-12-10 13:51:32 +01003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
nabkah01002e5692022-10-10 12:36:46 +01007# If not specified as build arguments, set default to 10 MB
8TFTF_MAX_IMAGE_SIZE:=10485760
9
Alexei Fedorov0f305472019-10-29 14:06:54 +000010# Default number of threads per CPU on FVP
Alexei Fedorov7cc25872020-06-02 16:35:36 +010011FVP_MAX_PE_PER_CPU := 1
Alexei Fedorov0f305472019-10-29 14:06:54 +000012
13# Check the PE per core count
14ifneq ($(FVP_MAX_PE_PER_CPU),$(filter $(FVP_MAX_PE_PER_CPU),1 2))
Alexei Fedorov7cc25872020-06-02 16:35:36 +010015$(error "Incorrect FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU} \
16 specified for FVP port")
Alexei Fedorov0f305472019-10-29 14:06:54 +000017endif
18
Alexei Fedorov7cc25872020-06-02 16:35:36 +010019# Default cluster count and number of CPUs per cluster for FVP
20ifeq ($(FVP_MAX_PE_PER_CPU),1)
21FVP_CLUSTER_COUNT := 2
22FVP_MAX_CPUS_PER_CLUSTER := 4
23else
24FVP_CLUSTER_COUNT := 1
25FVP_MAX_CPUS_PER_CLUSTER := 8
26endif
27
28# Check cluster count and number of CPUs per cluster
29ifeq ($(FVP_MAX_PE_PER_CPU),2)
30# Multithreaded CPU: 1 cluster with up to 8 CPUs
31$(eval $(call CREATE_SEQ,CLS,1))
32$(eval $(call CREATE_SEQ,CPU,8))
33else
Alexei Fedorov250fccc2020-10-05 13:48:26 +010034# CPU inside DynamIQ Shared Unit: 1 cluster with up to 8 CPUs
35ifeq ($(FVP_CLUSTER_COUNT),1)
36$(eval $(call CREATE_SEQ,CLS,1))
37$(eval $(call CREATE_SEQ,CPU,8))
38else
Alexei Fedorov7cc25872020-06-02 16:35:36 +010039# CPU with single thread: max 4 clusters with up to 4 CPUs
40$(eval $(call CREATE_SEQ,CLS,4))
41$(eval $(call CREATE_SEQ,CPU,4))
42endif
Alexei Fedorov250fccc2020-10-05 13:48:26 +010043endif
Alexei Fedorov7cc25872020-06-02 16:35:36 +010044
45# Check cluster count
46ifneq ($(FVP_CLUSTER_COUNT),$(filter $(FVP_CLUSTER_COUNT),$(CLS)))
47 $(error "Incorrect FVP_CLUSTER_COUNT = ${FVP_CLUSTER_COUNT} \
Alexei Fedorov250fccc2020-10-05 13:48:26 +010048 specified for FVP port with \
49 FVP_MAX_CPUS_PER_CLUSTER = ${FVP_MAX_CPUS_PER_CLUSTER} \
50 FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU}")
Alexei Fedorov7cc25872020-06-02 16:35:36 +010051endif
52
53# Check number of CPUs per cluster
54ifneq ($(FVP_MAX_CPUS_PER_CLUSTER),$(filter $(FVP_MAX_CPUS_PER_CLUSTER),$(CPU)))
55 $(error "Incorrect FVP_MAX_CPUS_PER_CLUSTER = ${FVP_MAX_CPUS_PER_CLUSTER} \
Alexei Fedorov250fccc2020-10-05 13:48:26 +010056 specified for FVP port with \
57 FVP_CLUSTER_COUNT = ${FVP_CLUSTER_COUNT} \
58 FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU}")
Alexei Fedorov7cc25872020-06-02 16:35:36 +010059endif
60
61# Pass FVP topology definitions to the build system
Max Shvetsov0b7d25f2021-03-05 13:46:42 +000062$(eval $(call add_define,CACTUS_DEFINES,FVP_CLUSTER_COUNT))
63$(eval $(call add_define,CACTUS_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
64$(eval $(call add_define,CACTUS_DEFINES,FVP_MAX_PE_PER_CPU))
65
66$(eval $(call add_define,CACTUS_MM_DEFINES,FVP_CLUSTER_COUNT))
67$(eval $(call add_define,CACTUS_MM_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
68$(eval $(call add_define,CACTUS_MM_DEFINES,FVP_MAX_PE_PER_CPU))
69
70$(eval $(call add_define,IVY_DEFINES,FVP_CLUSTER_COUNT))
71$(eval $(call add_define,IVY_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
72$(eval $(call add_define,IVY_DEFINES,FVP_MAX_PE_PER_CPU))
Alexei Fedorov7cc25872020-06-02 16:35:36 +010073
74$(eval $(call add_define,NS_BL1U_DEFINES,FVP_CLUSTER_COUNT))
75$(eval $(call add_define,NS_BL1U_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
Alexei Fedorov0f305472019-10-29 14:06:54 +000076$(eval $(call add_define,NS_BL1U_DEFINES,FVP_MAX_PE_PER_CPU))
Alexei Fedorov7cc25872020-06-02 16:35:36 +010077
78$(eval $(call add_define,NS_BL2U_DEFINES,FVP_CLUSTER_COUNT))
79$(eval $(call add_define,NS_BL2U_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
Alexei Fedorov0f305472019-10-29 14:06:54 +000080$(eval $(call add_define,NS_BL2U_DEFINES,FVP_MAX_PE_PER_CPU))
81
Max Shvetsov0b7d25f2021-03-05 13:46:42 +000082$(eval $(call add_define,TFTF_DEFINES,FVP_CLUSTER_COUNT))
83$(eval $(call add_define,TFTF_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
84$(eval $(call add_define,TFTF_DEFINES,FVP_MAX_PE_PER_CPU))
nabkah01002e5692022-10-10 12:36:46 +010085$(eval $(call add_define,TFTF_DEFINES,TFTF_MAX_IMAGE_SIZE))
Max Shvetsov0b7d25f2021-03-05 13:46:42 +000086
Federico Recanatid3749b02022-01-14 15:44:45 +010087# Default PA size for FVP platform
88PA_SIZE := 34
89
90$(eval $(call add_define,CACTUS_DEFINES,PA_SIZE))
91$(eval $(call add_define,IVY_DEFINES,PA_SIZE))
92$(eval $(call add_define,NS_BL1U_DEFINES,PA_SIZE))
93$(eval $(call add_define,NS_BL2U_DEFINES,PA_SIZE))
94$(eval $(call add_define,TFTF_DEFINES,PA_SIZE))
nabkah01002e5692022-10-10 12:36:46 +010095$(eval $(call add_define,REALM_DEFINES,PA_SIZE))
Federico Recanatid3749b02022-01-14 15:44:45 +010096
Arunachalam Ganapathy51be1fe2020-09-22 13:25:21 +010097PLAT_INCLUDES += -Iplat/arm/fvp/include/
Sandrine Bailleux2b001322018-12-10 13:51:32 +010098
99PLAT_SOURCES := drivers/arm/gic/arm_gic_v2v3.c \
100 drivers/arm/gic/gic_v2.c \
101 drivers/arm/gic/gic_v3.c \
102 drivers/arm/sp805/sp805.c \
103 drivers/arm/timer/private_timer.c \
104 drivers/arm/timer/system_timer.c \
105 plat/arm/fvp/${ARCH}/plat_helpers.S \
106 plat/arm/fvp/fvp_pwr_state.c \
107 plat/arm/fvp/fvp_topology.c \
108 plat/arm/fvp/fvp_mem_prot.c \
109 plat/arm/fvp/plat_setup.c
110
111CACTUS_SOURCES += plat/arm/fvp/${ARCH}/plat_helpers.S
Ruari Phipps9f1952c2020-08-24 11:32:32 +0100112IVY_SOURCES += plat/arm/fvp/${ARCH}/plat_helpers.S
Sandrine Bailleux2b001322018-12-10 13:51:32 +0100113
114# Firmware update is implemented on FVP.
115FIRMWARE_UPDATE := 1
116
Sandrine Bailleuxac992f32020-03-02 11:05:15 +0100117PLAT_TESTS_SKIP_LIST := plat/arm/fvp/fvp_tests_to_skip.txt
118
Sandrine Bailleux2b001322018-12-10 13:51:32 +0100119include plat/arm/common/arm_common.mk