Go to the documentation of this file.
43 template <
class Types>
50 template <
class Types>
54 panic(
"Not implemented for R52.");
57 template <
class Types>
62 panic_if(!gem5CpuCluster,
"Cluster should be of type CortexR52Cluster");
65 template <
class Types>
69 this->corePins[core]->cfgvectable.set_state(0,
addr);
72 template <
class Types>
76 llpp(evs->llpp[cpu],
name +
".llpp", -1),
77 flash(evs->flash[cpu],
name +
".flash", -1),
78 amba(evs->amba[cpu],
name +
".amba", -1),
79 core_reset(
name +
".core_reset", 0),
80 poweron_reset(
name +
".poweron_reset", 0),
82 cfgvectable((
name +
"cfgvectable").c_str())
95 template <
class Types>
117 template <
class Types>
122 panic_if(Base::amba[0]->transport_dbg(*trans) != trans->get_data_length(),
123 "Didn't send entire functional packet!");
127 template <
class Types>
131 if (if_name ==
"llpp") {
132 return this->corePins.at(idx)->llpp;
133 }
else if (if_name ==
"flash") {
134 return this->corePins.at(idx)->flash;
135 }
else if (if_name ==
"amba") {
136 return this->corePins.at(idx)->amba;
137 }
else if (if_name ==
"core_reset") {
138 return this->corePins.at(idx)->core_reset;
139 }
else if (if_name ==
"poweron_reset") {
140 return this->corePins.at(idx)->poweron_reset;
141 }
else if (if_name ==
"halt") {
142 return this->corePins.at(idx)->halt;
143 }
else if (if_name ==
"ext_slave") {
144 return this->ext_slave;
145 }
else if (if_name ==
"top_reset") {
146 return this->top_reset;
147 }
else if (if_name ==
"spi") {
148 return *this->spis.at(idx);
149 }
else if (if_name.substr(0, 3) ==
"ppi") {
152 cpu = std::stoi(if_name.substr(4));
153 }
catch (
const std::invalid_argument &
a) {
154 panic(
"Couldn't find CPU number in %s.", if_name);
156 return *this->corePins.at(cpu)->ppis.at(idx);
158 return Base::gem5_getPort(if_name, idx);
IntSinkPin< CorePins > CoreInt
void setResetAddr(int core, Addr addr, bool secure) override
void setSysCounterFrq(uint64_t sys_counter_frq) override
std::vector< std::unique_ptr< CoreInt > > ppis
std::vector< std::unique_ptr< ClstrInt > > spis
static const int SpiCount
ClockRateControlInitiatorSocket clockRateControl
tlm::tlm_generic_payload * packet2payload(PacketPtr packet)
Convert a gem5 packet to a TLM payload by copying all the relevant information to new tlm payload.
SignalSender poweron_reset
static const int PpiCount
std::string csprintf(const char *format, const Args &...args)
void sendFunc(PacketPtr pkt) override
typename Types::Base Base
static const int CoreCount
amba_pv::signal_master_port< bool > signal_out
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
uint64_t Tick
Tick count type.
SignalInitiator< uint64_t > cfgvectable
void setCluster(SimObject *cluster) override
ScxEvsCortexR52(const Params &p)
typename Types::Params Params
Abstract superclass for simulation objects.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
GEM5_DEPRECATED_NAMESPACE(GuestABI, guest_abi)
const std::string & name()
IntSinkPin< ScxEvsCortexR52 > ClstrInt
SignalInterruptInitiatorSocket signalInterrupt
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
virtual void bind(base_target_socket_type &s)
Ports are used to interface objects to each other.
std::vector< std::unique_ptr< CorePins > > corePins
CorePins(Evs *_evs, int _cpu)
Port & gem5_getPort(const std::string &if_name, int idx) override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void setClkPeriod(Tick clk_period) override
#define panic(...)
This implements a cprintf based panic() function.
Generated on Tue Dec 21 2021 11:34:18 for gem5 by doxygen 1.8.17