Implement device that will return BadAddress.
--HG-- extra : convert_revision : d833c20f691e01c84a0678f19f7d83f3ee50c0c1
This commit is contained in:
parent
8d53f298a6
commit
c3485a6548
|
@ -88,6 +88,38 @@ IsaFake::write(PacketPtr pkt)
|
||||||
return pioDelay;
|
return pioDelay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BadAddr::BadAddr(Params *p)
|
||||||
|
: BasicPioDevice(p)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
BadAddr::init()
|
||||||
|
{
|
||||||
|
// Only init this device if it's connected to anything.
|
||||||
|
if (pioPort)
|
||||||
|
PioDevice::init();
|
||||||
|
}
|
||||||
|
|
||||||
|
Tick
|
||||||
|
BadAddr::read(PacketPtr pkt)
|
||||||
|
{
|
||||||
|
assert(pkt->result == Packet::Unknown);
|
||||||
|
DPRINTF(Tsunami, "read to bad address va=%#x size=%d\n",
|
||||||
|
pkt->getAddr(), pkt->getSize());
|
||||||
|
pkt->result = Packet::BadAddress;
|
||||||
|
return pioDelay;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tick
|
||||||
|
BadAddr::write(PacketPtr pkt)
|
||||||
|
{
|
||||||
|
DPRINTF(Tsunami, "write to bad address va=%#x size=%d \n",
|
||||||
|
pkt->getAddr(), pkt->getSize());
|
||||||
|
pkt->result = Packet::BadAddress;
|
||||||
|
return pioDelay;
|
||||||
|
}
|
||||||
|
|
||||||
BEGIN_DECLARE_SIM_OBJECT_PARAMS(IsaFake)
|
BEGIN_DECLARE_SIM_OBJECT_PARAMS(IsaFake)
|
||||||
|
|
||||||
Param<Addr> pio_addr;
|
Param<Addr> pio_addr;
|
||||||
|
@ -121,3 +153,34 @@ CREATE_SIM_OBJECT(IsaFake)
|
||||||
}
|
}
|
||||||
|
|
||||||
REGISTER_SIM_OBJECT("IsaFake", IsaFake)
|
REGISTER_SIM_OBJECT("IsaFake", IsaFake)
|
||||||
|
|
||||||
|
BEGIN_DECLARE_SIM_OBJECT_PARAMS(BadAddr)
|
||||||
|
|
||||||
|
Param<Addr> pio_addr;
|
||||||
|
Param<Tick> pio_latency;
|
||||||
|
SimObjectParam<Platform *> platform;
|
||||||
|
SimObjectParam<System *> system;
|
||||||
|
|
||||||
|
END_DECLARE_SIM_OBJECT_PARAMS(BadAddr)
|
||||||
|
|
||||||
|
BEGIN_INIT_SIM_OBJECT_PARAMS(BadAddr)
|
||||||
|
|
||||||
|
INIT_PARAM(pio_addr, "Device Address"),
|
||||||
|
INIT_PARAM(pio_latency, "Programmed IO latency"),
|
||||||
|
INIT_PARAM(platform, "platform"),
|
||||||
|
INIT_PARAM(system, "system object")
|
||||||
|
|
||||||
|
END_INIT_SIM_OBJECT_PARAMS(BadAddr)
|
||||||
|
|
||||||
|
CREATE_SIM_OBJECT(BadAddr)
|
||||||
|
{
|
||||||
|
BadAddr::Params *p = new BadAddr::Params;
|
||||||
|
p->name = getInstanceName();
|
||||||
|
p->pio_addr = pio_addr;
|
||||||
|
p->pio_delay = pio_latency;
|
||||||
|
p->platform = platform;
|
||||||
|
p->system = system;
|
||||||
|
return new BadAddr(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
REGISTER_SIM_OBJECT("BadAddr", BadAddr)
|
||||||
|
|
|
@ -79,4 +79,21 @@ class IsaFake : public BasicPioDevice
|
||||||
virtual Tick write(PacketPtr pkt);
|
virtual Tick write(PacketPtr pkt);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BadAddr is a device that fills the packet's result field with "BadAddress".
|
||||||
|
* @todo: Consider consolidating with IsaFake and similar classes.
|
||||||
|
*/
|
||||||
|
class BadAddr : public BasicPioDevice
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
struct Params : public BasicPioDevice::Params
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
BadAddr(Params *p);
|
||||||
|
virtual void init();
|
||||||
|
virtual Tick read(PacketPtr pkt);
|
||||||
|
virtual Tick write(PacketPtr pkt);
|
||||||
|
};
|
||||||
|
|
||||||
#endif // __TSUNAMI_FAKE_HH__
|
#endif // __TSUNAMI_FAKE_HH__
|
||||||
|
|
Loading…
Reference in a new issue