From 28e353e0403ea379d244a418e8dc8ee0b48187cf Mon Sep 17 00:00:00 2001 From: Tony Gutierrez Date: Tue, 19 Jan 2016 14:05:03 -0500 Subject: mem: write combining for ruby protocols This patch adds support for write-combining in ruby. --- src/mem/protocol/RubySlicc_Exports.sm | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/mem/protocol/RubySlicc_Exports.sm') diff --git a/src/mem/protocol/RubySlicc_Exports.sm b/src/mem/protocol/RubySlicc_Exports.sm index 882102923..5ee26d65c 100644 --- a/src/mem/protocol/RubySlicc_Exports.sm +++ b/src/mem/protocol/RubySlicc_Exports.sm @@ -39,12 +39,25 @@ external_type(Addr, primitive="yes"); external_type(Cycles, primitive="yes", default="Cycles(0)"); external_type(Tick, primitive="yes", default="0"); +structure(WriteMask, external="yes", desc="...") { + void clear(); + bool cmpMask(WriteMask); + bool isEmpty(); + bool isFull(); + bool isOverlap(WriteMask); + void orMask(WriteMask); + void fillMask(); +} + structure(DataBlock, external = "yes", desc="..."){ void clear(); + void copyPartial(DataBlock, int, int); + void copyPartial(DataBlock, WriteMask); void atomicPartial(DataBlock, WriteMask); } bool testAndRead(Addr addr, DataBlock datablk, Packet *pkt); +bool testAndReadMask(Addr addr, DataBlock datablk, WriteMask mask, Packet *pkt); bool testAndWrite(Addr addr, DataBlock datablk, Packet *pkt); // AccessPermission -- cgit v1.2.3