blob: 9eb3ec3bb0d7ae93174b07a0f5c74604e40989b1 [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
Arvind Ram Prakash92d1fb32025-08-13 18:07:32 -050075# Enable FEAT_MPAM_PE_BW_CTRL
76reset_var mpam_has_bw_ctrl
77
Madhukar Pappireddy024efd52020-12-31 16:45:52 -060078# Enable SMMUv3 functionality
79reset_var has_smmuv3_params
80
Zelalem Aweke773e19b2021-08-20 17:41:00 -050081# Enable FEAT_RME
82reset_var has_rme
83
Juan Pablo Conded0b527c2022-07-25 16:48:17 -040084# Enable FEAT_RNG
85reset_var has_rng
86
87# Enable FEAT_RNG_TRAP
88reset_var has_rng_trap
89
Manish Pandeye11b6592024-03-11 13:10:46 +000090# Enable FEAT_ECV
91reset_var has_ecv
92
Jayanth Dodderi Chidanandddd0a4b2024-08-20 17:46:03 +010093# Enable FEAT_S1PIE
94reset_var has_s1pie
95
96# Enable FEAT_S2PIE
97reset_var has_s2pie
98
99# Enable FEAT_S1POE
100reset_var has_s1poe
101
102# Enable FEAT_S2POE
103reset_var has_s2poe
104
105# Enable FEAT_TCR2
106reset_var has_tcr2
107
108# Enable FEAT_CSV2_2
109reset_var has_csv2_2
110
111# Enable FEAT_GCS
112reset_var has_gcs
113
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200114# Enable FEAT_FGT2
115reset_var has_fgt2
116
Arvind Ram Prakashc5a5d3b2025-06-25 17:20:39 -0500117# Enable FEAT_FGWTE3
118reset_var has_fgwte3
119
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000120# Layout of MPIDR. 0=AFF0 is CPUID, 1=AFF1 is CPUID
121reset_var mpidr_layout
122
123# Sets the MPIDR.MT bit. Setting this to true hints the cluster
124# is multi-threading compatible
125reset_var supports_multi_threading
126
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100127# ETM plugin to access ETM trace system registers
128reset_var etm_plugin
129
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100130# Trace filter register support
131reset_var supports_trace_filter_regs
132
133# Trace buffer control register support
134reset_var supports_trace_buffer_control_regs
135
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100136# CRC32 support
137reset_var supports_crc32
138
Juan Pablo Condedce97602024-02-28 16:46:13 -0600139# Accelerator instruction support level (none, FEAT_LS64,
140# FEAT_LS64_V, FEAT_LS64_ACCDATA)
141reset_var accelerator_support_level
142
Manish V Badarkhee55380d2025-04-04 13:05:11 +0100143# ROTPK in trusted register space
144reset_var has_rotpk_in_regs
145
Zelalemeb9c1bb2020-08-04 12:40:46 -0500146source "$ci_root/model/fvp_common.sh"
147
148#------------ Common configuration --------------
149
150cat <<EOF >>"$model_param_file"
151${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
152${gicv3_spi_count+-C gic_distributor.SPI-count=$gicv3_spi_count}
153${gicd_are_fixed_one+-C gic_distributor.ARE-fixed-to-one=$gicd_are_fixed_one}
154${gicd_ext_ppi_count+-C gic_distributor.extended-ppi-count=$gicd_ext_ppi_count}
155${gicd_ext_spi_count+-C gic_distributor.extended-spi-count=$gicd_ext_spi_count}
156${gicd_its_count+-C gic_distributor.ITS-count=$gicd_its_count}
157${gicd_virtual_lpi+-C gic_distributor.virtual-lpi-support=$gicd_virtual_lpi}
158${has_gicv4_1+-C has-gicv4.1=$has_gicv4_1}
159
Govindraj Raja4d54f7a2025-02-20 12:03:26 -0600160${has_ete+-C cluster0.has_ete=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500161${has_sve+-C cluster0.has_sve=1}
162${has_sve+-C cluster0.sve.veclen=$((128 / 8))}
163${has_sme+-C cluster0.sve.has_sme=1}
164${has_sme2+-C cluster0.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100165${has_sme_fa64+-C cluster0.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100166${sme_only+-C cluster0.sve.sme_only=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500167
Govindraj Raja4d54f7a2025-02-20 12:03:26 -0600168${has_ete+-C cluster1.has_ete=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500169${has_sve+-C cluster1.has_sve=1}
170${has_sve+-C cluster1.sve.veclen=$((128 / 8))}
171${has_sme+-C cluster1.sve.has_sme=1}
172${has_sme2+-C cluster1.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100173${has_sme_fa64+-C cluster1.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100174${sme_only+-C cluster1.sve.sme_only=1}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500175
176${bmcov_plugin+--plugin=$bmcov_plugin_path}
177
178${nvcounter_version+-C bp.trusted_nv_counter.version=$nvcounter_version}
179${nvcounter_diag+-C bp.trusted_nv_counter.diagnostics=$nvcounter_diag}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100180
181${etm_plugin+--plugin=$etm_plugin_path}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500182EOF
183
Manish V Badarkhee55380d2025-04-04 13:05:11 +0100184# Store the fixed ROTPK hash in registers
185# Note: This is the SHA256 hash of the RSA 2K development public key used in TF-A
186if [ "$has_rotpk_in_regs" = "1" ]; then
187 cat <<EOF >>"$model_param_file"
188-C bp.trusted_key_storage.public_key="0982f3b0 3ad89712 47727a37 7332ec1b e23292e9 5ef65949 464a4a8b da9a22d8"
189EOF
190fi
191
Zelalemeb9c1bb2020-08-04 12:40:46 -0500192# TFTF Reboot/Shutdown tests
193if [ "$retain_flash" = "1" ]; then
194 cat <<EOF >>"$model_param_file"
195-C bp.flashloader1.fname=$flashloader1_fwrite
196-C bp.flashloader1.fnameWrite=$flashloader1_fwrite
197-C bp.flashloader0.fnameWrite=$flashloader0_fwrite
198-C bp.pl011_uart0.untimed_fifos=1
199-C bp.ve_sysregs.mmbSiteDefault=0
200EOF
201fi
202
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200203# Enable RME at the system level
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500204if [ "$has_rme" = "1" ]; then
205 cat <<EOF >>"$model_param_file"
206-C bp.refcounter.non_arch_start_at_default=1
Manish V Badarkhe2176c4c2022-12-20 19:21:12 +0000207-C bp.has_rme=1
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500208EOF
209fi
210
Maksims Svecovsc2e24752022-03-24 13:52:31 +0000211# MTE is enabled
212if [[ -n $memory_tagging_support_level ]]; then
213 cat <<EOF >>"$model_param_file"
214-C bp.dram_metadata.is_enabled=1
215EOF
216fi
217
Juan Pablo Condedce97602024-02-28 16:46:13 -0600218# If accelerator support level enabled, disable bitwise negation
219# for values stored/read using FEAT_LS64* instructions.
220if [ "$accelerator_support_level" != "0" ]; then
221 cat <<EOF >>"$model_param_file"
222-C bp.ls64_testing_fifo.op_type=0
223EOF
224fi
225
Zelalemeb9c1bb2020-08-04 12:40:46 -0500226#------------ Cluster0 configuration --------------
227
228cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100229${pa_size+-C cluster0.PA_SIZE=$pa_size}
230
Zelalemeb9c1bb2020-08-04 12:40:46 -0500231${cluster_0_reg_reset+-C cluster0.register_reset_data=$cluster_0_reg_reset}
232
233${cluster_0_has_el2+-C cluster0.has_el2=$cluster_0_has_el2}
234
235${amu_present+-C cluster0.has_amu=$amu_present}
Boyan Karatotevb60abde2025-03-11 15:50:37 +0000236${amu_version+-C cluster0.amu_version=${amu_version}}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500237
238${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
239${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
240${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
241${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
242
243${reset_to_spmin+-C cluster0.cpu0.RVBAR=${bl32_addr:?}}
244${reset_to_spmin+-C cluster0.cpu1.RVBAR=${bl32_addr:?}}
245${reset_to_spmin+-C cluster0.cpu2.RVBAR=${bl32_addr:?}}
246${reset_to_spmin+-C cluster0.cpu3.RVBAR=${bl32_addr:?}}
247
248${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
249
250${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
251
252${aarch64_only+-C cluster0.max_32bit_el=-1}
253
254${aarch32+-C cluster0.cpu0.CONFIG64=0}
255${aarch32+-C cluster0.cpu1.CONFIG64=0}
256${aarch32+-C cluster0.cpu2.CONFIG64=0}
257${aarch32+-C cluster0.cpu3.CONFIG64=0}
258
259
260${bl2_at_el3+-C cluster0.cpu0.RVBAR=${bl2_addr:?}}
261${bl2_at_el3+-C cluster0.cpu1.RVBAR=${bl2_addr:?}}
262${bl2_at_el3+-C cluster0.cpu2.RVBAR=${bl2_addr:?}}
263${bl2_at_el3+-C cluster0.cpu3.RVBAR=${bl2_addr:?}}
264
265${memory_tagging_support_level+-C cluster0.memory_tagging_support_level=$memory_tagging_support_level}
266
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000267${has_branch_target_exception+-C cluster0.has_branch_target_exception=$has_branch_target_exception}
268
Olivier Deprez18101ca2021-04-23 19:42:04 +0200269${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution=$restriction_on_speculative_execution}
270
Zelalem Aweke52aad162021-10-25 17:28:03 -0500271${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
272
Zelalemeb9c1bb2020-08-04 12:40:46 -0500273${gicv3_ext_interrupt_range+-C cluster0.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600274
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000275${mpidr_layout+-C cluster0.mpidr_layout=$mpidr_layout}
276
277${supports_multi_threading+-C cluster0.supports_multi_threading=$supports_multi_threading}
278
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500279${has_v8_9_debug_extension+-C cluster0.has_v8_9_debug_extension=$has_v8_9_debug_extension}
280
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100281${etm_present+-C cluster0.cpu0.etm-present=$etm_present}
282${etm_present+-C cluster0.cpu1.etm-present=$etm_present}
283${etm_present+-C cluster0.cpu2.etm-present=$etm_present}
284${etm_present+-C cluster0.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100285${supports_trace_filter_regs+-C cluster0.has_self_hosted_trace_extension=$supports_trace_filter_regs}
286${supports_trace_buffer_control_regs+-C cluster0.has_trbe=$supports_trace_buffer_control_regs}
John Powell3ced4082022-04-26 17:12:50 -0500287${supports_branch_record_buffer_control_regs+-C cluster0.has_brbe=$supports_branch_record_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100288${supports_crc32+-C cluster0.cpu0.enable_crc32=$supports_crc32}
289${supports_crc32+-C cluster0.cpu1.enable_crc32=$supports_crc32}
290${supports_crc32+-C cluster0.cpu2.enable_crc32=$supports_crc32}
291${supports_crc32+-C cluster0.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100292
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100293${cache_state_modelled+-C cluster0.stage12_tlb_size=1024}
294${cache_state_modelled+-C cluster0.check_memory_attributes=0}
295
Zelalemeb9c1bb2020-08-04 12:40:46 -0500296EOF
297
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600298if [ "$has_smmuv3_params" = "1" ]; then
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500299 cat <<EOF >>"$model_param_file"
300-C pci.pci_smmuv3.mmu.SMMU_AIDR=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500301-C pci.pci_smmuv3.mmu.SMMU_IDR1=0x00600002
302-C pci.pci_smmuv3.mmu.SMMU_IDR3=0x1714
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600303-C pci.pci_smmuv3.mmu.SMMU_S_IDR1=0xA0000002
304-C pci.pci_smmuv3.mmu.SMMU_S_IDR2=0
305-C pci.pci_smmuv3.mmu.SMMU_S_IDR3=0
306-C pci.smmulogger.trace_debug=1
307-C pci.smmulogger.trace_snoops=1
308-C pci.tbu0_pre_smmu_logger.trace_snoops=1
309-C pci.tbu0_pre_smmu_logger.trace_debug=1
310-C pci.pci_smmuv3.mmu.all_error_messages_through_trace=1
Olivier Deprez498873e2022-03-09 17:46:36 +0100311-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 -0500312--plugin $generictrace_plugin_path
Madhukar Pappireddy3e680902024-02-07 10:16:20 -0600313-C cci550.force_on_from_start=1
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600314EOF
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100315
316# If RME is implemented:
317# * pci.pci_smmuv3.mmu.SMMU_IDR5 defines 48 bit physical address size aligned
318# with the model configuration for the PE.
319# * pci.pci_smmuv3.mmu.root_register_page_offset defines the (platform
320# dependent) SMMU Root register page offset.
321# * SMMU_IDR0.RME_IMPL=1: RME features supported for non-secure and secure
322# programming interface.
323# * pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3: ROOT_IMPL=1/BGPTM=1.
324# * pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B: JEP106 Arm implementer code.
325 if [ "$has_rme" = "1" ]; then
326 cat <<EOF >>"$model_param_file"
327-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x4046123b
328-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
329-C pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3
330-C pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B
331-C pci.pci_smmuv3.mmu.root_register_page_offset=0x20000
332EOF
333 else
334 cat <<EOF >>"$model_param_file"
335-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x0046123B
Federico Recanatiedf25d92022-03-02 20:54:19 +0100336EOF
337
338 # Align pci.pci_smmuv3.mmu.SMMU_IDR5 to define 48 bit physical
339 # address size as for the PE.
340 if [ "$pa_size" = "48" ]; then
341 cat <<EOF >>"$model_param_file"
342-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
343EOF
344 else
345 cat <<EOF >>"$model_param_file"
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100346-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0472
347EOF
Federico Recanatiedf25d92022-03-02 20:54:19 +0100348 fi
349 fi
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600350fi
351
Zelalemeb9c1bb2020-08-04 12:40:46 -0500352# Parameters to select architecture version
353if [ "$arch_version" = "8.3" ]; then
354 cat <<EOF >>"$model_param_file"
355-C cluster0.has_arm_v8-3=1
356EOF
357fi
358
359if [ "$arch_version" = "8.4" ]; then
360 cat <<EOF >>"$model_param_file"
361-C cluster0.has_arm_v8-4=1
362EOF
363fi
364
365if [ "$arch_version" = "8.5" ]; then
366 cat <<EOF >>"$model_param_file"
367-C cluster0.has_arm_v8-5=1
368EOF
369fi
370
371if [ "$arch_version" = "8.6" ]; then
372 cat <<EOF >>"$model_param_file"
373-C cluster0.has_arm_v8-6=1
374EOF
375fi
376
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000377if [ "$arch_version" = "8.7" ]; then
378 cat <<EOF >>"$model_param_file"
379-C cluster0.has_arm_v8-7=1
380EOF
381fi
382
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400383if [ "$arch_version" = "8.8" ]; then
384 cat <<EOF >>"$model_param_file"
385-C cluster0.has_arm_v8-8=1
386EOF
387fi
388
Arvind Ram Prakashc6420cd2024-07-10 13:31:21 -0500389if [ "$arch_version" = "8.9" ]; then
390 cat <<EOF >>"$model_param_file"
391-C cluster0.has_arm_v8-9=1
392-C cluster1.has_arm_v8-9=1
393EOF
394fi
395
Boyan Karatotev1cc60a62022-11-01 17:00:15 +0000396if [ "$arch_version" = "9.2" ]; then
397 cat <<EOF >>"$model_param_file"
398-C cluster0.has_arm_v9-2=1
399-C cluster1.has_arm_v9-2=1
400EOF
401fi
402
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200403if [ "$arch_version" = "9.3" ]; then
404 cat <<EOF >>"$model_param_file"
405-C cluster0.has_arm_v9-3=1
406-C cluster1.has_arm_v9-3=1
407EOF
408fi
409
Govindraj Raja93be6f22024-10-16 18:38:27 -0500410if [ "$arch_version" = "9.4" ]; then
411 cat <<EOF >>"$model_param_file"
412-C cluster0.has_arm_v9-4=1
413-C cluster1.has_arm_v9-4=1
414EOF
415fi
416
Zelalemeb9c1bb2020-08-04 12:40:46 -0500417# Parameters for fault injection
418if [ "$fault_inject" = "1" ]; then
419 cat <<EOF >>"$model_param_file"
420-C cluster0.number_of_error_records=2
421-C cluster0.has_ras=2
422-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}'
423-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}'
424EOF
425fi
426
Arvind Ram Prakashc0421882024-01-05 16:35:42 -0600427if [ "$has_mpam" = "1" ]; then
428 cat <<EOF >>"$model_param_file"
429-C cluster0.has_mpam=2
430-C cluster1.has_mpam=2
431EOF
432fi
433
Arvind Ram Prakash92d1fb32025-08-13 18:07:32 -0500434if [ "$mpam_has_bw_ctrl" = "1" ]; then
435 cat <<EOF >>"$model_param_file"
436-C cluster0.mpam_frac=1
437-C cluster0.mpam_has_bw_ctrl=1
438-C cluster1.mpam_frac=1
439-C cluster1.mpam_has_bw_ctrl=1
440EOF
441fi
442
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200443# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500444if [ "$has_rme" = "1" ]; then
445 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200446-C cluster0.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500447-C cluster0.gicv3.cpuintf-mmap-access-level=2
448-C cluster0.gicv4.mask-virtual-interrupt=1
449-C cluster0.gicv3.without-DS-support=1
450-C cluster0.max_32bit_el=-1
451-C cluster0.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200452-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 -0500453EOF
454fi
455
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100456# FEAT_BRBE is enabled
457if [ "$has_brbe" = "1" ]; then
458 cat <<EOF >>"$model_param_file"
459-C cluster0.has_brbe=1
460EOF
461fi
462
463# FEAT_TRBE is enabled
464if [ "$has_trbe" = "1" ]; then
465 cat <<EOF >>"$model_param_file"
466-C cluster0.has_trbe=1
467EOF
468fi
469
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400470# FEAT_PACQARMA3 is enabled
471if [ "$has_pacqarma3" = "1" ]; then
472 cat <<EOF >>"$model_param_file"
473-C cluster0.has_qarma3_pac=1
474EOF
475fi
476
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400477# FEAT_RNG is enabled
478if [ "$has_rng" = "1" ]; then
479 cat <<EOF >>"$model_param_file"
480-C cluster0.has_rndr=1
481EOF
482fi
483
484# FEAT_RNG_TRAP is enabled
485if [ "$has_rng_trap" = "1" ]; then
486 cat <<EOF >>"$model_param_file"
487-C cluster0.has_rndr_trap=1
488EOF
489fi
490
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200491if [ "$has_fgt2" = "1" ]; then
492 cat <<EOF >>"$model_param_file"
493-C cluster0.has_fgt2=2
494-C cluster1.has_fgt2=2
495EOF
496fi
497
Arvind Ram Prakashc5a5d3b2025-06-25 17:20:39 -0500498if [ "$has_fgwte3" = "1" ]; then
499 cat <<EOF >>"$model_param_file"
500-C cluster0.has_fgwte3=1
501-C cluster1.has_fgwte3=1
502EOF
503fi
504
Manish Pandeye11b6592024-03-11 13:10:46 +0000505if [ "$has_ecv" = "1" ]; then
506 cat <<EOF >>"$model_param_file"
507-C cluster0.ecv_support_level=2
508-C cluster1.ecv_support_level=2
509EOF
510fi
511
Jayanth Dodderi Chidanandddd0a4b2024-08-20 17:46:03 +0100512if [ "$has_s1pie" = "1" ]; then
513 cat <<EOF >>"$model_param_file"
514-C cluster0.has_permission_indirection_s1=2
515-C cluster1.has_permission_indirection_s1=2
516EOF
517fi
518
519if [ "$has_s2pie" = "1" ]; then
520 cat <<EOF >>"$model_param_file"
521-C cluster0.has_permission_indirection_s2=2
522-C cluster1.has_permission_indirection_s2=2
523EOF
524fi
525
526if [ "$has_s1poe" = "1" ]; then
527 cat <<EOF >>"$model_param_file"
528-C cluster0.has_permission_overlay_s1=2
529-C cluster1.has_permission_overlay_s1=2
530EOF
531fi
532
533if [ "$has_s2poe" = "1" ]; then
534 cat <<EOF >>"$model_param_file"
535-C cluster0.has_permission_overlay_s2=2
536-C cluster1.has_permission_overlay_s2=2
537EOF
538fi
539
540if [ "$has_tcr2" = "1" ]; then
541 cat <<EOF >>"$model_param_file"
542-C cluster0.has_tcr2=2
543-C cluster1.has_tcr2=2
544EOF
545fi
546
547if [ "$has_csv2_2" = "1" ]; then
548 cat <<EOF >>"$model_param_file"
549-C cluster0.restriction_on_speculative_execution=2
550-C cluster1.restriction_on_speculative_execution=2
551EOF
552fi
553
554if [ "$has_gcs" = "1" ]; then
555 cat <<EOF >>"$model_param_file"
556-C cluster0.has_gcs=2
557-C cluster1.has_gcs=2
558EOF
559fi
560
Juan Pablo Condedce97602024-02-28 16:46:13 -0600561# Accelerator support level enabled
562if [ "$accelerator_support_level" != "0" ]; then
563 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000564-C cluster0.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600565EOF
566fi
567
Govindraj Raja93be6f22024-10-16 18:38:27 -0500568# FEAT_THE is enabled
569if [ "$has_translation_hardening" = "1" ]; then
570 cat <<EOF >>"$model_param_file"
Igor Podgainõic6f4ae22024-12-11 13:35:24 +0100571-C cluster0.has_translation_hardening=2
572-C cluster1.has_translation_hardening=2
Govindraj Raja93be6f22024-10-16 18:38:27 -0500573EOF
574fi
575
576# FEAT_D128 is enabled
577if [ "$has_d128" = "1" ]; then
578 cat <<EOF >>"$model_param_file"
Igor Podgainõic6f4ae22024-12-11 13:35:24 +0100579-C cluster0.has_128_bit_tt_descriptors=2
580-C cluster1.has_128_bit_tt_descriptors=2
Govindraj Raja93be6f22024-10-16 18:38:27 -0500581EOF
582fi
583
Arvind Ram Prakashe4602402024-11-19 10:19:02 -0600584# FEAT_FPMR support
585if [ "$has_fpmr" = "1" ]; then
586 cat <<EOF >>"$model_param_file"
587-C cluster0.has_fpmr="1"
588-C cluster1.has_fpmr="1"
589EOF
590fi
591
Arvind Ram Prakash7e44a2a2025-03-12 15:25:29 -0500592if [ "$has_pmuv3p7" = "1" ]; then
Boyan Karatotev7b4ff312025-02-27 11:38:49 +0000593 cat <<EOF >>"$model_param_file"
594-C cluster0.has_v8_7_pmu_extension=2
595-C cluster1.has_v8_7_pmu_extension=2
596EOF
597fi
598
Arvind Ram Prakash7e44a2a2025-03-12 15:25:29 -0500599if [ "$has_mops" = "1" ]; then
Boyan Karatotev7b4ff312025-02-27 11:38:49 +0000600 cat <<EOF >>"$model_param_file"
601-C cluster0.has_mops_option=1
602-C cluster1.has_mops_option=1
603EOF
604fi
605
Boyan Karatotev5a53a2d2025-05-16 12:30:32 +0100606if [ "$has_twed" = "1" ]; then
607 cat <<EOF >>"$model_param_file"
608-C cluster0.has_delayed_wfe_trap=2
609-C cluster1.has_delayed_wfe_trap=2
610EOF
611fi
612
Zelalemeb9c1bb2020-08-04 12:40:46 -0500613#------------ Cluster1 configuration (if exists) --------------
614if [ "$is_dual_cluster" = "1" ]; then
615 cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100616${pa_size+-C cluster1.PA_SIZE=$pa_size}
617
Zelalemeb9c1bb2020-08-04 12:40:46 -0500618${cluster_1_reg_reset+-C cluster1.register_reset_data=$cluster_1_reg_reset}
619
620${cluster_1_has_el2+-C cluster1.has_el2=$cluster_1_has_el2}
621
622${amu_present+-C cluster1.has_amu=$amu_present}
Boyan Karatotevb60abde2025-03-11 15:50:37 +0000623${amu_version+-C cluster1.amu_version=${amu_version}}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500624
625${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
626${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
627${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
628${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
629
630${reset_to_spmin+-C cluster1.cpu0.RVBAR=${bl32_addr:?}}
631${reset_to_spmin+-C cluster1.cpu1.RVBAR=${bl32_addr:?}}
632${reset_to_spmin+-C cluster1.cpu2.RVBAR=${bl32_addr:?}}
633${reset_to_spmin+-C cluster1.cpu3.RVBAR=${bl32_addr:?}}
634
635${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
636
637${aarch64_only+-C cluster1.max_32bit_el=-1}
638
639${aarch32+-C cluster1.cpu0.CONFIG64=0}
640${aarch32+-C cluster1.cpu1.CONFIG64=0}
641${aarch32+-C cluster1.cpu2.CONFIG64=0}
642${aarch32+-C cluster1.cpu3.CONFIG64=0}
643
644${bl2_at_el3+-C cluster1.cpu0.RVBAR=${bl2_addr:?}}
645${bl2_at_el3+-C cluster1.cpu1.RVBAR=${bl2_addr:?}}
646${bl2_at_el3+-C cluster1.cpu2.RVBAR=${bl2_addr:?}}
647${bl2_at_el3+-C cluster1.cpu3.RVBAR=${bl2_addr:?}}
648
649${memory_tagging_support_level+-C cluster1.memory_tagging_support_level=$memory_tagging_support_level}
650
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000651${has_branch_target_exception+-C cluster1.has_branch_target_exception=$has_branch_target_exception}
652
Olivier Deprez18101ca2021-04-23 19:42:04 +0200653${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution=$restriction_on_speculative_execution}
654
Zelalem Aweke52aad162021-10-25 17:28:03 -0500655${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
656
Zelalemeb9c1bb2020-08-04 12:40:46 -0500657${gicv3_ext_interrupt_range+-C cluster1.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000658
659${mpidr_layout+-C cluster1.mpidr_layout=$mpidr_layout}
660
661${supports_multi_threading+-C cluster1.supports_multi_threading=$supports_multi_threading}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100662
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500663${has_v8_9_debug_extension+-C cluster1.has_v8_9_debug_extension=$has_v8_9_debug_extension}
664
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100665${etm_present+-C cluster1.cpu0.etm-present=$etm_present}
666${etm_present+-C cluster1.cpu1.etm-present=$etm_present}
667${etm_present+-C cluster1.cpu2.etm-present=$etm_present}
668${etm_present+-C cluster1.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100669${supports_system_trace_filter_regs+-C cluster1.has_self_hosted_trace_extension=$supports_system_trace_filter_regs}
670${supports_trace_buffer_control_regs+-C cluster1.has_trbe=$supports_trace_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100671${supports_crc32+-C cluster1.cpu0.enable_crc32=$supports_crc32}
672${supports_crc32+-C cluster1.cpu1.enable_crc32=$supports_crc32}
673${supports_crc32+-C cluster1.cpu2.enable_crc32=$supports_crc32}
674${supports_crc32+-C cluster1.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100675
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100676${cache_state_modelled+-C cluster1.stage12_tlb_size=1024}
677${cache_state_modelled+-C cluster1.check_memory_attributes=0}
678
Zelalemeb9c1bb2020-08-04 12:40:46 -0500679EOF
680
681# Parameters to select architecture version
682if [ "$arch_version" = "8.3" ]; then
683 cat <<EOF >>"$model_param_file"
684-C cluster1.has_arm_v8-3=1
685EOF
686fi
687
688if [ "$arch_version" = "8.4" ]; then
689 cat <<EOF >>"$model_param_file"
690-C cluster1.has_arm_v8-4=1
691EOF
692fi
693
694if [ "$arch_version" = "8.5" ]; then
695 cat <<EOF >>"$model_param_file"
696-C cluster1.has_arm_v8-5=1
697EOF
698fi
699
700if [ "$arch_version" = "8.6" ]; then
701 cat <<EOF >>"$model_param_file"
702-C cluster1.has_arm_v8-6=1
703EOF
704fi
705
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000706if [ "$arch_version" = "8.7" ]; then
707 cat <<EOF >>"$model_param_file"
708-C cluster1.has_arm_v8-7=1
709EOF
710fi
711
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400712if [ "$arch_version" = "8.8" ]; then
713 cat <<EOF >>"$model_param_file"
714-C cluster1.has_arm_v8-8=1
715EOF
716fi
717
Zelalemeb9c1bb2020-08-04 12:40:46 -0500718# Parameters for fault injection
719if [ "$fault_inject" = "1" ]; then
720 cat <<EOF >>"$model_param_file"
721-C cluster1.number_of_error_records=2
722-C cluster1.has_ras=2
723-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}'
724-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}'
725EOF
726fi
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500727
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100728# FEAT_BRBE is enabled
729if [ "$has_brbe" = "1" ]; then
730 cat <<EOF >>"$model_param_file"
731-C cluster1.has_brbe=1
732EOF
733fi
734
735# FEAT_TRBE is enabled
736if [ "$has_trbe" = "1" ]; then
737 cat <<EOF >>"$model_param_file"
738-C cluster1.has_trbe=1
739EOF
740fi
741
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200742# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500743if [ "$has_rme" = "1" ]; then
744 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200745-C cluster1.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500746-C cluster1.gicv3.cpuintf-mmap-access-level=2
747-C cluster1.gicv4.mask-virtual-interrupt=1
748-C cluster1.gicv3.without-DS-support=1
749-C cluster1.max_32bit_el=-1
750-C cluster1.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200751-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 -0500752EOF
753fi
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400754
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400755# FEAT_PACQARMA3 is enabled
756if [ "$has_pacqarma3" = "1" ]; then
757 cat <<EOF >>"$model_param_file"
758-C cluster1.has_qarma3_pac=1
759EOF
760fi
761
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400762# FEAT_RNG is enabled
763if [ "$has_rng" = "1" ]; then
764 cat <<EOF >>"$model_param_file"
765-C cluster1.has_rndr=1
766EOF
767fi
768
769# FEAT_RNG_TRAP is enabled
770if [ "$has_rng_trap" = "1" ]; then
771 cat <<EOF >>"$model_param_file"
772-C cluster1.has_rndr_trap=1
773EOF
774fi
775
Juan Pablo Condedce97602024-02-28 16:46:13 -0600776# Accelerator support level enabled
777if [ "$accelerator_support_level" != "0" ]; then
778 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000779-C cluster1.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600780EOF
781fi
782
Zelalemeb9c1bb2020-08-04 12:40:46 -0500783fi
Federico Recanatiedf25d92022-03-02 20:54:19 +0100784
785# 48bit PA size: in order to access memory in high address ranges the
786# model must declare and the interconnect has to be configured to
787# support such address width.
788if [ "$pa_size" = "48" ]; then
789cat <<EOF >>"$model_param_file"
790-C bp.dram_size=4000000
791-C cci550.addr_width=48
792EOF
793fi