110c110
< TLB::Translation *_trans, bool _timing)
---
> TLB::Translation *_trans, bool _timing, bool _functional)
111a112
> assert(!(_functional && _timing));
138a140
> currState->functional = _functional;
233c235
< } else {
---
> } else if (!currState->functional) {
238a241,249
> } else {
> RequestPtr req = new Request(l1desc_addr, sizeof(uint32_t), flag);
> PacketPtr pkt = new Packet(req, MemCmd::ReadReq, Packet::Broadcast);
> pkt->dataStatic((uint8_t*)&currState->l1Desc.data);
> port->sendFunctional(pkt);
> doL1Descriptor();
> delete req;
> delete pkt;
> f = currState->fault;
569c580
< } else {
---
> } else if (!currState->functional) {
573a585,592
> } else {
> RequestPtr req = new Request(l2desc_addr, sizeof(uint32_t), 0);
> PacketPtr pkt = new Packet(req, MemCmd::ReadReq, Packet::Broadcast);
> pkt->dataStatic((uint8_t*)&currState->l2Desc.data);
> port->sendFunctional(pkt);
> doL2Descriptor();
> delete req;
> delete pkt;