From 6ab6c52b0bf9c91ef9249613cb4c9d8ab579b4f3 Mon Sep 17 00:00:00 2001 From: Swapnil Haria Date: Thu, 9 Nov 2017 13:04:39 -0600 Subject: mem-ruby: Support atomic_noncaching acceses in ruby Ruby has no support for atomic_noncaching accesses, which prevents using it with kvm-cpu. This patch fixes this by directly forwarding atomic requests from the ruby port/sequencer to the corresponding directory based on the destination address of the packet. Change-Id: I0b4928bfda44fd9e5e48583c51d1ea422800da2d Reviewed-on: https://gem5-review.googlesource.com/5601 Reviewed-by: Andreas Sandberg Reviewed-by: Jason Lowe-Power Reviewed-by: Bradford Beckmann Maintainer: Jason Lowe-Power Maintainer: Bradford Beckmann --- src/mem/ruby/slicc_interface/AbstractController.cc | 6 ++++++ src/mem/ruby/slicc_interface/AbstractController.hh | 1 + 2 files changed, 7 insertions(+) (limited to 'src/mem/ruby/slicc_interface') diff --git a/src/mem/ruby/slicc_interface/AbstractController.cc b/src/mem/ruby/slicc_interface/AbstractController.cc index 0bc88eefa..b920ff7b0 100644 --- a/src/mem/ruby/slicc_interface/AbstractController.cc +++ b/src/mem/ruby/slicc_interface/AbstractController.cc @@ -360,6 +360,12 @@ AbstractController::recvTimingResp(PacketPtr pkt) delete pkt; } +Tick +AbstractController::recvAtomic(PacketPtr pkt) +{ + return ticksToCycles(memoryPort.sendAtomic(pkt)); +} + MachineID AbstractController::mapAddressToMachine(Addr addr, MachineType mtype) const { diff --git a/src/mem/ruby/slicc_interface/AbstractController.hh b/src/mem/ruby/slicc_interface/AbstractController.hh index 354dc80aa..35cd3d2a5 100644 --- a/src/mem/ruby/slicc_interface/AbstractController.hh +++ b/src/mem/ruby/slicc_interface/AbstractController.hh @@ -135,6 +135,7 @@ class AbstractController : public MemObject, public Consumer void queueMemoryWritePartial(const MachineID &id, Addr addr, Cycles latency, const DataBlock &block, int size); void recvTimingResp(PacketPtr pkt); + Tick recvAtomic(PacketPtr pkt); const AddrRangeList &getAddrRanges() const { return addrRanges; } -- cgit v1.2.3