46#include "debug/Iob.hh"
84 panic(
"Invalid address reached Iob\n");
116 panic(
"Read to unknown IOB offset 0x%x\n", accessAddr);
166 panic(
"Read to unknown JBus offset 0x%x\n", accessAddr);
177 panic(
"Invalid address reached Iob\n");
232 panic(
"Write to unknown IOB offset 0x%x\n", accessAddr);
259 panic(
"Write to unknown JBus offset 0x%x\n", accessAddr);
270 DPRINTF(
Iob,
"Receiving Device interrupt: %d for cpu %d vec %d\n",
290 "Generating interrupt because of I/O write to cpu: "
293 tc->getCpuPtr()->postInterrupt(
297 warn(
"Sending reset to CPU: %d\n", cpu_id);
299 panic(
"Don't know how to set non-POR reset to cpu\n");
304 DPRINTF(
Iob,
"Idling CPU because of I/O write cpu: %d\n", cpu_id);
308 DPRINTF(
Iob,
"Resuming CPU because of I/O write cpu: %d\n", cpu_id);
312 panic(
"Invalid type to generate ipi\n");
324 DPRINTF(
Iob,
"Receiving jBus interrupt: %d for cpu %d vec %d\n",
333 tc->getCpuPtr()->postInterrupt(
void unserialize(CheckpointIn &cp) override
Unserialize an object.
IntCtl intCtl[NumDeviceIds]
AddrRangeList getAddrRanges() const override
Every PIO device is obliged to provide an implementation that returns the address ranges the device r...
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
bool receiveJBusInterrupt(int cpu_id, int source, uint64_t d0, uint64_t d1)
void readJBus(PacketPtr pkt)
uint64_t jBusData1[MaxNiagaraProcs]
void writeIob(PacketPtr pkt)
IntMan intMan[NumDeviceIds]
void readIob(PacketPtr pkt)
void serialize(CheckpointOut &cp) const override
Serialize an object.
IntBusy jIntBusy[MaxNiagaraProcs]
uint64_t jBusData0[MaxNiagaraProcs]
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
void generateIpi(Type type, int cpu_id, int vector)
void receiveDeviceInterrupt(DeviceId devid)
void writeJBus(PacketPtr pkt)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void setBE(T v)
Set the value in the data pointer to v as big endian.
T getBE() const
Get the data in the packet byte swapped from big endian to host endian.
RequestPtr req
A pointer to the original request.
void makeAtomicResponse()
This device is the base class which all devices senstive to an address range inherit from.
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr)
AddrRange RangeSize(Addr start, Addr size)
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
#define panic(...)
This implements a cprintf based panic() function.
#define UNSERIALIZE_ARRAY(member, size)
#define SERIALIZE_ARRAY(member, size)
const Params & params() const
This device implements the niagara I/O Bridge chip.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
const Addr JIntDataA1Addr
std::ostream CheckpointOut
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void paramOut(CheckpointOut &cp, const std::string &name, ExtMachInst const &machInst)
void paramIn(CheckpointIn &cp, const std::string &name, ExtMachInst &machInst)
uint64_t Tick
Tick count type.
int ContextID
Globally unique thread context ID.
std::string csprintf(const char *format, const Args &...args)
const int MaxNiagaraProcs
const Addr JIntDataA0Addr
#define UNSERIALIZE_SCALAR(scalar)
#define SERIALIZE_SCALAR(scalar)