assert(pkt.result == Unknown);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
Addr daddr = pkt.addr - pioAddr;
pkt.allocate();
Tick
AlphaConsole::write(Packet &pkt)
{
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
assert(pkt.result == Unknown);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
IdeRegType reg_type;
int disk;
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
pkt.allocate();
if (pkt.size != 1 && pkt.size != 2 && pkt.size !=4)
panic("Bad IDE read size: %d\n", pkt.size);
int disk;
uint8_t oldVal, newVal;
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
parseAddr(pkt.addr, offset, channel, reg_type);
DmaReqState *state;
state = (DmaReqState*)pkt.senderState;
state->completionEvent->schedule(pkt.time - pkt.req->getTime());
+ delete pkt.req;
+ delete &pkt;
+ } else {
+ delete pkt.req;
+ delete &pkt;
}
+
return Success;
}
if (state == Timing) {
if (sendTiming(pkt) == Failure)
transmitList.push_back(&packet);
- } else if (state == Atomic) {*/
+ } else if (state == Atomic) {*/
sendAtomic(*pkt);
if (pkt->senderState) {
DmaReqState *state = (DmaReqState*)pkt->senderState;
friend class DmaPort;
};
- void sendDma(Packet &pkt);
+ void sendDma(Packet *pkt);
public:
DmaPort(DmaDevice *dev, Platform *p);
assert(pkt.result == Unknown);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
DPRINTF(Tsunami, "read va=%#x size=%d\n", pkt.addr, pkt.size);
Tick
IsaFake::write(Packet &pkt)
{
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
DPRINTF(Tsunami, "write - va=%#x size=%d \n", pkt.addr, pkt.size);
pkt.result = Success;
return pioDelay;
{
assert(ioEnable);
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
pkt.allocate();
//The mask is to give you only the offset into the device register file
DPRINTF(EthernetPIO, "write da=%#x pa=%#x size=%d\n",
daddr, pkt.addr, pkt.size);
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
if (daddr > LAST && daddr <= RESERVED) {
panic("Accessing reserved register");
int func = (daddr >> 8) & 0x7;
int reg = daddr & 0xFF;
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
pkt.allocate();
DPRINTF(PciConfigAll, "read va=%#x da=%#x size=%d\n", pkt.addr, daddr,
Tick
PciConfigAll::write(Packet &pkt)
{
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
assert(pkt.result == Unknown);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
Addr index = daddr >> Regs::VirtualShift;
Addr raddr = daddr & Regs::VirtualMask;
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
pkt.allocate();
if (!regValid(raddr))
Addr index = daddr >> Regs::VirtualShift;
Addr raddr = daddr & Regs::VirtualMask;
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
if (!regValid(raddr))
panic("invalid register: cpu=%d, da=%#x pa=%#x size=%d",
assert(pkt.result == Unknown);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
Addr regnum = (pkt.addr - pioAddr) >> 6;
Addr daddr = (pkt.addr - pioAddr);
Tick
TsunamiCChip::write(Packet &pkt)
{
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
assert(pkt.result == Unknown);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
Addr daddr = pkt.addr - pioAddr;
DPRINTF(Tsunami, "io read va=%#x size=%d IOPorrt=%#x\n", pkt.addr,
Tick
TsunamiIO::write(Packet &pkt)
{
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
assert(pkt.result == Unknown);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
pkt.allocate();
Addr daddr = (pkt.addr - pioAddr) >> 6;;
assert(pkt.size == sizeof(uint64_t));
Tick
TsunamiPChip::write(Packet &pkt)
{
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
assert(pkt.result == Unknown);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
assert(pkt.size == 1);
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
Addr daddr = pkt.addr - pioAddr;
pkt.allocate();
assert(pkt.addr >= pioAddr && pkt.addr < pioAddr + pioSize);
assert(pkt.size == 1);
- pkt.time = curTick + pioDelay;
+ pkt.time += pioDelay;
Addr daddr = pkt.addr - pioAddr;
DPRINTF(Uart, " write register %#x value %#x\n", daddr, pkt.get<uint8_t>());