RubyPort.cc (10713:eddb533708cb) RubyPort.cc (10886:fdd4a895f325)
1/*
2 * Copyright (c) 2012-2013 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 535 unchanged lines hidden (view full) ---

544 DPRINTF(RubyPort, "Sending invalidations.\n");
545 // This request is deleted in the stack-allocated packet destructor
546 // when this function exits
547 // TODO: should this really be using funcMasterId?
548 RequestPtr req =
549 new Request(address.getAddress(), 0, 0, Request::funcMasterId);
550 // Use a single packet to signal all snooping ports of the invalidation.
551 // This assumes that snooping ports do NOT modify the packet/request
1/*
2 * Copyright (c) 2012-2013 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 535 unchanged lines hidden (view full) ---

544 DPRINTF(RubyPort, "Sending invalidations.\n");
545 // This request is deleted in the stack-allocated packet destructor
546 // when this function exits
547 // TODO: should this really be using funcMasterId?
548 RequestPtr req =
549 new Request(address.getAddress(), 0, 0, Request::funcMasterId);
550 // Use a single packet to signal all snooping ports of the invalidation.
551 // This assumes that snooping ports do NOT modify the packet/request
552 Packet pkt(req, MemCmd::InvalidationReq);
552 Packet pkt(req, MemCmd::InvalidateReq);
553 for (CpuPortIter p = slave_ports.begin(); p != slave_ports.end(); ++p) {
554 // check if the connected master port is snooping
555 if ((*p)->isSnooping()) {
556 // send as a snoop request
557 (*p)->sendTimingSnoopReq(&pkt);
558 }
559 }
560}
561
562void
563RubyPort::PioMasterPort::recvRangeChange()
564{
565 RubyPort &r = static_cast<RubyPort &>(owner);
566 r.gotAddrRanges--;
567 if (r.gotAddrRanges == 0 && FullSystem) {
568 r.pioSlavePort.sendRangeChange();
569 }
570}
553 for (CpuPortIter p = slave_ports.begin(); p != slave_ports.end(); ++p) {
554 // check if the connected master port is snooping
555 if ((*p)->isSnooping()) {
556 // send as a snoop request
557 (*p)->sendTimingSnoopReq(&pkt);
558 }
559 }
560}
561
562void
563RubyPort::PioMasterPort::recvRangeChange()
564{
565 RubyPort &r = static_cast<RubyPort &>(owner);
566 r.gotAddrRanges--;
567 if (r.gotAddrRanges == 0 && FullSystem) {
568 r.pioSlavePort.sendRangeChange();
569 }
570}