Sandrine Bailleux | 2b00132 | 2018-12-10 13:51:32 +0100 | [diff] [blame] | 1 | # |
nabkah01 | 002e569 | 2022-10-10 12:36:46 +0100 | [diff] [blame] | 2 | # Copyright (c) 2018-2022, Arm Limited. All rights reserved. |
Sandrine Bailleux | 2b00132 | 2018-12-10 13:51:32 +0100 | [diff] [blame] | 3 | # |
| 4 | # SPDX-License-Identifier: BSD-3-Clause |
| 5 | # |
| 6 | |
nabkah01 | 002e569 | 2022-10-10 12:36:46 +0100 | [diff] [blame] | 7 | # If not specified as build arguments, set default to 10 MB |
| 8 | TFTF_MAX_IMAGE_SIZE:=10485760 |
| 9 | |
Alexei Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 10 | # Default number of threads per CPU on FVP |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 11 | FVP_MAX_PE_PER_CPU := 1 |
Alexei Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 12 | |
| 13 | # Check the PE per core count |
| 14 | ifneq ($(FVP_MAX_PE_PER_CPU),$(filter $(FVP_MAX_PE_PER_CPU),1 2)) |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 15 | $(error "Incorrect FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU} \ |
| 16 | specified for FVP port") |
Alexei Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 17 | endif |
| 18 | |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 19 | # Default cluster count and number of CPUs per cluster for FVP |
| 20 | ifeq ($(FVP_MAX_PE_PER_CPU),1) |
| 21 | FVP_CLUSTER_COUNT := 2 |
| 22 | FVP_MAX_CPUS_PER_CLUSTER := 4 |
| 23 | else |
| 24 | FVP_CLUSTER_COUNT := 1 |
| 25 | FVP_MAX_CPUS_PER_CLUSTER := 8 |
| 26 | endif |
| 27 | |
| 28 | # Check cluster count and number of CPUs per cluster |
| 29 | ifeq ($(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)) |
| 33 | else |
Alexei Fedorov | 250fccc | 2020-10-05 13:48:26 +0100 | [diff] [blame] | 34 | # CPU inside DynamIQ Shared Unit: 1 cluster with up to 8 CPUs |
| 35 | ifeq ($(FVP_CLUSTER_COUNT),1) |
| 36 | $(eval $(call CREATE_SEQ,CLS,1)) |
| 37 | $(eval $(call CREATE_SEQ,CPU,8)) |
| 38 | else |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 39 | # 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)) |
| 42 | endif |
Alexei Fedorov | 250fccc | 2020-10-05 13:48:26 +0100 | [diff] [blame] | 43 | endif |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 44 | |
| 45 | # Check cluster count |
| 46 | ifneq ($(FVP_CLUSTER_COUNT),$(filter $(FVP_CLUSTER_COUNT),$(CLS))) |
| 47 | $(error "Incorrect FVP_CLUSTER_COUNT = ${FVP_CLUSTER_COUNT} \ |
Alexei Fedorov | 250fccc | 2020-10-05 13:48:26 +0100 | [diff] [blame] | 48 | 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 Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 51 | endif |
| 52 | |
| 53 | # Check number of CPUs per cluster |
| 54 | ifneq ($(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 Fedorov | 250fccc | 2020-10-05 13:48:26 +0100 | [diff] [blame] | 56 | specified for FVP port with \ |
| 57 | FVP_CLUSTER_COUNT = ${FVP_CLUSTER_COUNT} \ |
| 58 | FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU}") |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 59 | endif |
| 60 | |
| 61 | # Pass FVP topology definitions to the build system |
Max Shvetsov | 0b7d25f | 2021-03-05 13:46:42 +0000 | [diff] [blame] | 62 | $(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 Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 73 | |
| 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 Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 76 | $(eval $(call add_define,NS_BL1U_DEFINES,FVP_MAX_PE_PER_CPU)) |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 77 | |
| 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 Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 80 | $(eval $(call add_define,NS_BL2U_DEFINES,FVP_MAX_PE_PER_CPU)) |
| 81 | |
Max Shvetsov | 0b7d25f | 2021-03-05 13:46:42 +0000 | [diff] [blame] | 82 | $(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)) |
nabkah01 | 002e569 | 2022-10-10 12:36:46 +0100 | [diff] [blame] | 85 | $(eval $(call add_define,TFTF_DEFINES,TFTF_MAX_IMAGE_SIZE)) |
Max Shvetsov | 0b7d25f | 2021-03-05 13:46:42 +0000 | [diff] [blame] | 86 | |
Federico Recanati | d3749b0 | 2022-01-14 15:44:45 +0100 | [diff] [blame] | 87 | # Default PA size for FVP platform |
| 88 | PA_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)) |
nabkah01 | 002e569 | 2022-10-10 12:36:46 +0100 | [diff] [blame] | 95 | $(eval $(call add_define,REALM_DEFINES,PA_SIZE)) |
Federico Recanati | d3749b0 | 2022-01-14 15:44:45 +0100 | [diff] [blame] | 96 | |
Arunachalam Ganapathy | 51be1fe | 2020-09-22 13:25:21 +0100 | [diff] [blame] | 97 | PLAT_INCLUDES += -Iplat/arm/fvp/include/ |
Sandrine Bailleux | 2b00132 | 2018-12-10 13:51:32 +0100 | [diff] [blame] | 98 | |
| 99 | PLAT_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 | |
| 111 | CACTUS_SOURCES += plat/arm/fvp/${ARCH}/plat_helpers.S |
Ruari Phipps | 9f1952c | 2020-08-24 11:32:32 +0100 | [diff] [blame] | 112 | IVY_SOURCES += plat/arm/fvp/${ARCH}/plat_helpers.S |
Sandrine Bailleux | 2b00132 | 2018-12-10 13:51:32 +0100 | [diff] [blame] | 113 | |
| 114 | # Firmware update is implemented on FVP. |
| 115 | FIRMWARE_UPDATE := 1 |
| 116 | |
Sandrine Bailleux | ac992f3 | 2020-03-02 11:05:15 +0100 | [diff] [blame] | 117 | PLAT_TESTS_SKIP_LIST := plat/arm/fvp/fvp_tests_to_skip.txt |
| 118 | |
Sandrine Bailleux | 2b00132 | 2018-12-10 13:51:32 +0100 | [diff] [blame] | 119 | include plat/arm/common/arm_common.mk |