-- Laurel.bootmesa
-- edited by Levin, April 14, 1981  4:11 PM
-- edited by Schroeder, April 26, 1979  12:25 PM.
-- edited by Brotz, May 25, 1982  10:32 PM.
-- edited by Andrew Birrell, Friday Nov. 7, 1980 2:00 pm PST
-- edited by Taft, May 21, 1983  2:13 PM

-- Note: Bootmesa loads all the RESIDENTCODE before the SWAPPEDINCODE.
-- Within each of the two groups, the order of loading is (approximately) the
-- order of appearance in the Config file, NOT the order given here.

WART: Wart;
NUB: DebugNub;
CONTROL: LaurelNub;
RESIDENTCODE:
  -- These are resident forever:
  Resident, DiskIO, Swapper, MDSRegion, Signaller, Keyboard,
  QueueLockedTiny, TedLocked, DispatcherLocked, LaurelInterrupt, DiskDriver,

  -- These are resident initially but are unlocked during initialization.
  -- They are things we would like to have around when initialization is
  -- finished, and should not encroach on the space to be occupied by the
  -- bitmap.  (However, overlapping the bitmap is not a disaster, since
  -- everything here is unlocked before the bitmap is allocated.  Getting
  -- this wrong may slow startup, but should not cause anything to break.)
  QueueCool, PupRouterCool, AMCUCool, TedIn, QueueIn, PupRouterIn,
  PupChecksums, DispatcherHot, TedOut, QueueOut, PupSockets, PupRouterOut,
  BFS, DiskKD, Files, FSP, Miscellaneous, Modules, NonResident, OurProcess,
  SegmentsB, SegmentsA, StringsA, StringsB, LaurelNub, IntRefreshers,
  NameConversion, intCommon, displayCommon, Display,
  IntBoundaryCom, KeyStreams, DMSTime,
  DiskRequestor, AltoFileOpsA, VMCacheOps, VMCacheMgr, VMIO, VMPageOps,
  VMPageMgr, VMStorageMgr, DynamicZoneHot,

  -- These are handled the same as the previous group.  They are things
  -- not executed until after the bitmap is allocated, but which
  -- we would like to have brought in initially and moved to hyperspace
  -- by the Swapper before Laurel gets control (this expedites startup).
  -- On a non-XM machine these most certainly get displaced by the bitmap
  -- before anyone has a chance to execute them.
  SetTime, TimeConvert, RetrieveInit, RetrievePoll, Protocol,
  IntMBXState, NameInfo, Locate, VirtCM, VirtCom,
  AltoFileOpsB, AltoFileOpsC, AltoKD, AltoDirectory, VMFile;

SWAPPEDINCODE:
  -- These are initially swapped in for the purpose of being executed
  -- before the bitmap is created, and are almost certainly displaced
  -- by the bitmap.
  VirtSS, LoadState, Directory, HyperRegion, MesaInit,
  StreamsA, StreamsB, StreamsC, Faults, DebugNub, Wart, Boss, InitLaurel,
  IntExceptions, PupErrors, DummyForwarder, TedCold, QueueCold,
  PupRouterCold, DispatcherCold, AMCUCold, LaurelSegments, EditorDisplay,
  DiskControl, VMControl, VMFile, DynamicZoneCold;

NOTRAP: Resident, LaurelInterrupt, DiskIO, Swapper, MDSRegion, HyperRegion,
  Signaller, OurProcess, NonResident, SegmentsA, SegmentsB, MesaInit, Files,
  Wart, Modules, Miscellaneous, Faults, LaurelFont;

-- The GFT consists of 2-word entries and occupies an integral number of
-- pages (2 here).
GFT: 256;

-- PSBs occupy 5 words each.  PSBs + StateVectors (8 at 11 words each)
-- together occupy an integral number of pages (1 here).
PROCESSES: 33;

-- The amount of space preallocated for local frames is deliberately kept
-- small, because the standard distribution of frame sizes is not appropriate
-- for Laurel and it is better to have them allocated as they are needed.
RESIDENTFRAMEPAGES: 5;