blob: 00cc7560798d7aecb20b59348eea3efe03fe7a98 [file] [log] [blame]
Zelalemeb9c1bb2020-08-04 12:40:46 -05001#!/bin/bash
2#
3# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
4#
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
20#------------ GIC configuration --------------
21
22# GICv2 compatibility is not supported and GICD_CTLR.ARE_* is always one
23reset_var gicd_are_fixed_one
24
25# Number of extended PPI supported: Default 0, Maximum 64
26reset_var gicd_ext_ppi_count
27
28# Number of extended SPI supported: Default 0, Maximum 1024
29reset_var gicd_ext_spi_count
30
31# Number of Interrupt Translation Services to be instantiated (0=none)
32reset_var gicd_its_count
33
34# GICv4 Virtual LPIs and Direct injection of Virtual LPIs supported
35reset_var gicd_virtual_lpi
36
37# Device has support for extended SPI/PPI ID ranges
38reset_var gicv3_ext_interrupt_range
39
40# When using the GICv3 model, pretend to be a GICv2 system
41reset_var gicv3_gicv2_only
42
43# Number of SPIs that are implemented: Default 224, Maximum 988
44reset_var gicv3_spi_count
45
46# Enable GICv4.1 functionality
47reset_var has_gicv4_1
48
49reset_var sve_plugin
50
51reset_var bmcov_plugin
52
53reset_var retain_flash
54
55reset_var nvcounter_version
56reset_var nvcounter_diag
57
58source "$ci_root/model/fvp_common.sh"
59
60#------------ Common configuration --------------
61
62cat <<EOF >>"$model_param_file"
63${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
64${gicv3_spi_count+-C gic_distributor.SPI-count=$gicv3_spi_count}
65${gicd_are_fixed_one+-C gic_distributor.ARE-fixed-to-one=$gicd_are_fixed_one}
66${gicd_ext_ppi_count+-C gic_distributor.extended-ppi-count=$gicd_ext_ppi_count}
67${gicd_ext_spi_count+-C gic_distributor.extended-spi-count=$gicd_ext_spi_count}
68${gicd_its_count+-C gic_distributor.ITS-count=$gicd_its_count}
69${gicd_virtual_lpi+-C gic_distributor.virtual-lpi-support=$gicd_virtual_lpi}
70${has_gicv4_1+-C has-gicv4.1=$has_gicv4_1}
71
72${sve_plugin+--plugin=$sve_plugin_path}
73${sve_plugin+-C SVE.ScalableVectorExtension.enable_at_reset=0}
74${sve_plugin+-C SVE.ScalableVectorExtension.veclen=$((128 / 8))}
75
76${bmcov_plugin+--plugin=$bmcov_plugin_path}
77
78${nvcounter_version+-C bp.trusted_nv_counter.version=$nvcounter_version}
79${nvcounter_diag+-C bp.trusted_nv_counter.diagnostics=$nvcounter_diag}
80EOF
81
82# TFTF Reboot/Shutdown tests
83if [ "$retain_flash" = "1" ]; then
84 cat <<EOF >>"$model_param_file"
85-C bp.flashloader1.fname=$flashloader1_fwrite
86-C bp.flashloader1.fnameWrite=$flashloader1_fwrite
87-C bp.flashloader0.fnameWrite=$flashloader0_fwrite
88-C bp.pl011_uart0.untimed_fifos=1
89-C bp.ve_sysregs.mmbSiteDefault=0
90EOF
91fi
92
93#------------ Cluster0 configuration --------------
94
95cat <<EOF >>"$model_param_file"
96${cluster_0_reg_reset+-C cluster0.register_reset_data=$cluster_0_reg_reset}
97
98${cluster_0_has_el2+-C cluster0.has_el2=$cluster_0_has_el2}
99
100${amu_present+-C cluster0.has_amu=$amu_present}
101
102${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
103${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
104${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
105${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
106
107${reset_to_spmin+-C cluster0.cpu0.RVBAR=${bl32_addr:?}}
108${reset_to_spmin+-C cluster0.cpu1.RVBAR=${bl32_addr:?}}
109${reset_to_spmin+-C cluster0.cpu2.RVBAR=${bl32_addr:?}}
110${reset_to_spmin+-C cluster0.cpu3.RVBAR=${bl32_addr:?}}
111
112${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
113
114${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
115
116${aarch64_only+-C cluster0.max_32bit_el=-1}
117
118${aarch32+-C cluster0.cpu0.CONFIG64=0}
119${aarch32+-C cluster0.cpu1.CONFIG64=0}
120${aarch32+-C cluster0.cpu2.CONFIG64=0}
121${aarch32+-C cluster0.cpu3.CONFIG64=0}
122
123
124${bl2_at_el3+-C cluster0.cpu0.RVBAR=${bl2_addr:?}}
125${bl2_at_el3+-C cluster0.cpu1.RVBAR=${bl2_addr:?}}
126${bl2_at_el3+-C cluster0.cpu2.RVBAR=${bl2_addr:?}}
127${bl2_at_el3+-C cluster0.cpu3.RVBAR=${bl2_addr:?}}
128
129${memory_tagging_support_level+-C cluster0.memory_tagging_support_level=$memory_tagging_support_level}
130
131${gicv3_ext_interrupt_range+-C cluster0.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
132EOF
133
134# Parameters to select architecture version
135if [ "$arch_version" = "8.3" ]; then
136 cat <<EOF >>"$model_param_file"
137-C cluster0.has_arm_v8-3=1
138EOF
139fi
140
141if [ "$arch_version" = "8.4" ]; then
142 cat <<EOF >>"$model_param_file"
143-C cluster0.has_arm_v8-4=1
144EOF
145fi
146
147if [ "$arch_version" = "8.5" ]; then
148 cat <<EOF >>"$model_param_file"
149-C cluster0.has_arm_v8-5=1
150EOF
151fi
152
153if [ "$arch_version" = "8.6" ]; then
154 cat <<EOF >>"$model_param_file"
155-C cluster0.has_arm_v8-6=1
156EOF
157fi
158
159# Parameters for fault injection
160if [ "$fault_inject" = "1" ]; then
161 cat <<EOF >>"$model_param_file"
162-C cluster0.number_of_error_records=2
163-C cluster0.has_ras=2
164-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}'
165-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}'
166EOF
167fi
168
169#------------ Cluster1 configuration (if exists) --------------
170if [ "$is_dual_cluster" = "1" ]; then
171 cat <<EOF >>"$model_param_file"
172${cluster_1_reg_reset+-C cluster1.register_reset_data=$cluster_1_reg_reset}
173
174${cluster_1_has_el2+-C cluster1.has_el2=$cluster_1_has_el2}
175
176${amu_present+-C cluster1.has_amu=$amu_present}
177
178${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
179${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
180${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
181${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
182
183${reset_to_spmin+-C cluster1.cpu0.RVBAR=${bl32_addr:?}}
184${reset_to_spmin+-C cluster1.cpu1.RVBAR=${bl32_addr:?}}
185${reset_to_spmin+-C cluster1.cpu2.RVBAR=${bl32_addr:?}}
186${reset_to_spmin+-C cluster1.cpu3.RVBAR=${bl32_addr:?}}
187
188${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
189
190${aarch64_only+-C cluster1.max_32bit_el=-1}
191
192${aarch32+-C cluster1.cpu0.CONFIG64=0}
193${aarch32+-C cluster1.cpu1.CONFIG64=0}
194${aarch32+-C cluster1.cpu2.CONFIG64=0}
195${aarch32+-C cluster1.cpu3.CONFIG64=0}
196
197${bl2_at_el3+-C cluster1.cpu0.RVBAR=${bl2_addr:?}}
198${bl2_at_el3+-C cluster1.cpu1.RVBAR=${bl2_addr:?}}
199${bl2_at_el3+-C cluster1.cpu2.RVBAR=${bl2_addr:?}}
200${bl2_at_el3+-C cluster1.cpu3.RVBAR=${bl2_addr:?}}
201
202${memory_tagging_support_level+-C cluster1.memory_tagging_support_level=$memory_tagging_support_level}
203
204${gicv3_ext_interrupt_range+-C cluster1.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
205EOF
206
207# Parameters to select architecture version
208if [ "$arch_version" = "8.3" ]; then
209 cat <<EOF >>"$model_param_file"
210-C cluster1.has_arm_v8-3=1
211EOF
212fi
213
214if [ "$arch_version" = "8.4" ]; then
215 cat <<EOF >>"$model_param_file"
216-C cluster1.has_arm_v8-4=1
217EOF
218fi
219
220if [ "$arch_version" = "8.5" ]; then
221 cat <<EOF >>"$model_param_file"
222-C cluster1.has_arm_v8-5=1
223EOF
224fi
225
226if [ "$arch_version" = "8.6" ]; then
227 cat <<EOF >>"$model_param_file"
228-C cluster1.has_arm_v8-6=1
229EOF
230fi
231
232# Parameters for fault injection
233if [ "$fault_inject" = "1" ]; then
234 cat <<EOF >>"$model_param_file"
235-C cluster1.number_of_error_records=2
236-C cluster1.has_ras=2
237-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}'
238-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}'
239EOF
240fi
241fi