Go to the documentation of this file.
39 template <
class Types>
46 template <
class Types>
50 panic(
"Not implemented for R52.");
53 template <
class Types>
58 panic_if(!gem5CpuCluster,
"Cluster should be of type CortexR52Cluster");
61 template <
class Types>
65 llpp(evs->llpp[cpu],
name +
".llpp", -1),
66 flash(evs->flash[cpu],
name +
".flash", -1),
67 amba(evs->amba[cpu],
name +
".amba", -1)
76 template <
class Types>
94 template <
class Types>
99 panic_if(Base::amba[0]->transport_dbg(*trans) != trans->get_data_length(),
100 "Didn't send entire functional packet!");
104 template <
class Types>
108 if (if_name ==
"llpp") {
109 return this->corePins.at(idx)->llpp;
110 }
else if (if_name ==
"flash") {
111 return this->corePins.at(idx)->flash;
112 }
else if (if_name ==
"amba") {
113 return this->corePins.at(idx)->amba;
114 }
else if (if_name ==
"spi") {
115 return *this->spis.at(idx);
116 }
else if (if_name.substr(0, 3) ==
"ppi") {
119 cpu = std::stoi(if_name.substr(4));
120 }
catch (
const std::invalid_argument &
a) {
121 panic(
"Couldn't find CPU number in %s.", if_name);
123 return *this->corePins.at(cpu)->ppis.at(idx);
125 return Base::gem5_getPort(if_name, idx);
ClockRateControlInitiatorSocket clockRateControl
static const int SpiCount
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.
void setSysCounterFrq(uint64_t sys_counter_frq) override
IntSinkPin< ScxEvsCortexR52 > ClstrInt
uint64_t Tick
Tick count type.
void setClkPeriod(Tick clk_period) override
std::vector< std::unique_ptr< CoreInt > > ppis
typename Types::Params Params
void setCluster(SimObject *cluster) override
CorePins(Evs *_evs, int _cpu)
ScxEvsCortexR52(const Params &p)
static const int PpiCount
SignalInterruptInitiatorSocket signalInterrupt
Ports are used to interface objects to each other.
void sendFunc(PacketPtr pkt) override
typename Types::Base Base
Port & gem5_getPort(const std::string &if_name, int idx) override
const std::string & name()
#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)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
std::vector< std::unique_ptr< ClstrInt > > spis
std::vector< std::unique_ptr< CorePins > > corePins
IntSinkPin< CorePins > CoreInt
static const int CoreCount
std::string csprintf(const char *format, const Args &...args)
#define panic(...)
This implements a cprintf based panic() function.
Abstract superclass for simulation objects.
Generated on Tue Mar 23 2021 19:41:18 for gem5 by doxygen 1.8.17