Sandrine Bailleux | 2b00132 | 2018-12-10 13:51:32 +0100 | [diff] [blame] | 1 | # |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 2 | # Copyright (c) 2018-2020, 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 | |
Alexei Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 7 | # Default number of threads per CPU on FVP |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 8 | FVP_MAX_PE_PER_CPU := 1 |
Alexei Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 9 | |
| 10 | # Check the PE per core count |
| 11 | 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] | 12 | $(error "Incorrect FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU} \ |
| 13 | specified for FVP port") |
Alexei Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 14 | endif |
| 15 | |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 16 | # Default cluster count and number of CPUs per cluster for FVP |
| 17 | ifeq ($(FVP_MAX_PE_PER_CPU),1) |
| 18 | FVP_CLUSTER_COUNT := 2 |
| 19 | FVP_MAX_CPUS_PER_CLUSTER := 4 |
| 20 | else |
| 21 | FVP_CLUSTER_COUNT := 1 |
| 22 | FVP_MAX_CPUS_PER_CLUSTER := 8 |
| 23 | endif |
| 24 | |
| 25 | # Check cluster count and number of CPUs per cluster |
| 26 | ifeq ($(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)) |
| 30 | else |
Alexei Fedorov | 250fccc | 2020-10-05 13:48:26 +0100 | [diff] [blame] | 31 | # CPU inside DynamIQ Shared Unit: 1 cluster with up to 8 CPUs |
| 32 | ifeq ($(FVP_CLUSTER_COUNT),1) |
| 33 | $(eval $(call CREATE_SEQ,CLS,1)) |
| 34 | $(eval $(call CREATE_SEQ,CPU,8)) |
| 35 | else |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 36 | # 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)) |
| 39 | endif |
Alexei Fedorov | 250fccc | 2020-10-05 13:48:26 +0100 | [diff] [blame] | 40 | endif |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 41 | |
| 42 | # Check cluster count |
| 43 | ifneq ($(FVP_CLUSTER_COUNT),$(filter $(FVP_CLUSTER_COUNT),$(CLS))) |
| 44 | $(error "Incorrect FVP_CLUSTER_COUNT = ${FVP_CLUSTER_COUNT} \ |
Alexei Fedorov | 250fccc | 2020-10-05 13:48:26 +0100 | [diff] [blame] | 45 | 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 Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 48 | endif |
| 49 | |
| 50 | # Check number of CPUs per cluster |
| 51 | ifneq ($(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 Fedorov | 250fccc | 2020-10-05 13:48:26 +0100 | [diff] [blame] | 53 | specified for FVP port with \ |
| 54 | FVP_CLUSTER_COUNT = ${FVP_CLUSTER_COUNT} \ |
| 55 | FVP_MAX_PE_PER_CPU = ${FVP_MAX_PE_PER_CPU}") |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 56 | endif |
| 57 | |
| 58 | # Pass FVP topology definitions to the build system |
Max Shvetsov | 0b7d25f | 2021-03-05 13:46:42 +0000 | [diff] [blame] | 59 | $(eval $(call add_define,CACTUS_DEFINES,FVP_CLUSTER_COUNT)) |
| 60 | $(eval $(call add_define,CACTUS_DEFINES,FVP_MAX_CPUS_PER_CLUSTER)) |
| 61 | $(eval $(call add_define,CACTUS_DEFINES,FVP_MAX_PE_PER_CPU)) |
| 62 | |
| 63 | $(eval $(call add_define,CACTUS_MM_DEFINES,FVP_CLUSTER_COUNT)) |
| 64 | $(eval $(call add_define,CACTUS_MM_DEFINES,FVP_MAX_CPUS_PER_CLUSTER)) |
| 65 | $(eval $(call add_define,CACTUS_MM_DEFINES,FVP_MAX_PE_PER_CPU)) |
| 66 | |
| 67 | $(eval $(call add_define,IVY_DEFINES,FVP_CLUSTER_COUNT)) |
| 68 | $(eval $(call add_define,IVY_DEFINES,FVP_MAX_CPUS_PER_CLUSTER)) |
| 69 | $(eval $(call add_define,IVY_DEFINES,FVP_MAX_PE_PER_CPU)) |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 70 | |
| 71 | $(eval $(call add_define,NS_BL1U_DEFINES,FVP_CLUSTER_COUNT)) |
| 72 | $(eval $(call add_define,NS_BL1U_DEFINES,FVP_MAX_CPUS_PER_CLUSTER)) |
Alexei Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 73 | $(eval $(call add_define,NS_BL1U_DEFINES,FVP_MAX_PE_PER_CPU)) |
Alexei Fedorov | 7cc2587 | 2020-06-02 16:35:36 +0100 | [diff] [blame] | 74 | |
| 75 | $(eval $(call add_define,NS_BL2U_DEFINES,FVP_CLUSTER_COUNT)) |
| 76 | $(eval $(call add_define,NS_BL2U_DEFINES,FVP_MAX_CPUS_PER_CLUSTER)) |
Alexei Fedorov | 0f30547 | 2019-10-29 14:06:54 +0000 | [diff] [blame] | 77 | $(eval $(call add_define,NS_BL2U_DEFINES,FVP_MAX_PE_PER_CPU)) |
| 78 | |
Max Shvetsov | 0b7d25f | 2021-03-05 13:46:42 +0000 | [diff] [blame] | 79 | $(eval $(call add_define,TFTF_DEFINES,FVP_CLUSTER_COUNT)) |
| 80 | $(eval $(call add_define,TFTF_DEFINES,FVP_MAX_CPUS_PER_CLUSTER)) |
| 81 | $(eval $(call add_define,TFTF_DEFINES,FVP_MAX_PE_PER_CPU)) |
| 82 | |
Federico Recanati | d3749b0 | 2022-01-14 15:44:45 +0100 | [diff] [blame^] | 83 | # Default PA size for FVP platform |
| 84 | PA_SIZE := 34 |
| 85 | |
| 86 | $(eval $(call add_define,CACTUS_DEFINES,PA_SIZE)) |
| 87 | $(eval $(call add_define,IVY_DEFINES,PA_SIZE)) |
| 88 | $(eval $(call add_define,NS_BL1U_DEFINES,PA_SIZE)) |
| 89 | $(eval $(call add_define,NS_BL2U_DEFINES,PA_SIZE)) |
| 90 | $(eval $(call add_define,TFTF_DEFINES,PA_SIZE)) |
| 91 | |
Arunachalam Ganapathy | 51be1fe | 2020-09-22 13:25:21 +0100 | [diff] [blame] | 92 | PLAT_INCLUDES += -Iplat/arm/fvp/include/ |
Sandrine Bailleux | 2b00132 | 2018-12-10 13:51:32 +0100 | [diff] [blame] | 93 | |
| 94 | PLAT_SOURCES := drivers/arm/gic/arm_gic_v2v3.c \ |
| 95 | drivers/arm/gic/gic_v2.c \ |
| 96 | drivers/arm/gic/gic_v3.c \ |
| 97 | drivers/arm/sp805/sp805.c \ |
| 98 | drivers/arm/timer/private_timer.c \ |
| 99 | drivers/arm/timer/system_timer.c \ |
| 100 | plat/arm/fvp/${ARCH}/plat_helpers.S \ |
| 101 | plat/arm/fvp/fvp_pwr_state.c \ |
| 102 | plat/arm/fvp/fvp_topology.c \ |
| 103 | plat/arm/fvp/fvp_mem_prot.c \ |
| 104 | plat/arm/fvp/plat_setup.c |
| 105 | |
| 106 | CACTUS_SOURCES += plat/arm/fvp/${ARCH}/plat_helpers.S |
Ruari Phipps | 9f1952c | 2020-08-24 11:32:32 +0100 | [diff] [blame] | 107 | IVY_SOURCES += plat/arm/fvp/${ARCH}/plat_helpers.S |
Sandrine Bailleux | 2b00132 | 2018-12-10 13:51:32 +0100 | [diff] [blame] | 108 | |
| 109 | # Firmware update is implemented on FVP. |
| 110 | FIRMWARE_UPDATE := 1 |
| 111 | |
Sandrine Bailleux | ac992f3 | 2020-03-02 11:05:15 +0100 | [diff] [blame] | 112 | PLAT_TESTS_SKIP_LIST := plat/arm/fvp/fvp_tests_to_skip.txt |
| 113 | |
Sandrine Bailleux | 2b00132 | 2018-12-10 13:51:32 +0100 | [diff] [blame] | 114 | include plat/arm/common/arm_common.mk |