DIRECTORY CacheOps, Core, CoreClasses, CoreFlat, Dragon, DragOpsCross, IFU2, LizardCache, LizardHeart, LizardLiver, Ports, Rosemary, RosemaryUser; Cluster: CEDAR DEFINITIONS = BEGIN lastKs: KitchenSink; Instances: TYPE = {ifu, eu, eCache, iCache}; historySize: NAT = 20; OpaqueKitchenSink: TYPE = REF ANY; KitchenSink: TYPE = REF KitchenSinkRec; KitchenSinkRec: TYPE = RECORD [ controlPanel: ControlPanel _ NIL, log: Core.STREAM _ NIL, lizardSimulation: LizardSimulation _ NIL, rosemarySimulation: Rosemary.Simulation _ NIL, rosemaryStores: LIST OF REF ANY _ NIL, clusterIOPort: Ports.Port _ NIL, vm: CacheOps.VirtualMemory _ NIL, iCache: CacheOps.Cache _ NIL, eCache: CacheOps.Cache _ NIL, protCyclesAfterReject: CARDINAL _ 0, ifuSimulation: Rosemary.Simulation _ NIL, ifuSimulationTruthPort: Ports.Port _ NIL, ifuSimulationTestPort: Ports.Port _ NIL, ifuDisplay: RosemaryUser.RoseDisplay _ NIL, euSimulation: Rosemary.Simulation _ NIL, euPort: Ports.Port _ NIL, euSimulationTruthPort: Ports.Port _ NIL, euSimulationTestPort: Ports.Port _ NIL, euReject: CoreFlat.FlatWire _ NIL, euDisplay: RosemaryUser.RoseDisplay _ NIL, diagnostics: Core.ROPE _ NIL, cluster: Core.CellType _ NIL, flatCT: ARRAY Instances OF CoreFlat.FlatCellType _ ALL[NIL], coreInsts: ARRAY Instances OF CoreClasses.CellInstance _ ALL[NIL], stateTop: ARRAY [0..historySize) OF ClusterState, stateFull: ARRAY [0..historySize) OF ClusterState ]; ClusterState: TYPE = RECORD [ refCy: REF INT _ NIL, refPh: REF Dragon.Phase _ NIL, data: ARRAY Instances OF REF ANY _ ALL[NIL] ]; LizardSimulation: TYPE = REF LizardSimulationRec; LizardSimulationRec: TYPE = RECORD [ processor: LizardHeart.Processor _ NIL, control: LizardHeart.Control _ nextInst, euCache: LizardCache.CacheBase, lastInstrOps: LIST OF REF ANY _ NIL ]; -- RegStore, CacheTrans ControlPanel: TYPE = REF ControlPanelRec; ControlPanelRec: TYPE = RECORD [ diagnostic: Core.ROPE _ NIL, cycle: INT _ 0, slowFromCycle: INT _ 10000000, instrCount: INT _ 0, slowFromInstr: INT _ 10000000, phase: Dragon.Phase _ a, stopInPh: ARRAY Dragon.Phase OF BOOL _ ALL[TRUE], repeatPhase: BOOL _ FALSE, sampleFullIFU: BOOL _ TRUE, proceedFromCompareTest: BOOL _ FALSE, proceedFromCheckPort: BOOL _ FALSE, continueTestFromAbort: BOOL _ FALSE, reset, resched: BOOL _ FALSE, enaECacheLog: BOOL _ FALSE, enaIFULog: BOOL _ FALSE, enaEULog: BOOL _ FALSE, lizardToo: BOOL _ TRUE, emulateBreakpoint: BOOL _ TRUE, randomSeed: INT _ 0, randomCycleLimit: INT _ 0, running: BOOL _ FALSE, msg: Core.ROPE _ NIL ]; StartNewLizard: PROC [ m: REF -- CacheOps.VM -- ] RETURNS [ sim: LizardSimulation]; SuccessHalt: ERROR; Breakpoint: SIGNAL; DefaultCheckSynch: IFU2.CheckSynchProc; CSProcRec: TYPE = RECORD [proc: IFU2.CheckSynchProc]; csProcRec: CSProcRec; -- for easy replacement MakeCluster: PROC RETURNS [ks: KitchenSink]; DoCluster: PROC [ks: KitchenSink, diagnostic: Core.ROPE _ NIL]; GetPublicBool: PROC [ks: KitchenSink, signal: ATOM] RETURNS [value: BOOL]; SetPublicBool: PROC [ks: KitchenSink, signal: ATOM, value: BOOL]; SetPublic: PROC [ks: KitchenSink, signal: ATOM, value: REF ANY]; SetPublicAndSettle: PROC [ks: KitchenSink, signal: ATOM, value: REF ANY]; END. ,Cluster.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. McCreight, May 13, 1986 2:28:43 pm PDT Barth, April 28, 1986 12:14:11 pm PDT Curry, October 22, 1986 8:01:07 pm PDT Don Curry October 31, 1986 9:08:06 am PST Last Edited by: Louis Monier October 31, 1986 4:51:33 pm PST Κό˜šœ ™ Icodešœ Οmœ1™