x86: changes to apic, keyboard
[gem5.git] / src / mem / addr_mapper.cc
index 660848c82aed5f88932018d713e5604c11699e11..4aff9dcd883038005dda299db4c76ba79270a7ad 100644 (file)
@@ -123,10 +123,9 @@ AddrMapper::recvTimingReq(PacketPtr pkt)
     Addr orig_addr = pkt->getAddr();
     bool needsResponse = pkt->needsResponse();
     bool memInhibitAsserted = pkt->memInhibitAsserted();
-    Packet::SenderState* senderState = pkt->senderState;
 
     if (needsResponse && !memInhibitAsserted) {
-        pkt->senderState = new AddrMapperSenderState(senderState, orig_addr);
+        pkt->pushSenderState(new AddrMapperSenderState(orig_addr));
     }
 
     pkt->setAddr(remapAddr(orig_addr));
@@ -137,8 +136,7 @@ AddrMapper::recvTimingReq(PacketPtr pkt)
 
     // If not successful, restore the sender state
     if (!successful && needsResponse) {
-        delete pkt->senderState;
-        pkt->senderState = senderState;
+        delete pkt->popSenderState();
     }
 
     return successful;
@@ -158,7 +156,7 @@ AddrMapper::recvTimingResp(PacketPtr pkt)
     Addr remapped_addr = pkt->getAddr();
 
     // Restore the state and address
-    pkt->senderState = receivedState->origSenderState;
+    pkt->senderState = receivedState->predecessor;
     pkt->setAddr(receivedState->origAddr);
 
     // Attempt to send the packet
@@ -265,27 +263,8 @@ RangeAddrMapper::remapAddr(Addr addr) const
 AddrRangeList
 RangeAddrMapper::getAddrRanges() const
 {
-    AddrRangeList ranges;
-    AddrRangeList actualRanges = masterPort.getAddrRanges();
-
-    for (AddrRangeIter r = actualRanges.begin(); r != actualRanges.end(); ++r) {
-        AddrRange range = *r;
-
-        for (int j = 0; j < originalRanges.size(); ++j) {
-            if (range.intersects(originalRanges[j]))
-                fatal("Cannot remap range that intersects the original"
-                      " ranges but are not a subset.\n");
-            if (range.isSubset(originalRanges[j])) {
-                // range is a subset
-                Addr offset = range.start() - originalRanges[j].start();
-                Addr start = range.start() - offset;
-                ranges.push_back(AddrRange(start, start + range.size() - 1));
-            } else {
-                ranges.push_back(range);
-            }
-        }
-    }
-
+    // Simply return the original ranges as given by the parameters
+    AddrRangeList ranges(originalRanges.begin(), originalRanges.end());
     return ranges;
 }