blob: febe88996cc26e5dd743b31e89adb598fa60da7c [file] [log] [blame]
Leonardo Sandoval9dfdd1b2020-08-06 17:08:11 -05001#!/usr/bin/env bash
Zelalemeb9c1bb2020-08-04 12:40:46 -05002#
Igor Podgainõic6f4ae22024-12-11 13:35:24 +01003# Copyright (c) 2019-2025, Arm Limited. All rights reserved.
Zelalemeb9c1bb2020-08-04 12:40:46 -05004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8reset_var cluster_0_has_el2
9reset_var cluster_1_has_el2
10
11reset_var cluster_0_reg_reset
12reset_var cluster_1_reg_reset
13
14reset_var cluster_0_num_cores
15reset_var cluster_1_num_cores
16
17reset_var aarch64_only
18reset_var aarch32
19
Madhukar Pappireddy2f284e12021-08-30 16:06:14 -050020reset_var plat_variant
21
Federico Recanatiedf25d92022-03-02 20:54:19 +010022reset_var pa_size
23
Zelalemeb9c1bb2020-08-04 12:40:46 -050024#------------ GIC configuration --------------
25
26# GICv2 compatibility is not supported and GICD_CTLR.ARE_* is always one
27reset_var gicd_are_fixed_one
28
29# Number of extended PPI supported: Default 0, Maximum 64
30reset_var gicd_ext_ppi_count
31
32# Number of extended SPI supported: Default 0, Maximum 1024
33reset_var gicd_ext_spi_count
34
35# Number of Interrupt Translation Services to be instantiated (0=none)
36reset_var gicd_its_count
37
38# GICv4 Virtual LPIs and Direct injection of Virtual LPIs supported
39reset_var gicd_virtual_lpi
40
41# Device has support for extended SPI/PPI ID ranges
42reset_var gicv3_ext_interrupt_range
43
44# When using the GICv3 model, pretend to be a GICv2 system
45reset_var gicv3_gicv2_only
46
47# Number of SPIs that are implemented: Default 224, Maximum 988
48reset_var gicv3_spi_count
49
Govindraj Raja4d54f7a2025-02-20 12:03:26 -060050reset_var has_ete
51
Zelalemeb9c1bb2020-08-04 12:40:46 -050052# Enable GICv4.1 functionality
53reset_var has_gicv4_1
54
Govindraj Raja700a3df2024-06-12 15:10:52 -050055reset_var has_sve
Zelalemeb9c1bb2020-08-04 12:40:46 -050056
Boyan Karatotev1cc60a62022-11-01 17:00:15 +000057reset_var has_sme
58
Olivier Deprez674dcbf2024-02-15 11:30:51 +010059reset_var has_sme_fa64
60
Olivier Deprezdd0e3d12024-02-15 11:38:03 +010061reset_var sme_only
62
Jayanth Dodderi Chidanand65bb8b82023-01-12 15:18:16 +000063reset_var has_sme2
64
Zelalemeb9c1bb2020-08-04 12:40:46 -050065reset_var bmcov_plugin
66
67reset_var retain_flash
68
69reset_var nvcounter_version
70reset_var nvcounter_diag
71
Arvind Ram Prakashc0421882024-01-05 16:35:42 -060072# Enable FEAT_MPAM
73reset_var has_mpam
74
Madhukar Pappireddy024efd52020-12-31 16:45:52 -060075# Enable SMMUv3 functionality
76reset_var has_smmuv3_params
77
Zelalem Aweke773e19b2021-08-20 17:41:00 -050078# Enable FEAT_RME
79reset_var has_rme
80
Juan Pablo Conded0b527c2022-07-25 16:48:17 -040081# Enable FEAT_RNG
82reset_var has_rng
83
84# Enable FEAT_RNG_TRAP
85reset_var has_rng_trap
86
Manish Pandeye11b6592024-03-11 13:10:46 +000087# Enable FEAT_ECV
88reset_var has_ecv
89
Jayanth Dodderi Chidanandddd0a4b2024-08-20 17:46:03 +010090# Enable FEAT_S1PIE
91reset_var has_s1pie
92
93# Enable FEAT_S2PIE
94reset_var has_s2pie
95
96# Enable FEAT_S1POE
97reset_var has_s1poe
98
99# Enable FEAT_S2POE
100reset_var has_s2poe
101
102# Enable FEAT_TCR2
103reset_var has_tcr2
104
105# Enable FEAT_CSV2_2
106reset_var has_csv2_2
107
108# Enable FEAT_GCS
109reset_var has_gcs
110
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200111# Enable FEAT_FGT2
112reset_var has_fgt2
113
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000114# Layout of MPIDR. 0=AFF0 is CPUID, 1=AFF1 is CPUID
115reset_var mpidr_layout
116
117# Sets the MPIDR.MT bit. Setting this to true hints the cluster
118# is multi-threading compatible
119reset_var supports_multi_threading
120
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100121# ETM plugin to access ETM trace system registers
122reset_var etm_plugin
123
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100124# Trace filter register support
125reset_var supports_trace_filter_regs
126
127# Trace buffer control register support
128reset_var supports_trace_buffer_control_regs
129
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100130# CRC32 support
131reset_var supports_crc32
132
Juan Pablo Condedce97602024-02-28 16:46:13 -0600133# Accelerator instruction support level (none, FEAT_LS64,
134# FEAT_LS64_V, FEAT_LS64_ACCDATA)
135reset_var accelerator_support_level
136
Manish V Badarkhee55380d2025-04-04 13:05:11 +0100137# ROTPK in trusted register space
138reset_var has_rotpk_in_regs
139
Zelalemeb9c1bb2020-08-04 12:40:46 -0500140source "$ci_root/model/fvp_common.sh"
141
142#------------ Common configuration --------------
143
144cat <<EOF >>"$model_param_file"
145${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
146${gicv3_spi_count+-C gic_distributor.SPI-count=$gicv3_spi_count}
147${gicd_are_fixed_one+-C gic_distributor.ARE-fixed-to-one=$gicd_are_fixed_one}
148${gicd_ext_ppi_count+-C gic_distributor.extended-ppi-count=$gicd_ext_ppi_count}
149${gicd_ext_spi_count+-C gic_distributor.extended-spi-count=$gicd_ext_spi_count}
150${gicd_its_count+-C gic_distributor.ITS-count=$gicd_its_count}
151${gicd_virtual_lpi+-C gic_distributor.virtual-lpi-support=$gicd_virtual_lpi}
152${has_gicv4_1+-C has-gicv4.1=$has_gicv4_1}
153
Govindraj Raja4d54f7a2025-02-20 12:03:26 -0600154${has_ete+-C cluster0.has_ete=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500155${has_sve+-C cluster0.has_sve=1}
156${has_sve+-C cluster0.sve.veclen=$((128 / 8))}
157${has_sme+-C cluster0.sve.has_sme=1}
158${has_sme2+-C cluster0.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100159${has_sme_fa64+-C cluster0.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100160${sme_only+-C cluster0.sve.sme_only=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500161
Govindraj Raja4d54f7a2025-02-20 12:03:26 -0600162${has_ete+-C cluster1.has_ete=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500163${has_sve+-C cluster1.has_sve=1}
164${has_sve+-C cluster1.sve.veclen=$((128 / 8))}
165${has_sme+-C cluster1.sve.has_sme=1}
166${has_sme2+-C cluster1.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100167${has_sme_fa64+-C cluster1.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100168${sme_only+-C cluster1.sve.sme_only=1}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500169
170${bmcov_plugin+--plugin=$bmcov_plugin_path}
171
172${nvcounter_version+-C bp.trusted_nv_counter.version=$nvcounter_version}
173${nvcounter_diag+-C bp.trusted_nv_counter.diagnostics=$nvcounter_diag}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100174
175${etm_plugin+--plugin=$etm_plugin_path}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500176EOF
177
Manish V Badarkhee55380d2025-04-04 13:05:11 +0100178# Store the fixed ROTPK hash in registers
179# Note: This is the SHA256 hash of the RSA 2K development public key used in TF-A
180if [ "$has_rotpk_in_regs" = "1" ]; then
181 cat <<EOF >>"$model_param_file"
182-C bp.trusted_key_storage.public_key="0982f3b0 3ad89712 47727a37 7332ec1b e23292e9 5ef65949 464a4a8b da9a22d8"
183EOF
184fi
185
Zelalemeb9c1bb2020-08-04 12:40:46 -0500186# TFTF Reboot/Shutdown tests
187if [ "$retain_flash" = "1" ]; then
188 cat <<EOF >>"$model_param_file"
189-C bp.flashloader1.fname=$flashloader1_fwrite
190-C bp.flashloader1.fnameWrite=$flashloader1_fwrite
191-C bp.flashloader0.fnameWrite=$flashloader0_fwrite
192-C bp.pl011_uart0.untimed_fifos=1
193-C bp.ve_sysregs.mmbSiteDefault=0
194EOF
195fi
196
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200197# Enable RME at the system level
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500198if [ "$has_rme" = "1" ]; then
199 cat <<EOF >>"$model_param_file"
200-C bp.refcounter.non_arch_start_at_default=1
201-C bp.refcounter.use_real_time=0
Manish V Badarkhe2176c4c2022-12-20 19:21:12 +0000202-C bp.has_rme=1
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500203EOF
204fi
205
Maksims Svecovsc2e24752022-03-24 13:52:31 +0000206# MTE is enabled
207if [[ -n $memory_tagging_support_level ]]; then
208 cat <<EOF >>"$model_param_file"
209-C bp.dram_metadata.is_enabled=1
210EOF
211fi
212
Juan Pablo Condedce97602024-02-28 16:46:13 -0600213# If accelerator support level enabled, disable bitwise negation
214# for values stored/read using FEAT_LS64* instructions.
215if [ "$accelerator_support_level" != "0" ]; then
216 cat <<EOF >>"$model_param_file"
217-C bp.ls64_testing_fifo.op_type=0
218EOF
219fi
220
Zelalemeb9c1bb2020-08-04 12:40:46 -0500221#------------ Cluster0 configuration --------------
222
223cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100224${pa_size+-C cluster0.PA_SIZE=$pa_size}
225
Zelalemeb9c1bb2020-08-04 12:40:46 -0500226${cluster_0_reg_reset+-C cluster0.register_reset_data=$cluster_0_reg_reset}
227
228${cluster_0_has_el2+-C cluster0.has_el2=$cluster_0_has_el2}
229
230${amu_present+-C cluster0.has_amu=$amu_present}
Boyan Karatotevb60abde2025-03-11 15:50:37 +0000231${amu_version+-C cluster0.amu_version=${amu_version}}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500232
233${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
234${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
235${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
236${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
237
238${reset_to_spmin+-C cluster0.cpu0.RVBAR=${bl32_addr:?}}
239${reset_to_spmin+-C cluster0.cpu1.RVBAR=${bl32_addr:?}}
240${reset_to_spmin+-C cluster0.cpu2.RVBAR=${bl32_addr:?}}
241${reset_to_spmin+-C cluster0.cpu3.RVBAR=${bl32_addr:?}}
242
243${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
244
245${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
246
247${aarch64_only+-C cluster0.max_32bit_el=-1}
248
249${aarch32+-C cluster0.cpu0.CONFIG64=0}
250${aarch32+-C cluster0.cpu1.CONFIG64=0}
251${aarch32+-C cluster0.cpu2.CONFIG64=0}
252${aarch32+-C cluster0.cpu3.CONFIG64=0}
253
254
255${bl2_at_el3+-C cluster0.cpu0.RVBAR=${bl2_addr:?}}
256${bl2_at_el3+-C cluster0.cpu1.RVBAR=${bl2_addr:?}}
257${bl2_at_el3+-C cluster0.cpu2.RVBAR=${bl2_addr:?}}
258${bl2_at_el3+-C cluster0.cpu3.RVBAR=${bl2_addr:?}}
259
260${memory_tagging_support_level+-C cluster0.memory_tagging_support_level=$memory_tagging_support_level}
261
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000262${has_branch_target_exception+-C cluster0.has_branch_target_exception=$has_branch_target_exception}
263
Olivier Deprez18101ca2021-04-23 19:42:04 +0200264${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution=$restriction_on_speculative_execution}
265
Zelalem Aweke52aad162021-10-25 17:28:03 -0500266${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
267
Zelalemeb9c1bb2020-08-04 12:40:46 -0500268${gicv3_ext_interrupt_range+-C cluster0.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600269
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000270${mpidr_layout+-C cluster0.mpidr_layout=$mpidr_layout}
271
272${supports_multi_threading+-C cluster0.supports_multi_threading=$supports_multi_threading}
273
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500274${has_v8_9_debug_extension+-C cluster0.has_v8_9_debug_extension=$has_v8_9_debug_extension}
275
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100276${etm_present+-C cluster0.cpu0.etm-present=$etm_present}
277${etm_present+-C cluster0.cpu1.etm-present=$etm_present}
278${etm_present+-C cluster0.cpu2.etm-present=$etm_present}
279${etm_present+-C cluster0.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100280${supports_trace_filter_regs+-C cluster0.has_self_hosted_trace_extension=$supports_trace_filter_regs}
281${supports_trace_buffer_control_regs+-C cluster0.has_trbe=$supports_trace_buffer_control_regs}
John Powell3ced4082022-04-26 17:12:50 -0500282${supports_branch_record_buffer_control_regs+-C cluster0.has_brbe=$supports_branch_record_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100283${supports_crc32+-C cluster0.cpu0.enable_crc32=$supports_crc32}
284${supports_crc32+-C cluster0.cpu1.enable_crc32=$supports_crc32}
285${supports_crc32+-C cluster0.cpu2.enable_crc32=$supports_crc32}
286${supports_crc32+-C cluster0.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100287
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100288${cache_state_modelled+-C cluster0.stage12_tlb_size=1024}
289${cache_state_modelled+-C cluster0.check_memory_attributes=0}
290
Zelalemeb9c1bb2020-08-04 12:40:46 -0500291EOF
292
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600293if [ "$has_smmuv3_params" = "1" ]; then
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500294 cat <<EOF >>"$model_param_file"
295-C pci.pci_smmuv3.mmu.SMMU_AIDR=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500296-C pci.pci_smmuv3.mmu.SMMU_IDR1=0x00600002
297-C pci.pci_smmuv3.mmu.SMMU_IDR3=0x1714
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600298-C pci.pci_smmuv3.mmu.SMMU_S_IDR1=0xA0000002
299-C pci.pci_smmuv3.mmu.SMMU_S_IDR2=0
300-C pci.pci_smmuv3.mmu.SMMU_S_IDR3=0
301-C pci.smmulogger.trace_debug=1
302-C pci.smmulogger.trace_snoops=1
303-C pci.tbu0_pre_smmu_logger.trace_snoops=1
304-C pci.tbu0_pre_smmu_logger.trace_debug=1
305-C pci.pci_smmuv3.mmu.all_error_messages_through_trace=1
Olivier Deprez498873e2022-03-09 17:46:36 +0100306-C TRACE.GenericTrace.trace-sources=verbose_commentary,smmu_initial_transaction,smmu_final_transaction,*.pci.pci_smmuv3.mmu.*,*.pci.smmulogger.*,*.pci.tbu0_pre_smmu_logger.*,smmu_poison_tw_data
Govindraj Raja7d80d932025-06-30 14:25:38 -0500307--plugin $generictrace_plugin_path
Madhukar Pappireddy3e680902024-02-07 10:16:20 -0600308-C cci550.force_on_from_start=1
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600309EOF
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100310
311# If RME is implemented:
312# * pci.pci_smmuv3.mmu.SMMU_IDR5 defines 48 bit physical address size aligned
313# with the model configuration for the PE.
314# * pci.pci_smmuv3.mmu.root_register_page_offset defines the (platform
315# dependent) SMMU Root register page offset.
316# * SMMU_IDR0.RME_IMPL=1: RME features supported for non-secure and secure
317# programming interface.
318# * pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3: ROOT_IMPL=1/BGPTM=1.
319# * pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B: JEP106 Arm implementer code.
320 if [ "$has_rme" = "1" ]; then
321 cat <<EOF >>"$model_param_file"
322-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x4046123b
323-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
324-C pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3
325-C pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B
326-C pci.pci_smmuv3.mmu.root_register_page_offset=0x20000
327EOF
328 else
329 cat <<EOF >>"$model_param_file"
330-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x0046123B
Federico Recanatiedf25d92022-03-02 20:54:19 +0100331EOF
332
333 # Align pci.pci_smmuv3.mmu.SMMU_IDR5 to define 48 bit physical
334 # address size as for the PE.
335 if [ "$pa_size" = "48" ]; then
336 cat <<EOF >>"$model_param_file"
337-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
338EOF
339 else
340 cat <<EOF >>"$model_param_file"
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100341-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0472
342EOF
Federico Recanatiedf25d92022-03-02 20:54:19 +0100343 fi
344 fi
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600345fi
346
Zelalemeb9c1bb2020-08-04 12:40:46 -0500347# Parameters to select architecture version
348if [ "$arch_version" = "8.3" ]; then
349 cat <<EOF >>"$model_param_file"
350-C cluster0.has_arm_v8-3=1
351EOF
352fi
353
354if [ "$arch_version" = "8.4" ]; then
355 cat <<EOF >>"$model_param_file"
356-C cluster0.has_arm_v8-4=1
357EOF
358fi
359
360if [ "$arch_version" = "8.5" ]; then
361 cat <<EOF >>"$model_param_file"
362-C cluster0.has_arm_v8-5=1
363EOF
364fi
365
366if [ "$arch_version" = "8.6" ]; then
367 cat <<EOF >>"$model_param_file"
368-C cluster0.has_arm_v8-6=1
369EOF
370fi
371
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000372if [ "$arch_version" = "8.7" ]; then
373 cat <<EOF >>"$model_param_file"
374-C cluster0.has_arm_v8-7=1
375EOF
376fi
377
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400378if [ "$arch_version" = "8.8" ]; then
379 cat <<EOF >>"$model_param_file"
380-C cluster0.has_arm_v8-8=1
381EOF
382fi
383
Arvind Ram Prakashc6420cd2024-07-10 13:31:21 -0500384if [ "$arch_version" = "8.9" ]; then
385 cat <<EOF >>"$model_param_file"
386-C cluster0.has_arm_v8-9=1
387-C cluster1.has_arm_v8-9=1
388EOF
389fi
390
Boyan Karatotev1cc60a62022-11-01 17:00:15 +0000391if [ "$arch_version" = "9.2" ]; then
392 cat <<EOF >>"$model_param_file"
393-C cluster0.has_arm_v9-2=1
394-C cluster1.has_arm_v9-2=1
395EOF
396fi
397
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200398if [ "$arch_version" = "9.3" ]; then
399 cat <<EOF >>"$model_param_file"
400-C cluster0.has_arm_v9-3=1
401-C cluster1.has_arm_v9-3=1
402EOF
403fi
404
Govindraj Raja93be6f22024-10-16 18:38:27 -0500405if [ "$arch_version" = "9.4" ]; then
406 cat <<EOF >>"$model_param_file"
407-C cluster0.has_arm_v9-4=1
408-C cluster1.has_arm_v9-4=1
409EOF
410fi
411
Zelalemeb9c1bb2020-08-04 12:40:46 -0500412# Parameters for fault injection
413if [ "$fault_inject" = "1" ]; then
414 cat <<EOF >>"$model_param_file"
415-C cluster0.number_of_error_records=2
416-C cluster0.has_ras=2
417-C cluster0.error_record_feature_register='{"INJ":0x1,"ED":0x1,"UI":0x0,"FI":0x0,"UE":0x1,"CFI":0x0,"CEC":0x0,"RP":0x0,"DUI":0x0,"CEO":0x0}'
418-C cluster0.pseudo_fault_generation_feature_register='{"OF":false,"CI":false,"ER":false,"PN":false,"AV":false,"MV":false,"SYN":false,"UC":true,"UEU":true,"UER":false,"UEO":false,"DE":false,"CE":0,"R":false}'
419EOF
420fi
421
Arvind Ram Prakashc0421882024-01-05 16:35:42 -0600422if [ "$has_mpam" = "1" ]; then
423 cat <<EOF >>"$model_param_file"
424-C cluster0.has_mpam=2
425-C cluster1.has_mpam=2
426EOF
427fi
428
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200429# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500430if [ "$has_rme" = "1" ]; then
431 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200432-C cluster0.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500433-C cluster0.gicv3.cpuintf-mmap-access-level=2
434-C cluster0.gicv4.mask-virtual-interrupt=1
435-C cluster0.gicv3.without-DS-support=1
436-C cluster0.max_32bit_el=-1
437-C cluster0.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200438-C cluster0.output_attributes=ExtendedID[62:55]=MPAM_PMG,ExtendedID[54:39]=MPAM_PARTID,ExtendedID[38:37]=MPAM_SP
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500439EOF
440fi
441
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100442# FEAT_BRBE is enabled
443if [ "$has_brbe" = "1" ]; then
444 cat <<EOF >>"$model_param_file"
445-C cluster0.has_brbe=1
446EOF
447fi
448
449# FEAT_TRBE is enabled
450if [ "$has_trbe" = "1" ]; then
451 cat <<EOF >>"$model_param_file"
452-C cluster0.has_trbe=1
453EOF
454fi
455
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400456# FEAT_PACQARMA3 is enabled
457if [ "$has_pacqarma3" = "1" ]; then
458 cat <<EOF >>"$model_param_file"
459-C cluster0.has_qarma3_pac=1
460EOF
461fi
462
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400463# FEAT_RNG is enabled
464if [ "$has_rng" = "1" ]; then
465 cat <<EOF >>"$model_param_file"
466-C cluster0.has_rndr=1
467EOF
468fi
469
470# FEAT_RNG_TRAP is enabled
471if [ "$has_rng_trap" = "1" ]; then
472 cat <<EOF >>"$model_param_file"
473-C cluster0.has_rndr_trap=1
474EOF
475fi
476
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200477if [ "$has_fgt2" = "1" ]; then
478 cat <<EOF >>"$model_param_file"
479-C cluster0.has_fgt2=2
480-C cluster1.has_fgt2=2
481EOF
482fi
483
Manish Pandeye11b6592024-03-11 13:10:46 +0000484if [ "$has_ecv" = "1" ]; then
485 cat <<EOF >>"$model_param_file"
486-C cluster0.ecv_support_level=2
487-C cluster1.ecv_support_level=2
488EOF
489fi
490
Jayanth Dodderi Chidanandddd0a4b2024-08-20 17:46:03 +0100491if [ "$has_s1pie" = "1" ]; then
492 cat <<EOF >>"$model_param_file"
493-C cluster0.has_permission_indirection_s1=2
494-C cluster1.has_permission_indirection_s1=2
495EOF
496fi
497
498if [ "$has_s2pie" = "1" ]; then
499 cat <<EOF >>"$model_param_file"
500-C cluster0.has_permission_indirection_s2=2
501-C cluster1.has_permission_indirection_s2=2
502EOF
503fi
504
505if [ "$has_s1poe" = "1" ]; then
506 cat <<EOF >>"$model_param_file"
507-C cluster0.has_permission_overlay_s1=2
508-C cluster1.has_permission_overlay_s1=2
509EOF
510fi
511
512if [ "$has_s2poe" = "1" ]; then
513 cat <<EOF >>"$model_param_file"
514-C cluster0.has_permission_overlay_s2=2
515-C cluster1.has_permission_overlay_s2=2
516EOF
517fi
518
519if [ "$has_tcr2" = "1" ]; then
520 cat <<EOF >>"$model_param_file"
521-C cluster0.has_tcr2=2
522-C cluster1.has_tcr2=2
523EOF
524fi
525
526if [ "$has_csv2_2" = "1" ]; then
527 cat <<EOF >>"$model_param_file"
528-C cluster0.restriction_on_speculative_execution=2
529-C cluster1.restriction_on_speculative_execution=2
530EOF
531fi
532
533if [ "$has_gcs" = "1" ]; then
534 cat <<EOF >>"$model_param_file"
535-C cluster0.has_gcs=2
536-C cluster1.has_gcs=2
537EOF
538fi
539
Juan Pablo Condedce97602024-02-28 16:46:13 -0600540# Accelerator support level enabled
541if [ "$accelerator_support_level" != "0" ]; then
542 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000543-C cluster0.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600544EOF
545fi
546
Govindraj Raja93be6f22024-10-16 18:38:27 -0500547# FEAT_THE is enabled
548if [ "$has_translation_hardening" = "1" ]; then
549 cat <<EOF >>"$model_param_file"
Igor Podgainõic6f4ae22024-12-11 13:35:24 +0100550-C cluster0.has_translation_hardening=2
551-C cluster1.has_translation_hardening=2
Govindraj Raja93be6f22024-10-16 18:38:27 -0500552EOF
553fi
554
555# FEAT_D128 is enabled
556if [ "$has_d128" = "1" ]; then
557 cat <<EOF >>"$model_param_file"
Igor Podgainõic6f4ae22024-12-11 13:35:24 +0100558-C cluster0.has_128_bit_tt_descriptors=2
559-C cluster1.has_128_bit_tt_descriptors=2
Govindraj Raja93be6f22024-10-16 18:38:27 -0500560EOF
561fi
562
Arvind Ram Prakashe4602402024-11-19 10:19:02 -0600563# FEAT_FPMR support
564if [ "$has_fpmr" = "1" ]; then
565 cat <<EOF >>"$model_param_file"
566-C cluster0.has_fpmr="1"
567-C cluster1.has_fpmr="1"
568EOF
569fi
570
Arvind Ram Prakash7e44a2a2025-03-12 15:25:29 -0500571if [ "$has_pmuv3p7" = "1" ]; then
Boyan Karatotev7b4ff312025-02-27 11:38:49 +0000572 cat <<EOF >>"$model_param_file"
573-C cluster0.has_v8_7_pmu_extension=2
574-C cluster1.has_v8_7_pmu_extension=2
575EOF
576fi
577
Arvind Ram Prakash7e44a2a2025-03-12 15:25:29 -0500578if [ "$has_mops" = "1" ]; then
Boyan Karatotev7b4ff312025-02-27 11:38:49 +0000579 cat <<EOF >>"$model_param_file"
580-C cluster0.has_mops_option=1
581-C cluster1.has_mops_option=1
582EOF
583fi
584
Boyan Karatotev5a53a2d2025-05-16 12:30:32 +0100585if [ "$has_twed" = "1" ]; then
586 cat <<EOF >>"$model_param_file"
587-C cluster0.has_delayed_wfe_trap=2
588-C cluster1.has_delayed_wfe_trap=2
589EOF
590fi
591
Zelalemeb9c1bb2020-08-04 12:40:46 -0500592#------------ Cluster1 configuration (if exists) --------------
593if [ "$is_dual_cluster" = "1" ]; then
594 cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100595${pa_size+-C cluster1.PA_SIZE=$pa_size}
596
Zelalemeb9c1bb2020-08-04 12:40:46 -0500597${cluster_1_reg_reset+-C cluster1.register_reset_data=$cluster_1_reg_reset}
598
599${cluster_1_has_el2+-C cluster1.has_el2=$cluster_1_has_el2}
600
601${amu_present+-C cluster1.has_amu=$amu_present}
Boyan Karatotevb60abde2025-03-11 15:50:37 +0000602${amu_version+-C cluster1.amu_version=${amu_version}}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500603
604${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
605${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
606${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
607${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
608
609${reset_to_spmin+-C cluster1.cpu0.RVBAR=${bl32_addr:?}}
610${reset_to_spmin+-C cluster1.cpu1.RVBAR=${bl32_addr:?}}
611${reset_to_spmin+-C cluster1.cpu2.RVBAR=${bl32_addr:?}}
612${reset_to_spmin+-C cluster1.cpu3.RVBAR=${bl32_addr:?}}
613
614${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
615
616${aarch64_only+-C cluster1.max_32bit_el=-1}
617
618${aarch32+-C cluster1.cpu0.CONFIG64=0}
619${aarch32+-C cluster1.cpu1.CONFIG64=0}
620${aarch32+-C cluster1.cpu2.CONFIG64=0}
621${aarch32+-C cluster1.cpu3.CONFIG64=0}
622
623${bl2_at_el3+-C cluster1.cpu0.RVBAR=${bl2_addr:?}}
624${bl2_at_el3+-C cluster1.cpu1.RVBAR=${bl2_addr:?}}
625${bl2_at_el3+-C cluster1.cpu2.RVBAR=${bl2_addr:?}}
626${bl2_at_el3+-C cluster1.cpu3.RVBAR=${bl2_addr:?}}
627
628${memory_tagging_support_level+-C cluster1.memory_tagging_support_level=$memory_tagging_support_level}
629
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000630${has_branch_target_exception+-C cluster1.has_branch_target_exception=$has_branch_target_exception}
631
Olivier Deprez18101ca2021-04-23 19:42:04 +0200632${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution=$restriction_on_speculative_execution}
633
Zelalem Aweke52aad162021-10-25 17:28:03 -0500634${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
635
Zelalemeb9c1bb2020-08-04 12:40:46 -0500636${gicv3_ext_interrupt_range+-C cluster1.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000637
638${mpidr_layout+-C cluster1.mpidr_layout=$mpidr_layout}
639
640${supports_multi_threading+-C cluster1.supports_multi_threading=$supports_multi_threading}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100641
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500642${has_v8_9_debug_extension+-C cluster1.has_v8_9_debug_extension=$has_v8_9_debug_extension}
643
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100644${etm_present+-C cluster1.cpu0.etm-present=$etm_present}
645${etm_present+-C cluster1.cpu1.etm-present=$etm_present}
646${etm_present+-C cluster1.cpu2.etm-present=$etm_present}
647${etm_present+-C cluster1.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100648${supports_system_trace_filter_regs+-C cluster1.has_self_hosted_trace_extension=$supports_system_trace_filter_regs}
649${supports_trace_buffer_control_regs+-C cluster1.has_trbe=$supports_trace_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100650${supports_crc32+-C cluster1.cpu0.enable_crc32=$supports_crc32}
651${supports_crc32+-C cluster1.cpu1.enable_crc32=$supports_crc32}
652${supports_crc32+-C cluster1.cpu2.enable_crc32=$supports_crc32}
653${supports_crc32+-C cluster1.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100654
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100655${cache_state_modelled+-C cluster1.stage12_tlb_size=1024}
656${cache_state_modelled+-C cluster1.check_memory_attributes=0}
657
Zelalemeb9c1bb2020-08-04 12:40:46 -0500658EOF
659
660# Parameters to select architecture version
661if [ "$arch_version" = "8.3" ]; then
662 cat <<EOF >>"$model_param_file"
663-C cluster1.has_arm_v8-3=1
664EOF
665fi
666
667if [ "$arch_version" = "8.4" ]; then
668 cat <<EOF >>"$model_param_file"
669-C cluster1.has_arm_v8-4=1
670EOF
671fi
672
673if [ "$arch_version" = "8.5" ]; then
674 cat <<EOF >>"$model_param_file"
675-C cluster1.has_arm_v8-5=1
676EOF
677fi
678
679if [ "$arch_version" = "8.6" ]; then
680 cat <<EOF >>"$model_param_file"
681-C cluster1.has_arm_v8-6=1
682EOF
683fi
684
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000685if [ "$arch_version" = "8.7" ]; then
686 cat <<EOF >>"$model_param_file"
687-C cluster1.has_arm_v8-7=1
688EOF
689fi
690
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400691if [ "$arch_version" = "8.8" ]; then
692 cat <<EOF >>"$model_param_file"
693-C cluster1.has_arm_v8-8=1
694EOF
695fi
696
Zelalemeb9c1bb2020-08-04 12:40:46 -0500697# Parameters for fault injection
698if [ "$fault_inject" = "1" ]; then
699 cat <<EOF >>"$model_param_file"
700-C cluster1.number_of_error_records=2
701-C cluster1.has_ras=2
702-C cluster1.error_record_feature_register='{"INJ":0x1,"ED":0x1,"UI":0x0,"FI":0x0,"UE":0x1,"CFI":0x0,"CEC":0x0,"RP":0x0,"DUI":0x0,"CEO":0x0}'
703-C cluster1.pseudo_fault_generation_feature_register='{"OF":false,"CI":false,"ER":false,"PN":false,"AV":false,"MV":false,"SYN":false,"UC":true,"UEU":true,"UER":false,"UEO":false,"DE":false,"CE":0,"R":false}'
704EOF
705fi
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500706
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100707# FEAT_BRBE is enabled
708if [ "$has_brbe" = "1" ]; then
709 cat <<EOF >>"$model_param_file"
710-C cluster1.has_brbe=1
711EOF
712fi
713
714# FEAT_TRBE is enabled
715if [ "$has_trbe" = "1" ]; then
716 cat <<EOF >>"$model_param_file"
717-C cluster1.has_trbe=1
718EOF
719fi
720
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200721# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500722if [ "$has_rme" = "1" ]; then
723 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200724-C cluster1.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500725-C cluster1.gicv3.cpuintf-mmap-access-level=2
726-C cluster1.gicv4.mask-virtual-interrupt=1
727-C cluster1.gicv3.without-DS-support=1
728-C cluster1.max_32bit_el=-1
729-C cluster1.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200730-C cluster1.output_attributes=ExtendedID[62:55]=MPAM_PMG,ExtendedID[54:39]=MPAM_PARTID,ExtendedID[38:37]=MPAM_SP
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500731EOF
732fi
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400733
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400734# FEAT_PACQARMA3 is enabled
735if [ "$has_pacqarma3" = "1" ]; then
736 cat <<EOF >>"$model_param_file"
737-C cluster1.has_qarma3_pac=1
738EOF
739fi
740
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400741# FEAT_RNG is enabled
742if [ "$has_rng" = "1" ]; then
743 cat <<EOF >>"$model_param_file"
744-C cluster1.has_rndr=1
745EOF
746fi
747
748# FEAT_RNG_TRAP is enabled
749if [ "$has_rng_trap" = "1" ]; then
750 cat <<EOF >>"$model_param_file"
751-C cluster1.has_rndr_trap=1
752EOF
753fi
754
Juan Pablo Condedce97602024-02-28 16:46:13 -0600755# Accelerator support level enabled
756if [ "$accelerator_support_level" != "0" ]; then
757 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000758-C cluster1.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600759EOF
760fi
761
Zelalemeb9c1bb2020-08-04 12:40:46 -0500762fi
Federico Recanatiedf25d92022-03-02 20:54:19 +0100763
764# 48bit PA size: in order to access memory in high address ranges the
765# model must declare and the interconnect has to be configured to
766# support such address width.
767if [ "$pa_size" = "48" ]; then
768cat <<EOF >>"$model_param_file"
769-C bp.dram_size=4000000
770-C cci550.addr_width=48
771EOF
772fi