72 int threads =
sys->threads.size();
74 warn_once(
"A9SCU with >4 CPUs is unsupported");
76 "Too many CPUs (%d) for A9SCU!", threads);
78 int smp_bits, core_cnt;
79 smp_bits = (1 << threads) - 1;
80 core_cnt = threads - 1;
81 pkt->
setLE(smp_bits << 4 | core_cnt);
86 panic(
"Tried to read SCU at offset %#x\n", daddr);
103 warn(
"Tried to write SCU at offset %#x\n", daddr);
This defines the snoop control unit register on an A9.
A9SCU(const Params &p)
The constructor for RealView just registers itself with the MMU.
virtual Tick write(PacketPtr pkt)
All writes are panic.
virtual Tick read(PacketPtr pkt)
Handle a read to the device.
Addr pioAddr
Address that the device listens to.
BasicPioDevice(const Params &p, Addr size)
Tick pioDelay
Delay that the device experinces on an access.
Addr pioSize
Size that the device's address range.
void setLE(T v)
Set the value in the data pointer to v as little endian.
void makeAtomicResponse()
#define panic(...)
This implements a cprintf based panic() function.
#define fatal_if(cond,...)
Conditional fatal macro that checks the supplied condition and only causes a fatal error if the condi...
Copyright (c) 2024 Arm Limited All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.
Declaration of the Packet class.