Dear List,
I wanted to add a new type for CoherenceRequestType
and use that in my slicc .sm file. I did this by adding a new enum in generated
file CoherenceRequestType.h as follows:
enum CoherenceRequestType {
CoherenceRequestType_FIRST, CoherenceRequestType_GETX =
CoherenceRequestType_FIRST, CoherenceRequestType_UPGRADE,
CoherenceRequestType_GETS, CoherenceRequestType_GET_INSTR,
CoherenceRequestType_PUTX, CoherenceRequestType_PUTS,
CoherenceRequestType_INV, CoherenceRequestType_INV_S,
CoherenceRequestType_L1_DG, CoherenceRequestType_WB_ACK,
CoherenceRequestType_EXE_ACK, CoherenceRequestType_NUM, // a new
request type CoherenceRequestType_FRED
};
Then when I attempt to compile the protocol, I got
an error message indicating that Type 'CoherenceRequestType' does not have
enumeration 'FRED'. I also tried to modify protocols/RubySlicc_Exports.sm,
enumeration(GenericRequestType, desc="...",
default="GenericRequestType_NULL") {
GETS, desc="gets request";
GET_INSTR, desc="get instr request";
GETX, desc="getx request";
UPGRADE, desc="upgrade request";
DOWNGRADE, desc="downgrade request";
INV, desc="invalidate
request"; INV_S, desc="invalidate
shared copy request"; PUTS,
desc="puts request"; PUTO,
desc="puto request"; PUTX,
desc="putx request"; L2_PF,
desc="L2 prefetch";
LD, desc="Load";
ST,
desc="Store"; ATOMIC, desc="Atomic
Load/Store"; IFETCH, desc="Instruction
fetch"; IO,
desc="I/O";
// a new request type
FRED, desc="FRED
request"; NACK,
desc="Nack"; REPLACEMENT, desc="Replacement";
WB_ACK, desc="WriteBack ack";
EXE_ACK, desc="Execlusive ack";
COMMIT, desc="Commit version";
LD_XACT, desc="Transactional Load";
LDX_XACT, desc="Transactional
Load-Intend-Modify"; ST_XACT,
desc="Transactional Store"; BEGIN_XACT, desc="Begin
Transaction"; COMMIT_XACT, desc="Commit Transaction";
ABORT_XACT, desc="Abort Transaction";
NULL, desc="null request
type"; }
That gives me the same error. I suspect that this is a slicc limitation.
Could anyone please give me a hint on how to add a new type to
CoherenceRequestType?
Thanks in advance!
Lei
|