--******************************************************************************************************************** -- Created: 9-Nov-2023 12:06:11 by OpenVMS SDL V3.7 -- Source: 19-OCT-2022 11:28:36 $1$DGA8345:[STARLET_ADA.LIS]PMMDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package PMMDEF is -- module $PMMDEF --+ -- PFN memory data structure definition. This structure is used to access the -- fields within the PFN memory map returned by $GETSYI. $GETSYI copies the -- contents of the pool packet stored at MMG$GL_SYI_PFN_MEMORY_MAP to a -- user-supplied buffer. --- PMM_M_CONSOLE : constant := 16#00000001#; PMM_M_OPENVMS : constant := 16#00000002#; PMM_M_AVAILABLE : constant := 16#00000004#; PMM_M_BASE : constant := 16#00000008#; PMM_M_GALAXY_SHARED : constant := 16#00000010#; PMM_M_UNDEFINED_5_15 : constant := 16#0000FFE0#; PMM_C_LENGTH : constant := 12; -- Length of structure PMM_K_LENGTH : constant := 12; -- Length of structure type PMM_FLAGS_TYPE is record CONSOLE : BOOLEAN; -- Used by Console OPENVMS : BOOLEAN; -- Used by OpenVMS AVAILABLE : BOOLEAN; -- Available for Other Uses BASE : BOOLEAN; -- Galaxy base memory segment GALAXY_SHARED : BOOLEAN; -- Galaxy shared memory UNDEFINED_5_15 : UNSIGNED_11; -- Undefined bits should be zero end record; for PMM_FLAGS_TYPE use record CONSOLE at 0 range 0 .. 0; OPENVMS at 0 range 1 .. 1; AVAILABLE at 0 range 2 .. 2; BASE at 0 range 3 .. 3; GALAXY_SHARED at 0 range 4 .. 4; UNDEFINED_5_15 at 0 range 5 .. 15; end record; for PMM_FLAGS_TYPE'SIZE use 16; PMM_FLAGS_TYPE_INIT : constant PMM_FLAGS_TYPE := (CONSOLE => FALSE, OPENVMS => FALSE, AVAILABLE => FALSE, BASE => FALSE, GALAXY_SHARED => FALSE, UNDEFINED_5_15 => 0); type PMM_TYPE is record LENGTH : INTEGER_16; -- Size of a PMM structure FLAGS : PMM_FLAGS_TYPE; START_PFN : UNSIGNED_LONGWORD; -- First PFN in this cluster PFN_COUNT : UNSIGNED_LONGWORD; -- Number of PFNs in this cluster end record; for PMM_TYPE use record LENGTH at 0 range 0 .. 15; FLAGS at 2 range 0 .. 15; START_PFN at 4 range 0 .. 31; PFN_COUNT at 8 range 0 .. 31; end record; for PMM_TYPE'SIZE use 96; PMM_TYPE_INIT : constant PMM_TYPE := (LENGTH => 0, FLAGS => PMM_FLAGS_TYPE_INIT, START_PFN => 0, PFN_COUNT => 0); -- Expanded version for larger PFNs PMM64_M_CONSOLE : constant := 16#00000001#; PMM64_M_OPENVMS : constant := 16#00000002#; PMM64_M_AVAILABLE : constant := 16#00000004#; PMM64_M_BASE : constant := 16#00000008#; PMM64_M_GALAXY_SHARED : constant := 16#00000010#; PMM64_M_MEMORY_DISK : constant := 16#00000020#; PMM64_M_UEFI_PAGE_TABLE : constant := 16#00000040#; PMM64_M_KERNEL_BASE : constant := 16#00000080#; PMM64_M_HWRPB : constant := 16#00000100#; PMM64_M_UNDEFINED_9_15 : constant := 16#0000FE00#; PMM64_C_LENGTH : constant := 24; -- Length of structure PMM64_K_LENGTH : constant := 24; -- Length of structure type PMM64_FLAGS_TYPE is record CONSOLE : BOOLEAN; -- Used by Console OPENVMS : BOOLEAN; -- Used by OpenVMS AVAILABLE : BOOLEAN; -- Available for Other Uses BASE : BOOLEAN; -- Galaxy base memory segment GALAXY_SHARED : BOOLEAN; -- Galaxy shared memory MEMORY_DISK : BOOLEAN; -- x86 only, boot memory disk, console also set UEFI_PAGE_TABLE : BOOLEAN; -- x86 only, console also set KERNEL_BASE : BOOLEAN; -- x86 only, console also set HWRPB : BOOLEAN; -- x86 only, console also set UNDEFINED_9_15 : UNSIGNED_7; -- Undefined bits should be zero end record; for PMM64_FLAGS_TYPE use record CONSOLE at 0 range 0 .. 0; OPENVMS at 0 range 1 .. 1; AVAILABLE at 0 range 2 .. 2; BASE at 0 range 3 .. 3; GALAXY_SHARED at 0 range 4 .. 4; MEMORY_DISK at 0 range 5 .. 5; UEFI_PAGE_TABLE at 0 range 6 .. 6; KERNEL_BASE at 0 range 7 .. 7; HWRPB at 1 range 0 .. 0; UNDEFINED_9_15 at 1 range 1 .. 7; end record; for PMM64_FLAGS_TYPE'SIZE use 16; PMM64_FLAGS_TYPE_INIT : constant PMM64_FLAGS_TYPE := (CONSOLE => FALSE, OPENVMS => FALSE, AVAILABLE => FALSE, BASE => FALSE, GALAXY_SHARED => FALSE, MEMORY_DISK => FALSE, UEFI_PAGE_TABLE => FALSE, KERNEL_BASE => FALSE, HWRPB => FALSE, UNDEFINED_9_15 => 0); type PMM64_TYPE is record LENGTH : INTEGER_16; -- Size of a PMM structure FLAGS : PMM64_FLAGS_TYPE; RESERVED : UNSIGNED_LONGWORD; -- padding START_PFN : UNSIGNED_QUADWORD; -- First PFN in this cluster PFN_COUNT : UNSIGNED_QUADWORD; -- Number of PFNs in this cluster end record; for PMM64_TYPE use record LENGTH at 0 range 0 .. 15; FLAGS at 2 range 0 .. 15; RESERVED at 4 range 0 .. 31; START_PFN at 8 range 0 .. 63; PFN_COUNT at 16 range 0 .. 63; end record; for PMM64_TYPE'SIZE use 192; PMM64_TYPE_INIT : constant PMM64_TYPE := (LENGTH => 0, FLAGS => PMM64_FLAGS_TYPE_INIT, RESERVED => 0, START_PFN => (0, 0), PFN_COUNT => (0, 0)); end PMMDEF;