DIRECTORY CacheOps, Core, CoreClasses, CoreFlat, Dragon, DragOpsCross, IFUTop, IFUPublic, LizardCache, LizardHeart, LizardLiver, Ports, Rosemary, RosemaryUser, RosemaryVector; Cluster: CEDAR DEFINITIONS = BEGIN nCacheLines: NAT; skipIFURejects: BOOL; skipEURejects: BOOL; fullEU: BOOL; fullIFU: BOOL; fullIFUCuts: LIST OF Core.ROPE; quickIFU: BOOL; rawIFU: BOOL; recordPlotData: BOOL; chrgdMemNodesOk: BOOL; initIFUVectorWt: BOOL; initEUVectorWt: BOOL; 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, ifuVectors: RosemaryVector.VectorFile _ NIL, ifuScanBuffer: IFUPublic.ScanRef _ 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, euVectors: RosemaryVector.VectorFile _ 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: BOOL _ FALSE, resched: BOOL _ FALSE, enaECacheLog: BOOL _ FALSE, enaIFULog: BOOL _ FALSE, enaIFUVectorWt: BOOL _ FALSE, enaEULog: BOOL _ FALSE, enaEUVectorWt: BOOL _ FALSE, lizardToo: BOOL _ TRUE, emulateBreakpoint: BOOL _ TRUE, randomSeed: INT _ 0, randomCycleLimit: INT _ 0, ifuDebugScanOut: BOOL _ FALSE, ifuDebugScanLoc: INT _ 0, recordPlotData: BOOL _ TRUE, chrgdMemNodesOk: BOOL _ FALSE, running: BOOL _ FALSE, msg: Core.ROPE _ NIL ]; StartNewLizard: PROC [ m: REF -- CacheOps.VM -- ] RETURNS [ sim: LizardSimulation]; SetSuccessHalt: PROC[new: BOOL]; GetSuccessHalt: PROC RETURNS[BOOL]; Breakpoint: SIGNAL; DefaultCheckSynch: IFUTop.CheckSynchProc; CSProcRec: TYPE = RECORD [proc: IFUTop.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 April 23, 1987 6:23:00 pm PST Last Edited by: Don Curry May 30, 1987 10:24:31 am PDT Κ)˜šœ ™ Icodešœ Οmœ1™