gem5 v24.0.0.0
Loading...
Searching...
No Matches
gic.cc
Go to the documentation of this file.
1/*
2 * Copyright 2019 Google, Inc.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met: redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer;
8 * redistributions in binary form must reproduce the above copyright
9 * notice, this list of conditions and the following disclaimer in the
10 * documentation and/or other materials provided with the distribution;
11 * neither the name of the copyright holders nor the names of its
12 * contributors may be used to endorse or promote products derived from
13 * this software without specific prior written permission.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
29
30#include "base/trace.hh"
31#include "params/FastModelGIC.hh"
32#include "params/SCFastModelGIC.hh"
33
34namespace gem5
35{
36
37namespace fastmodel
38{
39
40int
42{
43 int count = 0;
44 for (auto &init: inits)
45 if (!init.get_port_base().size())
46 count++;
47 return count;
48}
49
51 sc_core::sc_module_name _name, Initiators &inits) :
52 sc_core::sc_module(_name),
53 targets("targets", countUnbound(inits))
54{
55 // For every unbound initiator socket, connected it to one
56 // terminator target socket.
57 int i = 0;
58 for (auto &init: inits) {
59 if (!init.get_port_base().size()) {
60 auto &term = targets.at(i++);
61 term.bind(*this);
62 term.bind(init);
63 }
64 }
65}
66
67void
69{
70 panic("Call to terminated interface!");
71}
72
73SCGIC::SCGIC(const SCFastModelGICParams &params,
75 : scx_evs_GIC(_name), _params(params),
76 resetPort(params.name + ".reset", 0),
77 poResetPort(params.name + ".po_reset", 0)
78{
79 signalInterrupt.bind(signal_interrupt);
80
81 resetPort.signal_out.bind(scx_evs_GIC::normal_reset);
82 poResetPort.signal_out.bind(scx_evs_GIC::po_reset);
83
84 for (int i = 0; i < wake_request.size(); i++) {
85 wakeRequests.emplace_back(
86 new SignalReceiver(csprintf("%s.wakerequest[%d]", name(), i)));
87 wake_request[i].bind(wakeRequests[i]->signal_in);
88 }
89
90 set_parameter("gic.enabled", params.enabled);
91 set_parameter("gic.has-gicv3", params.has_gicv3);
92 set_parameter("gic.has-gicv4.1", params.has_gicv4_1);
93 set_parameter("gic.vPEID-bits", params.vPEID_bits);
94 set_parameter("gic.print-memory-map", params.print_mmap);
95 set_parameter("gic.monolithic", params.monolithic);
96 set_parameter("gic.direct-lpi-support", params.direct_lpi_support);
97 set_parameter("gic.CPU-affinities", params.cpu_affinities);
98 set_parameter("gic.non-ARE-core-count", params.non_ARE_core_count);
99 set_parameter("gic.reg-base", params.reg_base);
100 set_parameter("gic.reg-base-per-redistributor",
101 params.reg_base_per_redistributor);
102 set_parameter("gic.GICD-alias", params.gicd_alias);
103 set_parameter("gic.has-two-security-states",
104 params.has_two_security_states);
105 set_parameter("gic.DS-fixed-to-zero", params.DS_fixed_to_zero);
106 set_parameter("gic.IIDR", params.IIDR);
107 set_parameter("gic.gicv2-only", params.gicv2_only);
108 set_parameter("gic.STATUSR-implemented", params.STATUSR_implemented);
109 set_parameter("gic.priority-bits",
110 params.priority_bits_implemented);
111 set_parameter("gic.GICD_ITARGETSR-RAZWI", params.itargets_razwi);
112 set_parameter("gic.ICFGR-SGI-mask", params.icfgr_sgi_mask);
113 set_parameter("gic.ICFGR-PPI-mask", params.icfgr_ppi_mask);
114 set_parameter("gic.ICFGR-SPI-mask", params.icfgr_spi_mask);
115 set_parameter("gic.ICFGR-SGI-reset", params.icfgr_sgi_reset);
116 set_parameter("gic.ICFGR-PPI-reset", params.icfgr_ppi_reset);
117 set_parameter("gic.ICFGR-SPI-reset", params.icfgr_spi_reset);
118 set_parameter("gic.ICFGR-rsvd-bit", params.icfgr_ppi_rsvd_bit);
119 set_parameter("gic.IGROUP-SGI-mask", params.igroup_sgi_mask);
120 set_parameter("gic.IGROUP-PPI-mask", params.igroup_ppi_mask);
121 set_parameter("gic.IGROUP-SGI-reset", params.igroup_sgi_reset);
122 set_parameter("gic.IGROUP-PPI-reset", params.igroup_ppi_reset);
123 set_parameter("gic.PPI-implemented-mask", params.ppi_implemented_mask);
124 set_parameter("gic.SPI-count", params.spi_count);
125 set_parameter("gic.lockable-SPI-count", params.lockable_spi_count);
126 set_parameter("gic.IRI-ID-bits", params.iri_id_bits);
127 set_parameter("gic.delay-redistributor-accesses",
128 params.delay_redistributor_accesses);
129 set_parameter("gic.GICD_PIDR", params.gicd_pidr);
130 set_parameter("gic.GICR_PIDR", params.gicr_pidr);
131 set_parameter("gic.ITS-count", params.its_count);
132 set_parameter("gic.ITS0-base", params.its0_base);
133 set_parameter("gic.ITS1-base", params.its1_base);
134 set_parameter("gic.ITS2-base", params.its2_base);
135 set_parameter("gic.ITS3-base", params.its3_base);
136 set_parameter("gic.GITS_PIDR", params.gits_pidr);
137 set_parameter("gic.GITS_BASER0-type", params.gits_baser0_type);
138 set_parameter("gic.GITS_BASER1-type", params.gits_baser1_type);
139 set_parameter("gic.GITS_BASER2-type", params.gits_baser2_type);
140 set_parameter("gic.GITS_BASER3-type", params.gits_baser3_type);
141 set_parameter("gic.GITS_BASER4-type", params.gits_baser4_type);
142 set_parameter("gic.GITS_BASER5-type", params.gits_baser5_type);
143 set_parameter("gic.GITS_BASER6-type", params.gits_baser6_type);
144 set_parameter("gic.GITS_BASER7-type", params.gits_baser7_type);
145 set_parameter("gic.GITS_BASER0-entry-bytes",
146 params.gits_baser0_entry_bytes);
147 set_parameter("gic.GITS_BASER1-entry-bytes",
148 params.gits_baser1_entry_bytes);
149 set_parameter("gic.GITS_BASER2-entry-bytes",
150 params.gits_baser2_entry_bytes);
151 set_parameter("gic.GITS_BASER3-entry-bytes",
152 params.gits_baser3_entry_bytes);
153 set_parameter("gic.GITS_BASER4-entry-bytes",
154 params.gits_baser4_entry_bytes);
155 set_parameter("gic.GITS_BASER5-entry-bytes",
156 params.gits_baser5_entry_bytes);
157 set_parameter("gic.GITS_BASER6-entry-bytes",
158 params.gits_baser6_entry_bytes);
159 set_parameter("gic.GITS_BASER7-entry-bytes",
160 params.gits_baser7_entry_bytes);
161 set_parameter("gic.GITS_BASER0-indirect-RAZ",
162 params.gits_baser0_indirect_raz);
163 set_parameter("gic.GITS_BASER1-indirect-RAZ",
164 params.gits_baser1_indirect_raz);
165 set_parameter("gic.GITS_BASER2-indirect-RAZ",
166 params.gits_baser2_indirect_raz);
167 set_parameter("gic.GITS_BASER3-indirect-RAZ",
168 params.gits_baser3_indirect_raz);
169 set_parameter("gic.GITS_BASER4-indirect-RAZ",
170 params.gits_baser4_indirect_raz);
171 set_parameter("gic.GITS_BASER5-indirect-RAZ",
172 params.gits_baser5_indirect_raz);
173 set_parameter("gic.GITS_BASER6-indirect-RAZ",
174 params.gits_baser6_indirect_raz);
175 set_parameter("gic.GITS_BASER7-indirect-RAZ",
176 params.gits_baser7_indirect_raz);
177 set_parameter("gic.ITS-BASER-force-page-alignement",
178 params.its_baser_force_page_alignement);
179 set_parameter("gic.processor-numbers", params.processor_numbers);
180 set_parameter("gic.supports-shareability", params.supports_shareability);
181 set_parameter("gic.A3-affinity-supported", params.a3_affinity_supported);
182 set_parameter("gic.sgi-range-selector-support", params.SGI_RSS_support);
183 set_parameter("gic.GICR_PROPBASER-read-only",
184 params.gicr_propbaser_read_only);
185 set_parameter("gic.GICR_PROPBASER-reset-value",
186 params.gicr_propbaser_reset);
187 set_parameter("gic.ITS-device-bits", params.its_device_bits);
188 set_parameter("gic.ITS-entry-size", params.its_entry_size);
189 set_parameter("gic.ITS-ID-bits", params.its_id_bits);
190 set_parameter("gic.ITS-collection-ID-bits", params.its_collection_id_bits);
191 set_parameter("gic.ITS-cumulative-collection-tables",
192 params.its_cumulative_collection_tables);
193 set_parameter("gic.delay-ITS-accesses", params.delay_ITS_accesses);
194 set_parameter("gic.local-SEIs", params.local_SEIs);
195 set_parameter("gic.local-VSEIs", params.local_VSEIs);
196 set_parameter("gic.ITS-use-physical-target-addresses",
197 params.ITS_use_physical_target_addresses);
198 set_parameter("gic.ITS-hardware-collection-count",
199 params.ITS_hardware_collection_count);
200 set_parameter("gic.ITS-MOVALL-update-collections",
201 params.ITS_MOVALL_update_collections);
202 set_parameter("gic.ITS-TRANSLATE64R", params.ITS_TRANSLATE64R);
203 set_parameter("gic.enable_protocol_checking",
204 params.enable_protocol_checking);
205 set_parameter("gic.fixed-routed-spis", params.fixed_routed_spis);
206 set_parameter("gic.irouter-default-mask", params.irouter_default_mask);
207 if (params.irouter_default_reset != "") {
208 set_parameter("gic.irouter-default-reset",
209 params.irouter_default_reset);
210 }
211 if (params.irouter_reset_values != "")
212 set_parameter("gic.irouter-reset-values", params.irouter_reset_values);
213 set_parameter("gic.irouter-mask-values", params.irouter_mask_values);
214 set_parameter("gic.ITS-threaded-command-queue",
215 params.ITS_threaded_command_queue);
216 set_parameter("gic.ITS-legacy-iidr-typer-offset",
217 params.ITS_legacy_iidr_typer_offset);
218 set_parameter("gic.redistributor-threaded-sync",
219 params.redistributor_threaded_command_queue);
220 set_parameter("gic.ignore-generate-sgi-when-no-are",
221 params.ignore_generate_sgi_when_no_are);
222 set_parameter("gic.trace-speculative-lpi-property-update",
223 params.trace_speculative_lpi_property_updates);
224 set_parameter("gic.virtual-lpi-support", params.virtual_lpi_support);
225 set_parameter("gic.virtual-priority-bits", params.virtual_priority_bits);
226 set_parameter("gic.LPI-cache-type", params.LPI_cache_type);
227 set_parameter("gic.LPI-cache-check-data", params.LPI_cache_check_data);
228 set_parameter("gic.DPG-bits-implemented", params.DPG_bits_implemented);
229 set_parameter("gic.DPG-ARE-only", params.DPG_ARE_only);
230 set_parameter("gic.ARE-fixed-to-one", params.ARE_fixed_to_one);
231 set_parameter("gic.legacy-sgi-enable-rao", params.legacy_sgi_enable_rao);
232 set_parameter("gic.PA_SIZE", params.pa_size);
233 set_parameter("gic.MSI_IIDR", params.MSI_IIDR);
234 set_parameter("gic.MSI_NS-frame0-base", params.MSI_NS_frame0_base);
235 set_parameter("gic.MSI_NS-frame0-max-SPI", params.MSI_NS_frame0_max_SPI);
236 set_parameter("gic.MSI_NS-frame0-min-SPI", params.MSI_NS_frame0_min_SPI);
237 set_parameter("gic.MSI_NS-frame1-base", params.MSI_NS_frame1_base);
238 set_parameter("gic.MSI_NS-frame1-max-SPI", params.MSI_NS_frame1_max_SPI);
239 set_parameter("gic.MSI_NS-frame1-min-SPI", params.MSI_NS_frame1_min_SPI);
240 set_parameter("gic.MSI_NS-frame2-base", params.MSI_NS_frame2_base);
241 set_parameter("gic.MSI_NS-frame2-max-SPI", params.MSI_NS_frame2_max_SPI);
242 set_parameter("gic.MSI_NS-frame2-min-SPI", params.MSI_NS_frame2_min_SPI);
243 set_parameter("gic.MSI_NS-frame3-base", params.MSI_NS_frame3_base);
244 set_parameter("gic.MSI_NS-frame3-max-SPI", params.MSI_NS_frame3_max_SPI);
245 set_parameter("gic.MSI_NS-frame3-min-SPI", params.MSI_NS_frame3_min_SPI);
246 set_parameter("gic.MSI_NS-frame4-base", params.MSI_NS_frame4_base);
247 set_parameter("gic.MSI_NS-frame4-max-SPI", params.MSI_NS_frame4_max_SPI);
248 set_parameter("gic.MSI_NS-frame4-min-SPI", params.MSI_NS_frame4_min_SPI);
249 set_parameter("gic.MSI_NS-frame5-base", params.MSI_NS_frame5_base);
250 set_parameter("gic.MSI_NS-frame5-max-SPI", params.MSI_NS_frame5_max_SPI);
251 set_parameter("gic.MSI_NS-frame5-min-SPI", params.MSI_NS_frame5_min_SPI);
252 set_parameter("gic.MSI_NS-frame6-base", params.MSI_NS_frame6_base);
253 set_parameter("gic.MSI_NS-frame6-max-SPI", params.MSI_NS_frame6_max_SPI);
254 set_parameter("gic.MSI_NS-frame6-min-SPI", params.MSI_NS_frame6_min_SPI);
255 set_parameter("gic.MSI_NS-frame7-base", params.MSI_NS_frame7_base);
256 set_parameter("gic.MSI_NS-frame7-max-SPI", params.MSI_NS_frame7_max_SPI);
257 set_parameter("gic.MSI_NS-frame7-min-SPI", params.MSI_NS_frame7_min_SPI);
258 set_parameter("gic.MSI_PIDR", params.MSI_PIDR);
259 set_parameter("gic.MSI_S-frame0-base", params.MSI_S_frame0_base);
260 set_parameter("gic.MSI_S-frame0-max-SPI", params.MSI_S_frame0_max_SPI);
261 set_parameter("gic.MSI_S-frame0-min-SPI", params.MSI_S_frame0_min_SPI);
262 set_parameter("gic.MSI_S-frame1-base", params.MSI_S_frame1_base);
263 set_parameter("gic.MSI_S-frame1-max-SPI", params.MSI_S_frame1_max_SPI);
264 set_parameter("gic.MSI_S-frame1-min-SPI", params.MSI_S_frame1_min_SPI);
265 set_parameter("gic.MSI_S-frame2-base", params.MSI_S_frame2_base);
266 set_parameter("gic.MSI_S-frame2-max-SPI", params.MSI_S_frame2_max_SPI);
267 set_parameter("gic.MSI_S-frame2-min-SPI", params.MSI_S_frame2_min_SPI);
268 set_parameter("gic.MSI_S-frame3-base", params.MSI_S_frame3_base);
269 set_parameter("gic.MSI_S-frame3-max-SPI", params.MSI_S_frame3_max_SPI);
270 set_parameter("gic.MSI_S-frame3-min-SPI", params.MSI_S_frame3_min_SPI);
271 set_parameter("gic.MSI_S-frame4-base", params.MSI_S_frame4_base);
272 set_parameter("gic.MSI_S-frame4-max-SPI", params.MSI_S_frame4_max_SPI);
273 set_parameter("gic.MSI_S-frame4-min-SPI", params.MSI_S_frame4_min_SPI);
274 set_parameter("gic.MSI_S-frame5-base", params.MSI_S_frame5_base);
275 set_parameter("gic.MSI_S-frame5-max-SPI", params.MSI_S_frame5_max_SPI);
276 set_parameter("gic.MSI_S-frame5-min-SPI", params.MSI_S_frame5_min_SPI);
277 set_parameter("gic.MSI_S-frame6-base", params.MSI_S_frame6_base);
278 set_parameter("gic.MSI_S-frame6-max-SPI", params.MSI_S_frame6_max_SPI);
279 set_parameter("gic.MSI_S-frame6-min-SPI", params.MSI_S_frame6_min_SPI);
280 set_parameter("gic.MSI_S-frame7-base", params.MSI_S_frame7_base);
281 set_parameter("gic.MSI_S-frame7-max-SPI", params.MSI_S_frame7_max_SPI);
282 set_parameter("gic.MSI_S-frame7-min-SPI", params.MSI_S_frame7_min_SPI);
283 set_parameter("gic.outer-cacheability-support",
284 params.outer_cacheability_support);
285 set_parameter("gic.wakeup-on-reset", params.wakeup_on_reset);
286 set_parameter("gic.SPI-message-based-support", params.SPI_MBIS);
287 set_parameter("gic.SPI-unimplemented", params.SPI_unimplemented);
288 set_parameter("gic.IROUTER-IRM-RAZ-WI", params.irm_razwi);
289 set_parameter("gic.common-lpi-configuration",
290 params.common_LPI_configuration);
291 set_parameter("gic.single-set-support", params.single_set_support);
292 set_parameter("gic.has_mpam", params.has_mpam);
293 set_parameter("gic.mpam_partid_max", params.mpam_max_partid);
294 set_parameter("gic.mpam_pmg_max", params.mpam_max_pmg);
295 set_parameter("gic.output_attributes", params.output_attributes);
296 set_parameter("gic.has_VPENDBASER-dirty-flag-on-load",
297 params.has_DirtyVLPIOnLoad);
298 set_parameter("gic.allow-LPIEN-clear", params.allow_LPIEN_clear);
299 set_parameter("gic.GICD-legacy-registers-as-reserved",
300 params.GICD_legacy_reg_reserved);
301 set_parameter("gic.extended-spi-count", params.extended_spi_count);
302 set_parameter("gic.extended-ppi-count", params.extended_ppi_count);
303 set_parameter("gic.consolidators", params.consolidators);
304}
305
306Port &
307SCGIC::gem5_getPort(const std::string &if_name, int idx)
308{
309 if (if_name == "reset") {
310 return resetPort;
311 } else if (if_name == "po_reset") {
312 return poResetPort;
313 } else {
314 return scx_evs_GIC::gem5_getPort(if_name, idx);
315 }
316}
317
318void
320{
321 scx_evs_GIC::before_end_of_elaboration();
322 terminator.reset(new Terminator("terminator", redistributor));
323}
324
325GIC::GIC(const FastModelGICParams &params) :
326 BaseGic(params),
327 ambaM(params.sc_gic->amba_m, params.name + ".amba_m", -1),
328 ambaS(params.sc_gic->amba_s, params.name + ".amba_s", -1),
329 redistributors(params.port_redistributor_connection_count),
330 scGIC(params.sc_gic)
331{
332 for (int i = 0; i < params.port_wake_request_connection_count; i++) {
333 wakeRequestPorts.emplace_back(new IntSourcePin<GIC>(
334 csprintf("%s.wakerequestport[%d]", name(), i), i, this));
335 auto handler = [this, i](bool status)
336 {
337 auto &port = wakeRequestPorts[i];
338 status ? port->raise() : port->lower();
339 };
340 scGIC->wakeRequests[i]->onChange(handler);
341 }
342}
343
344Port &
345GIC::getPort(const std::string &if_name, PortID idx)
346{
347 if (if_name == "amba_m") {
348 return ambaM;
349 } else if (if_name == "amba_s") {
350 return ambaS;
351 } else if (if_name == "redistributor") {
352 auto &ptr = redistributors.at(idx);
353 if (!ptr) {
354 ptr.reset(new TlmGicInitiator(scGIC->redistributor[idx],
355 csprintf("%s.redistributor[%d]",
356 name(), idx), idx));
357 }
358 return *ptr;
359 } else if (if_name == "wake_request") {
360 return *wakeRequestPorts.at(idx);
361 } else if (if_name == "reset" || if_name == "po_reset") {
362 return scGIC->gem5_getPort(if_name, idx);
363 } else {
364 return BaseGic::getPort(if_name, idx);
365 }
366}
367
368void
369GIC::sendInt(uint32_t num)
370{
371 scGIC->signalInterrupt->spi(num - 32, true);
372}
373
374void
375GIC::clearInt(uint32_t num)
376{
377 scGIC->signalInterrupt->spi(num - 32, false);
378}
379
380void
381GIC::sendPPInt(uint32_t num, uint32_t cpu)
382{
383 scGIC->signalInterrupt->ppi(cpu, num, true);
384}
385
386void
387GIC::clearPPInt(uint32_t num, uint32_t cpu)
388{
389 scGIC->signalInterrupt->ppi(cpu, num, false);
390}
391
392bool
394{
395 if (scGIC->params().gicv2_only)
396 return version == GicVersion::GIC_V2;
397 return (version == GicVersion::GIC_V3) ||
398 (version == GicVersion::GIC_V4 && scGIC->params().has_gicv4_1);
399}
400
401} // namespace fastmodel
402} // namespace gem5
const char data[]
const Params & params() const
Definition base_gic.cc:78
virtual std::string name() const
Definition named.hh:47
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
Definition io_device.cc:67
Ports are used to interface objects to each other.
Definition port.hh:62
GIC(const FastModelGICParams &params)
Definition gic.cc:325
void sendPPInt(uint32_t num, uint32_t cpu) override
Interface call for private peripheral interrupts.
Definition gic.cc:381
AmbaTarget ambaS
Definition gic.hh:127
void clearInt(uint32_t num) override
Clear an interrupt from a device that is connected to the GIC.
Definition gic.cc:375
AmbaInitiator ambaM
Definition gic.hh:126
void sendInt(uint32_t num) override
Post an interrupt from a device that is connected to the GIC.
Definition gic.cc:369
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
Definition gic.cc:345
void clearPPInt(uint32_t num, uint32_t cpu) override
Definition gic.cc:387
std::vector< std::unique_ptr< TlmGicInitiator > > redistributors
Definition gic.hh:128
std::vector< std::unique_ptr< IntSourcePin< GIC > > > wakeRequestPorts
Definition gic.hh:129
bool supportsVersion(GicVersion version) override
Check if version supported.
Definition gic.cc:393
sc_gem5::TlmInitiatorBaseWrapper< 64, svp_gicv3_comms::gicv3_comms_fw_if, svp_gicv3_comms::gicv3_comms_bw_if, 1, sc_core::SC_ONE_OR_MORE_BOUND > TlmGicInitiator
Definition gic.hh:124
Terminator(sc_core::sc_module_name _name, Initiators &inits)
Definition gic.cc:50
static int countUnbound(const Initiators &inits)
Definition gic.cc:41
void sendTowardsCPU(uint8_t len, const uint8_t *data) override
Definition gic.cc:68
SCGIC(const SCFastModelGICParams &p)
Definition gic.hh:92
void before_end_of_elaboration() override
Definition gic.cc:319
const SCFastModelGICParams & _params
Definition gic.hh:89
Port & gem5_getPort(const std::string &if_name, int idx) override
Definition gic.cc:307
std::vector< std::unique_ptr< SignalReceiver > > wakeRequests
Definition gic.hh:99
std::unique_ptr< Terminator > terminator
Definition gic.hh:88
SignalSender resetPort
Definition gic.hh:100
SignalInterruptInitiatorSocket signalInterrupt
Definition gic.hh:97
SignalSender poResetPort
Definition gic.hh:101
amba_pv::signal_master_port< bool > signal_out
T & at(size_type index)
Definition sc_vector.hh:498
virtual void bind(base_target_socket_type &s)
#define panic(...)
This implements a cprintf based panic() function.
Definition logging.hh:188
Bitfield< 18, 16 > len
Bitfield< 7 > i
Definition misc_types.hh:67
Bitfield< 5, 0 > status
const FlagsType init
This Stat is Initialized.
Definition info.hh:55
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
Definition types.hh:245
std::string csprintf(const char *format, const Args &...args)
Definition cprintf.hh:161
const std::string & name()
Definition trace.cc:48

Generated on Tue Jun 18 2024 16:23:56 for gem5 by doxygen 1.11.0