-- File: [Indigo]<Sakura>Dragon>DragonCache.sak
-- 15-Mar-82 11:37:56
DIRECTORY
SakuraRT;
DragonCache: DEFINITIONS = {
PbusType: TYPE = RECORD [
body: SELECT kind: {Instruction, Data} FROM
Instruction => [vp: LONG CARDINAL -- actually 25 bits --,
bl: [0..37B],
word: [0..3]],
Data => [data: LONG CARDINAL]
ENDCASE];
PbusOp: TYPE = {Fetch, FetchHold, Store, MapOp};
MbusType: TYPE = RECORD [
body: SELECT kind: {Instruction, MapCommand, Data} FROM
Instruction => [command: MbusCommand,
rp: LONG CARDINAL -- actually 25 bits --,
bl: [0..37B],
word: [0..3]],
MapCommand => [command: MbusCommand,
mapop: MapOpKind,
fault: BOOLEAN,
rpdirty: BOOLEAN,
vp: LONG CARDINAL],
Data => [data: LONG CARDINAL]
ENDCASE];
MbusCommand: TYPE = {ReadQuad, WriteQuad, WriteSingle, NotReady, ReadMap,
ReadMapAndSetRpDirty, DoMapOp, SetRpDirty, MapOpDone};
MapOpKind: TYPE = {SetMap, SetMapFlags, GetMapFlags};
CheckVal: PROC [vp: LONG CARDINAL, bl: [0..37B], word: [0..3],
val: LONG CARDINAL];
Cache: DEVICE = {
IN Op: PbusOp, PDataIn, MDataIn: LONG CARDINAL, ClockA, ClockB, CMDIn, RQ,
SharedIn, Grant: BOOLEAN
OUT Exception, Reject, SharedOut, CMDOut, Rq: BOOLEAN,
PDataOut: PbusType, MDataOut: MbusType
};
}.