<<>> <> <> <> <<>> <> <<>> DIRECTORY TargetArchitecture, BreakWorldArchitecture, Rope USING [ROPE]; Shepherd: CEDAR DEFINITIONS ~ { <> Patch: TYPE ~ REF PatchRep _ nullPatch; nullPatch: Patch ~ NIL; PatchRep: TYPE; <> PatchHeaderStruct: PRIVATE TYPE ~ MACHINE DEPENDENT RECORD [ <> size (0:0..7): PatchSize, relPCMS (0:8..15): RelPCMS, relPCLS (0:16..31): RelPCLS ]; PatchSize: TYPE ~ CARDINAL [0..255]; <> RelPCMS: TYPE ~ CARDINAL [firstRelPCMS .. lastRelPCMS]; firstRelPCMS: CARDINAL ~ 0; lastRelPCMS: CARDINAL ~ 255; RelPCLS: TYPE ~ CARDINAL [firstRelPCLS .. lastRelPCLS]; firstRelPCLS: CARDINAL ~ 0; lastRelPCLS: CARDINAL ~ 65535; RelPC: TYPE ~ TargetArchitecture.Displacement; firstRelPC: INT32 ~ -8388608; lastRelPC: INT32 ~ +8388607; Meadow: TYPE ~ REF MeadowRep _ nullMeadow; nullMeadow: Meadow ~ NIL; MeadowRep: TYPE; <> IsNullMeadow: PROCEDURE [meadow: Meadow] RETURNS [BOOLEAN]; ReservePatch: PROCEDURE [ pc: BreakWorldArchitecture.Address, codeSize: BreakWorldArchitecture.ByteSize] RETURNS [Patch]; <> ReleasePatch: PROCEDURE [patch: Patch] RETURNS []; <> IsNullPatch: PROCEDURE [patch: Patch] RETURNS [BOOLEAN]; IsBusyPC: PROCEDURE [pc: BreakWorldArchitecture.Address] RETURNS [BOOLEAN]; MeadowFromPatch: PROCEDURE [patch: Patch] RETURNS [Meadow]; <<>> PCFromPatch: PROCEDURE [patch: Patch] RETURNS [BreakWorldArchitecture.Address]; <<>> PatchAddressFromPatch: PROCEDURE [patch: Patch] RETURNS [BreakWorldArchitecture.Address]; <<>> CodeAddressFromPatch: PROCEDURE [patch: Patch] RETURNS [BreakWorldArchitecture.Address]; <<>> PatchFromPC: PROCEDURE [pc: BreakWorldArchitecture.Address] RETURNS [Patch]; <<>> IsAllocatedPatch: PROCEDURE [patch: Patch] RETURNS [BOOLEAN]; <> ErrorMessage: TYPE ~ Rope.ROPE _ nullErrorMessage; nullErrorMessage: ErrorMessage ~ NIL; NoRoom: ERROR [message: ErrorMessage]; NoMeadow: ERROR [message: ErrorMessage]; BusyMeadow: ERROR [message: ErrorMessage]; BusyPC: ERROR [message: ErrorMessage]; CantReach: ERROR [message: ErrorMessage]; Cant: ERROR [message: ErrorMessage]; }.