blob: 7bbc6bfdfd24ab0eb23b0d98b65c49628ea927f3 [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
Arvind Ram Prakashc5a5d3b2025-06-25 17:20:39 -0500114# Enable FEAT_FGWTE3
115reset_var has_fgwte3
116
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000117# Layout of MPIDR. 0=AFF0 is CPUID, 1=AFF1 is CPUID
118reset_var mpidr_layout
119
120# Sets the MPIDR.MT bit. Setting this to true hints the cluster
121# is multi-threading compatible
122reset_var supports_multi_threading
123
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100124# ETM plugin to access ETM trace system registers
125reset_var etm_plugin
126
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100127# Trace filter register support
128reset_var supports_trace_filter_regs
129
130# Trace buffer control register support
131reset_var supports_trace_buffer_control_regs
132
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100133# CRC32 support
134reset_var supports_crc32
135
Juan Pablo Condedce97602024-02-28 16:46:13 -0600136# Accelerator instruction support level (none, FEAT_LS64,
137# FEAT_LS64_V, FEAT_LS64_ACCDATA)
138reset_var accelerator_support_level
139
Manish V Badarkhee55380d2025-04-04 13:05:11 +0100140# ROTPK in trusted register space
141reset_var has_rotpk_in_regs
142
Zelalemeb9c1bb2020-08-04 12:40:46 -0500143source "$ci_root/model/fvp_common.sh"
144
145#------------ Common configuration --------------
146
147cat <<EOF >>"$model_param_file"
148${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
149${gicv3_spi_count+-C gic_distributor.SPI-count=$gicv3_spi_count}
150${gicd_are_fixed_one+-C gic_distributor.ARE-fixed-to-one=$gicd_are_fixed_one}
151${gicd_ext_ppi_count+-C gic_distributor.extended-ppi-count=$gicd_ext_ppi_count}
152${gicd_ext_spi_count+-C gic_distributor.extended-spi-count=$gicd_ext_spi_count}
153${gicd_its_count+-C gic_distributor.ITS-count=$gicd_its_count}
154${gicd_virtual_lpi+-C gic_distributor.virtual-lpi-support=$gicd_virtual_lpi}
155${has_gicv4_1+-C has-gicv4.1=$has_gicv4_1}
156
Govindraj Raja4d54f7a2025-02-20 12:03:26 -0600157${has_ete+-C cluster0.has_ete=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500158${has_sve+-C cluster0.has_sve=1}
159${has_sve+-C cluster0.sve.veclen=$((128 / 8))}
160${has_sme+-C cluster0.sve.has_sme=1}
161${has_sme2+-C cluster0.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100162${has_sme_fa64+-C cluster0.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100163${sme_only+-C cluster0.sve.sme_only=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500164
Govindraj Raja4d54f7a2025-02-20 12:03:26 -0600165${has_ete+-C cluster1.has_ete=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500166${has_sve+-C cluster1.has_sve=1}
167${has_sve+-C cluster1.sve.veclen=$((128 / 8))}
168${has_sme+-C cluster1.sve.has_sme=1}
169${has_sme2+-C cluster1.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100170${has_sme_fa64+-C cluster1.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100171${sme_only+-C cluster1.sve.sme_only=1}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500172
173${bmcov_plugin+--plugin=$bmcov_plugin_path}
174
175${nvcounter_version+-C bp.trusted_nv_counter.version=$nvcounter_version}
176${nvcounter_diag+-C bp.trusted_nv_counter.diagnostics=$nvcounter_diag}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100177
178${etm_plugin+--plugin=$etm_plugin_path}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500179EOF
180
Manish V Badarkhee55380d2025-04-04 13:05:11 +0100181# Store the fixed ROTPK hash in registers
182# Note: This is the SHA256 hash of the RSA 2K development public key used in TF-A
183if [ "$has_rotpk_in_regs" = "1" ]; then
184 cat <<EOF >>"$model_param_file"
185-C bp.trusted_key_storage.public_key="0982f3b0 3ad89712 47727a37 7332ec1b e23292e9 5ef65949 464a4a8b da9a22d8"
186EOF
187fi
188
Zelalemeb9c1bb2020-08-04 12:40:46 -0500189# TFTF Reboot/Shutdown tests
190if [ "$retain_flash" = "1" ]; then
191 cat <<EOF >>"$model_param_file"
192-C bp.flashloader1.fname=$flashloader1_fwrite
193-C bp.flashloader1.fnameWrite=$flashloader1_fwrite
194-C bp.flashloader0.fnameWrite=$flashloader0_fwrite
195-C bp.pl011_uart0.untimed_fifos=1
196-C bp.ve_sysregs.mmbSiteDefault=0
197EOF
198fi
199
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200200# Enable RME at the system level
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500201if [ "$has_rme" = "1" ]; then
202 cat <<EOF >>"$model_param_file"
203-C bp.refcounter.non_arch_start_at_default=1
204-C bp.refcounter.use_real_time=0
Manish V Badarkhe2176c4c2022-12-20 19:21:12 +0000205-C bp.has_rme=1
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500206EOF
207fi
208
Maksims Svecovsc2e24752022-03-24 13:52:31 +0000209# MTE is enabled
210if [[ -n $memory_tagging_support_level ]]; then
211 cat <<EOF >>"$model_param_file"
212-C bp.dram_metadata.is_enabled=1
213EOF
214fi
215
Juan Pablo Condedce97602024-02-28 16:46:13 -0600216# If accelerator support level enabled, disable bitwise negation
217# for values stored/read using FEAT_LS64* instructions.
218if [ "$accelerator_support_level" != "0" ]; then
219 cat <<EOF >>"$model_param_file"
220-C bp.ls64_testing_fifo.op_type=0
221EOF
222fi
223
Zelalemeb9c1bb2020-08-04 12:40:46 -0500224#------------ Cluster0 configuration --------------
225
226cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100227${pa_size+-C cluster0.PA_SIZE=$pa_size}
228
Zelalemeb9c1bb2020-08-04 12:40:46 -0500229${cluster_0_reg_reset+-C cluster0.register_reset_data=$cluster_0_reg_reset}
230
231${cluster_0_has_el2+-C cluster0.has_el2=$cluster_0_has_el2}
232
233${amu_present+-C cluster0.has_amu=$amu_present}
Boyan Karatotevb60abde2025-03-11 15:50:37 +0000234${amu_version+-C cluster0.amu_version=${amu_version}}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500235
236${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
237${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
238${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
239${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
240
241${reset_to_spmin+-C cluster0.cpu0.RVBAR=${bl32_addr:?}}
242${reset_to_spmin+-C cluster0.cpu1.RVBAR=${bl32_addr:?}}
243${reset_to_spmin+-C cluster0.cpu2.RVBAR=${bl32_addr:?}}
244${reset_to_spmin+-C cluster0.cpu3.RVBAR=${bl32_addr:?}}
245
246${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
247
248${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
249
250${aarch64_only+-C cluster0.max_32bit_el=-1}
251
252${aarch32+-C cluster0.cpu0.CONFIG64=0}
253${aarch32+-C cluster0.cpu1.CONFIG64=0}
254${aarch32+-C cluster0.cpu2.CONFIG64=0}
255${aarch32+-C cluster0.cpu3.CONFIG64=0}
256
257
258${bl2_at_el3+-C cluster0.cpu0.RVBAR=${bl2_addr:?}}
259${bl2_at_el3+-C cluster0.cpu1.RVBAR=${bl2_addr:?}}
260${bl2_at_el3+-C cluster0.cpu2.RVBAR=${bl2_addr:?}}
261${bl2_at_el3+-C cluster0.cpu3.RVBAR=${bl2_addr:?}}
262
263${memory_tagging_support_level+-C cluster0.memory_tagging_support_level=$memory_tagging_support_level}
264
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000265${has_branch_target_exception+-C cluster0.has_branch_target_exception=$has_branch_target_exception}
266
Olivier Deprez18101ca2021-04-23 19:42:04 +0200267${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution=$restriction_on_speculative_execution}
268
Zelalem Aweke52aad162021-10-25 17:28:03 -0500269${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
270
Zelalemeb9c1bb2020-08-04 12:40:46 -0500271${gicv3_ext_interrupt_range+-C cluster0.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600272
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000273${mpidr_layout+-C cluster0.mpidr_layout=$mpidr_layout}
274
275${supports_multi_threading+-C cluster0.supports_multi_threading=$supports_multi_threading}
276
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500277${has_v8_9_debug_extension+-C cluster0.has_v8_9_debug_extension=$has_v8_9_debug_extension}
278
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100279${etm_present+-C cluster0.cpu0.etm-present=$etm_present}
280${etm_present+-C cluster0.cpu1.etm-present=$etm_present}
281${etm_present+-C cluster0.cpu2.etm-present=$etm_present}
282${etm_present+-C cluster0.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100283${supports_trace_filter_regs+-C cluster0.has_self_hosted_trace_extension=$supports_trace_filter_regs}
284${supports_trace_buffer_control_regs+-C cluster0.has_trbe=$supports_trace_buffer_control_regs}
John Powell3ced4082022-04-26 17:12:50 -0500285${supports_branch_record_buffer_control_regs+-C cluster0.has_brbe=$supports_branch_record_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100286${supports_crc32+-C cluster0.cpu0.enable_crc32=$supports_crc32}
287${supports_crc32+-C cluster0.cpu1.enable_crc32=$supports_crc32}
288${supports_crc32+-C cluster0.cpu2.enable_crc32=$supports_crc32}
289${supports_crc32+-C cluster0.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100290
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100291${cache_state_modelled+-C cluster0.stage12_tlb_size=1024}
292${cache_state_modelled+-C cluster0.check_memory_attributes=0}
293
Zelalemeb9c1bb2020-08-04 12:40:46 -0500294EOF
295
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600296if [ "$has_smmuv3_params" = "1" ]; then
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500297 cat <<EOF >>"$model_param_file"
298-C pci.pci_smmuv3.mmu.SMMU_AIDR=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500299-C pci.pci_smmuv3.mmu.SMMU_IDR1=0x00600002
300-C pci.pci_smmuv3.mmu.SMMU_IDR3=0x1714
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600301-C pci.pci_smmuv3.mmu.SMMU_S_IDR1=0xA0000002
302-C pci.pci_smmuv3.mmu.SMMU_S_IDR2=0
303-C pci.pci_smmuv3.mmu.SMMU_S_IDR3=0
304-C pci.smmulogger.trace_debug=1
305-C pci.smmulogger.trace_snoops=1
306-C pci.tbu0_pre_smmu_logger.trace_snoops=1
307-C pci.tbu0_pre_smmu_logger.trace_debug=1
308-C pci.pci_smmuv3.mmu.all_error_messages_through_trace=1
Olivier Deprez498873e2022-03-09 17:46:36 +0100309-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 -0500310--plugin $generictrace_plugin_path
Madhukar Pappireddy3e680902024-02-07 10:16:20 -0600311-C cci550.force_on_from_start=1
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600312EOF
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100313
314# If RME is implemented:
315# * pci.pci_smmuv3.mmu.SMMU_IDR5 defines 48 bit physical address size aligned
316# with the model configuration for the PE.
317# * pci.pci_smmuv3.mmu.root_register_page_offset defines the (platform
318# dependent) SMMU Root register page offset.
319# * SMMU_IDR0.RME_IMPL=1: RME features supported for non-secure and secure
320# programming interface.
321# * pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3: ROOT_IMPL=1/BGPTM=1.
322# * pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B: JEP106 Arm implementer code.
323 if [ "$has_rme" = "1" ]; then
324 cat <<EOF >>"$model_param_file"
325-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x4046123b
326-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
327-C pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3
328-C pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B
329-C pci.pci_smmuv3.mmu.root_register_page_offset=0x20000
330EOF
331 else
332 cat <<EOF >>"$model_param_file"
333-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x0046123B
Federico Recanatiedf25d92022-03-02 20:54:19 +0100334EOF
335
336 # Align pci.pci_smmuv3.mmu.SMMU_IDR5 to define 48 bit physical
337 # address size as for the PE.
338 if [ "$pa_size" = "48" ]; then
339 cat <<EOF >>"$model_param_file"
340-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
341EOF
342 else
343 cat <<EOF >>"$model_param_file"
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100344-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0472
345EOF
Federico Recanatiedf25d92022-03-02 20:54:19 +0100346 fi
347 fi
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600348fi
349
Zelalemeb9c1bb2020-08-04 12:40:46 -0500350# Parameters to select architecture version
351if [ "$arch_version" = "8.3" ]; then
352 cat <<EOF >>"$model_param_file"
353-C cluster0.has_arm_v8-3=1
354EOF
355fi
356
357if [ "$arch_version" = "8.4" ]; then
358 cat <<EOF >>"$model_param_file"
359-C cluster0.has_arm_v8-4=1
360EOF
361fi
362
363if [ "$arch_version" = "8.5" ]; then
364 cat <<EOF >>"$model_param_file"
365-C cluster0.has_arm_v8-5=1
366EOF
367fi
368
369if [ "$arch_version" = "8.6" ]; then
370 cat <<EOF >>"$model_param_file"
371-C cluster0.has_arm_v8-6=1
372EOF
373fi
374
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000375if [ "$arch_version" = "8.7" ]; then
376 cat <<EOF >>"$model_param_file"
377-C cluster0.has_arm_v8-7=1
378EOF
379fi
380
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400381if [ "$arch_version" = "8.8" ]; then
382 cat <<EOF >>"$model_param_file"
383-C cluster0.has_arm_v8-8=1
384EOF
385fi
386
Arvind Ram Prakashc6420cd2024-07-10 13:31:21 -0500387if [ "$arch_version" = "8.9" ]; then
388 cat <<EOF >>"$model_param_file"
389-C cluster0.has_arm_v8-9=1
390-C cluster1.has_arm_v8-9=1
391EOF
392fi
393
Boyan Karatotev1cc60a62022-11-01 17:00:15 +0000394if [ "$arch_version" = "9.2" ]; then
395 cat <<EOF >>"$model_param_file"
396-C cluster0.has_arm_v9-2=1
397-C cluster1.has_arm_v9-2=1
398EOF
399fi
400
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200401if [ "$arch_version" = "9.3" ]; then
402 cat <<EOF >>"$model_param_file"
403-C cluster0.has_arm_v9-3=1
404-C cluster1.has_arm_v9-3=1
405EOF
406fi
407
Govindraj Raja93be6f22024-10-16 18:38:27 -0500408if [ "$arch_version" = "9.4" ]; then
409 cat <<EOF >>"$model_param_file"
410-C cluster0.has_arm_v9-4=1
411-C cluster1.has_arm_v9-4=1
412EOF
413fi
414
Zelalemeb9c1bb2020-08-04 12:40:46 -0500415# Parameters for fault injection
416if [ "$fault_inject" = "1" ]; then
417 cat <<EOF >>"$model_param_file"
418-C cluster0.number_of_error_records=2
419-C cluster0.has_ras=2
420-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}'
421-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}'
422EOF
423fi
424
Arvind Ram Prakashc0421882024-01-05 16:35:42 -0600425if [ "$has_mpam" = "1" ]; then
426 cat <<EOF >>"$model_param_file"
427-C cluster0.has_mpam=2
428-C cluster1.has_mpam=2
429EOF
430fi
431
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200432# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500433if [ "$has_rme" = "1" ]; then
434 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200435-C cluster0.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500436-C cluster0.gicv3.cpuintf-mmap-access-level=2
437-C cluster0.gicv4.mask-virtual-interrupt=1
438-C cluster0.gicv3.without-DS-support=1
439-C cluster0.max_32bit_el=-1
440-C cluster0.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200441-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 -0500442EOF
443fi
444
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100445# FEAT_BRBE is enabled
446if [ "$has_brbe" = "1" ]; then
447 cat <<EOF >>"$model_param_file"
448-C cluster0.has_brbe=1
449EOF
450fi
451
452# FEAT_TRBE is enabled
453if [ "$has_trbe" = "1" ]; then
454 cat <<EOF >>"$model_param_file"
455-C cluster0.has_trbe=1
456EOF
457fi
458
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400459# FEAT_PACQARMA3 is enabled
460if [ "$has_pacqarma3" = "1" ]; then
461 cat <<EOF >>"$model_param_file"
462-C cluster0.has_qarma3_pac=1
463EOF
464fi
465
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400466# FEAT_RNG is enabled
467if [ "$has_rng" = "1" ]; then
468 cat <<EOF >>"$model_param_file"
469-C cluster0.has_rndr=1
470EOF
471fi
472
473# FEAT_RNG_TRAP is enabled
474if [ "$has_rng_trap" = "1" ]; then
475 cat <<EOF >>"$model_param_file"
476-C cluster0.has_rndr_trap=1
477EOF
478fi
479
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200480if [ "$has_fgt2" = "1" ]; then
481 cat <<EOF >>"$model_param_file"
482-C cluster0.has_fgt2=2
483-C cluster1.has_fgt2=2
484EOF
485fi
486
Arvind Ram Prakashc5a5d3b2025-06-25 17:20:39 -0500487if [ "$has_fgwte3" = "1" ]; then
488 cat <<EOF >>"$model_param_file"
489-C cluster0.has_fgwte3=1
490-C cluster1.has_fgwte3=1
491EOF
492fi
493
Manish Pandeye11b6592024-03-11 13:10:46 +0000494if [ "$has_ecv" = "1" ]; then
495 cat <<EOF >>"$model_param_file"
496-C cluster0.ecv_support_level=2
497-C cluster1.ecv_support_level=2
498EOF
499fi
500
Jayanth Dodderi Chidanandddd0a4b2024-08-20 17:46:03 +0100501if [ "$has_s1pie" = "1" ]; then
502 cat <<EOF >>"$model_param_file"
503-C cluster0.has_permission_indirection_s1=2
504-C cluster1.has_permission_indirection_s1=2
505EOF
506fi
507
508if [ "$has_s2pie" = "1" ]; then
509 cat <<EOF >>"$model_param_file"
510-C cluster0.has_permission_indirection_s2=2
511-C cluster1.has_permission_indirection_s2=2
512EOF
513fi
514
515if [ "$has_s1poe" = "1" ]; then
516 cat <<EOF >>"$model_param_file"
517-C cluster0.has_permission_overlay_s1=2
518-C cluster1.has_permission_overlay_s1=2
519EOF
520fi
521
522if [ "$has_s2poe" = "1" ]; then
523 cat <<EOF >>"$model_param_file"
524-C cluster0.has_permission_overlay_s2=2
525-C cluster1.has_permission_overlay_s2=2
526EOF
527fi
528
529if [ "$has_tcr2" = "1" ]; then
530 cat <<EOF >>"$model_param_file"
531-C cluster0.has_tcr2=2
532-C cluster1.has_tcr2=2
533EOF
534fi
535
536if [ "$has_csv2_2" = "1" ]; then
537 cat <<EOF >>"$model_param_file"
538-C cluster0.restriction_on_speculative_execution=2
539-C cluster1.restriction_on_speculative_execution=2
540EOF
541fi
542
543if [ "$has_gcs" = "1" ]; then
544 cat <<EOF >>"$model_param_file"
545-C cluster0.has_gcs=2
546-C cluster1.has_gcs=2
547EOF
548fi
549
Juan Pablo Condedce97602024-02-28 16:46:13 -0600550# Accelerator support level enabled
551if [ "$accelerator_support_level" != "0" ]; then
552 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000553-C cluster0.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600554EOF
555fi
556
Govindraj Raja93be6f22024-10-16 18:38:27 -0500557# FEAT_THE is enabled
558if [ "$has_translation_hardening" = "1" ]; then
559 cat <<EOF >>"$model_param_file"
Igor Podgainõic6f4ae22024-12-11 13:35:24 +0100560-C cluster0.has_translation_hardening=2
561-C cluster1.has_translation_hardening=2
Govindraj Raja93be6f22024-10-16 18:38:27 -0500562EOF
563fi
564
565# FEAT_D128 is enabled
566if [ "$has_d128" = "1" ]; then
567 cat <<EOF >>"$model_param_file"
Igor Podgainõic6f4ae22024-12-11 13:35:24 +0100568-C cluster0.has_128_bit_tt_descriptors=2
569-C cluster1.has_128_bit_tt_descriptors=2
Govindraj Raja93be6f22024-10-16 18:38:27 -0500570EOF
571fi
572
Arvind Ram Prakashe4602402024-11-19 10:19:02 -0600573# FEAT_FPMR support
574if [ "$has_fpmr" = "1" ]; then
575 cat <<EOF >>"$model_param_file"
576-C cluster0.has_fpmr="1"
577-C cluster1.has_fpmr="1"
578EOF
579fi
580
Arvind Ram Prakash7e44a2a2025-03-12 15:25:29 -0500581if [ "$has_pmuv3p7" = "1" ]; then
Boyan Karatotev7b4ff312025-02-27 11:38:49 +0000582 cat <<EOF >>"$model_param_file"
583-C cluster0.has_v8_7_pmu_extension=2
584-C cluster1.has_v8_7_pmu_extension=2
585EOF
586fi
587
Arvind Ram Prakash7e44a2a2025-03-12 15:25:29 -0500588if [ "$has_mops" = "1" ]; then
Boyan Karatotev7b4ff312025-02-27 11:38:49 +0000589 cat <<EOF >>"$model_param_file"
590-C cluster0.has_mops_option=1
591-C cluster1.has_mops_option=1
592EOF
593fi
594
Boyan Karatotev5a53a2d2025-05-16 12:30:32 +0100595if [ "$has_twed" = "1" ]; then
596 cat <<EOF >>"$model_param_file"
597-C cluster0.has_delayed_wfe_trap=2
598-C cluster1.has_delayed_wfe_trap=2
599EOF
600fi
601
Zelalemeb9c1bb2020-08-04 12:40:46 -0500602#------------ Cluster1 configuration (if exists) --------------
603if [ "$is_dual_cluster" = "1" ]; then
604 cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100605${pa_size+-C cluster1.PA_SIZE=$pa_size}
606
Zelalemeb9c1bb2020-08-04 12:40:46 -0500607${cluster_1_reg_reset+-C cluster1.register_reset_data=$cluster_1_reg_reset}
608
609${cluster_1_has_el2+-C cluster1.has_el2=$cluster_1_has_el2}
610
611${amu_present+-C cluster1.has_amu=$amu_present}
Boyan Karatotevb60abde2025-03-11 15:50:37 +0000612${amu_version+-C cluster1.amu_version=${amu_version}}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500613
614${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
615${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
616${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
617${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
618
619${reset_to_spmin+-C cluster1.cpu0.RVBAR=${bl32_addr:?}}
620${reset_to_spmin+-C cluster1.cpu1.RVBAR=${bl32_addr:?}}
621${reset_to_spmin+-C cluster1.cpu2.RVBAR=${bl32_addr:?}}
622${reset_to_spmin+-C cluster1.cpu3.RVBAR=${bl32_addr:?}}
623
624${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
625
626${aarch64_only+-C cluster1.max_32bit_el=-1}
627
628${aarch32+-C cluster1.cpu0.CONFIG64=0}
629${aarch32+-C cluster1.cpu1.CONFIG64=0}
630${aarch32+-C cluster1.cpu2.CONFIG64=0}
631${aarch32+-C cluster1.cpu3.CONFIG64=0}
632
633${bl2_at_el3+-C cluster1.cpu0.RVBAR=${bl2_addr:?}}
634${bl2_at_el3+-C cluster1.cpu1.RVBAR=${bl2_addr:?}}
635${bl2_at_el3+-C cluster1.cpu2.RVBAR=${bl2_addr:?}}
636${bl2_at_el3+-C cluster1.cpu3.RVBAR=${bl2_addr:?}}
637
638${memory_tagging_support_level+-C cluster1.memory_tagging_support_level=$memory_tagging_support_level}
639
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000640${has_branch_target_exception+-C cluster1.has_branch_target_exception=$has_branch_target_exception}
641
Olivier Deprez18101ca2021-04-23 19:42:04 +0200642${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution=$restriction_on_speculative_execution}
643
Zelalem Aweke52aad162021-10-25 17:28:03 -0500644${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
645
Zelalemeb9c1bb2020-08-04 12:40:46 -0500646${gicv3_ext_interrupt_range+-C cluster1.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000647
648${mpidr_layout+-C cluster1.mpidr_layout=$mpidr_layout}
649
650${supports_multi_threading+-C cluster1.supports_multi_threading=$supports_multi_threading}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100651
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500652${has_v8_9_debug_extension+-C cluster1.has_v8_9_debug_extension=$has_v8_9_debug_extension}
653
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100654${etm_present+-C cluster1.cpu0.etm-present=$etm_present}
655${etm_present+-C cluster1.cpu1.etm-present=$etm_present}
656${etm_present+-C cluster1.cpu2.etm-present=$etm_present}
657${etm_present+-C cluster1.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100658${supports_system_trace_filter_regs+-C cluster1.has_self_hosted_trace_extension=$supports_system_trace_filter_regs}
659${supports_trace_buffer_control_regs+-C cluster1.has_trbe=$supports_trace_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100660${supports_crc32+-C cluster1.cpu0.enable_crc32=$supports_crc32}
661${supports_crc32+-C cluster1.cpu1.enable_crc32=$supports_crc32}
662${supports_crc32+-C cluster1.cpu2.enable_crc32=$supports_crc32}
663${supports_crc32+-C cluster1.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100664
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100665${cache_state_modelled+-C cluster1.stage12_tlb_size=1024}
666${cache_state_modelled+-C cluster1.check_memory_attributes=0}
667
Zelalemeb9c1bb2020-08-04 12:40:46 -0500668EOF
669
670# Parameters to select architecture version
671if [ "$arch_version" = "8.3" ]; then
672 cat <<EOF >>"$model_param_file"
673-C cluster1.has_arm_v8-3=1
674EOF
675fi
676
677if [ "$arch_version" = "8.4" ]; then
678 cat <<EOF >>"$model_param_file"
679-C cluster1.has_arm_v8-4=1
680EOF
681fi
682
683if [ "$arch_version" = "8.5" ]; then
684 cat <<EOF >>"$model_param_file"
685-C cluster1.has_arm_v8-5=1
686EOF
687fi
688
689if [ "$arch_version" = "8.6" ]; then
690 cat <<EOF >>"$model_param_file"
691-C cluster1.has_arm_v8-6=1
692EOF
693fi
694
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000695if [ "$arch_version" = "8.7" ]; then
696 cat <<EOF >>"$model_param_file"
697-C cluster1.has_arm_v8-7=1
698EOF
699fi
700
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400701if [ "$arch_version" = "8.8" ]; then
702 cat <<EOF >>"$model_param_file"
703-C cluster1.has_arm_v8-8=1
704EOF
705fi
706
Zelalemeb9c1bb2020-08-04 12:40:46 -0500707# Parameters for fault injection
708if [ "$fault_inject" = "1" ]; then
709 cat <<EOF >>"$model_param_file"
710-C cluster1.number_of_error_records=2
711-C cluster1.has_ras=2
712-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}'
713-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}'
714EOF
715fi
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500716
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100717# FEAT_BRBE is enabled
718if [ "$has_brbe" = "1" ]; then
719 cat <<EOF >>"$model_param_file"
720-C cluster1.has_brbe=1
721EOF
722fi
723
724# FEAT_TRBE is enabled
725if [ "$has_trbe" = "1" ]; then
726 cat <<EOF >>"$model_param_file"
727-C cluster1.has_trbe=1
728EOF
729fi
730
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200731# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500732if [ "$has_rme" = "1" ]; then
733 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200734-C cluster1.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500735-C cluster1.gicv3.cpuintf-mmap-access-level=2
736-C cluster1.gicv4.mask-virtual-interrupt=1
737-C cluster1.gicv3.without-DS-support=1
738-C cluster1.max_32bit_el=-1
739-C cluster1.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200740-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 -0500741EOF
742fi
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400743
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400744# FEAT_PACQARMA3 is enabled
745if [ "$has_pacqarma3" = "1" ]; then
746 cat <<EOF >>"$model_param_file"
747-C cluster1.has_qarma3_pac=1
748EOF
749fi
750
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400751# FEAT_RNG is enabled
752if [ "$has_rng" = "1" ]; then
753 cat <<EOF >>"$model_param_file"
754-C cluster1.has_rndr=1
755EOF
756fi
757
758# FEAT_RNG_TRAP is enabled
759if [ "$has_rng_trap" = "1" ]; then
760 cat <<EOF >>"$model_param_file"
761-C cluster1.has_rndr_trap=1
762EOF
763fi
764
Juan Pablo Condedce97602024-02-28 16:46:13 -0600765# Accelerator support level enabled
766if [ "$accelerator_support_level" != "0" ]; then
767 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000768-C cluster1.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600769EOF
770fi
771
Zelalemeb9c1bb2020-08-04 12:40:46 -0500772fi
Federico Recanatiedf25d92022-03-02 20:54:19 +0100773
774# 48bit PA size: in order to access memory in high address ranges the
775# model must declare and the interconnect has to be configured to
776# support such address width.
777if [ "$pa_size" = "48" ]; then
778cat <<EOF >>"$model_param_file"
779-C bp.dram_size=4000000
780-C cci550.addr_width=48
781EOF
782fi