LizardRosemary.mesa
Copyright © 1984 by Xerox Corporation. All rights reserved.
Last edited by Curry, April 17, 1984 10:11:39 am PST
Last edited by McCreight, February 14, 1986 9:23:50 am PST
LizardRosemary:
CEDAR
DEFINITIONS =
BEGIN
Simulation: TYPE = REF SimulationRec;
SimulationRec:
TYPE =
RECORD [
processor: LizardHeart.Processor ← NIL,
control: LizardHeart.Control ← nextInst,
euCache: LizardCache.CacheBase,
lastInstrOps: LIST OF REF ANY -- RegStore, CacheTrans -- ← NIL
];
CacheTrans: TYPE = REF CacheTransRec;
CacheTransRec:
TYPE =
RECORD [
instr: INT,
cmd: Dragon.PBusCommands,
addr, data: Dragon.Word,
fault: Dragon.PBusFaults
];
RegStore: TYPE = REF RegStoreRec;
RegStoreRec:
TYPE =
RECORD [
instr: INT,
reg: DragOpsCross.ProcessorRegister,
data: Dragon.Word
];
StartNewLizard: PROC [ m: REF -- CacheOps.VM -- ] RETURNS [ sim: Simulation ];
DoInstruction: PROC [ sim: Simulation ];
SuccessHalt: ERROR;
Breakpoint: SIGNAL;
ClusterInst:
TYPE =
RECORD [
cycle: INT,
instr: INT,
trapped: BOOL, -- this instruction was aborted
trapPC: Dragon.HexWord, -- if aborted, then why?
pc: Dragon.HexWord,
op: DragOpsCross.Inst,
alpha, beta, gamma, delta: Dragon.HexByte
];
CheckSynchProc:
TYPE =
PROC [
lizardSimRef: REF Simulation,
clusterInst: ClusterInst ]
RETURNS [deltaInstrCount: INT ← 1];
CheckSynch: CheckSynchProc;
CSProcRec: TYPE = RECORD [proc: CheckSynchProc];
csProcRec: CSProcRec; -- for easy replacement
END.