--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:28 by OpenVMS SDL EV3-3 -- Source: 11-MAY-1993 14:19:26 $1$DGA8085:[LIB_ADA.LIS]ISDDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package ISDDEF is -- module $ISDDEF --+ -- IMAGE SECTION DESCRIPTOR DEFINITIONS --- ISD_K_LENDZRO : constant := 12; -- LENGTH OF DEMAND ZERO ISD ISD_C_LENDZRO : constant := 12; -- LENGTH OF DEMAND ZERO ISD ISD_M_GBL : constant := 16#00000001#; ISD_M_CRF : constant := 16#00000002#; ISD_M_DZRO : constant := 16#00000004#; ISD_M_WRT : constant := 16#00000008#; ISD_M_MATCHCTL : constant := 16#00000070#; ISD_M_LASTCLU : constant := 16#00000080#; ISD_M_INITALCODE : constant := 16#00000100#; ISD_M_BASED : constant := 16#00000200#; ISD_M_FIXUPVEC : constant := 16#00000400#; ISD_M_RESIDENT : constant := 16#00000800#; ISD_M_VECTOR : constant := 16#00020000#; ISD_M_PROTECT : constant := 16#00040000#; ISD_S_FLAGSIZ : constant := 24; -- NUMBER OF FLAG BITS, ISD TYPE EXCLUDED ISD_K_LENPRIV : constant := 16; -- LENGTH OF PRIVATE ISD ISD_C_LENPRIV : constant := 16; -- LENGTH OF PRIVATE ISD ISD_K_LENGLBL : constant := 36; -- LENGTH OF OLD GLOBAL ISD ISD_C_LENGLBL : constant := 36; -- LENGTH OF OLD GLOBAL ISD ISD_K_MAXLENGLBL : constant := 64; -- MAX LENGTH OF NEW GLOBAL ISD ISD_C_MAXLENGLBL : constant := 64; -- MAX LENGTH OF NEW GLOBAL ISD --+ ISD_K_MATALL : constant := 0; -- MATCH ALWAYS, USE GLOBAL SECTION ISD_K_MATEQU : constant := 1; -- MATCH IF ISD$L_IDENT EQU GBL ID ISD_K_MATLEQ : constant := 2; -- MATCH IF ISD$L_IDENT LEQ GBL ID ISD_K_MATNEV : constant := 3; -- MATCH NEVER, USE PRIVATE COPY --+ ISD_K_NORMAL : constant := 0; -- NORMAL PROGRAM IMAGE SECTION --NO SPECIAL ACTION REQUIRED ISD_K_SHRFXD : constant := 1; -- SHAREABLE FIXED SECTION ISD_K_PRVFXD : constant := 2; -- PRIVATE FIXED SECTION ISD_K_SHRPIC : constant := 3; -- SHAREABLE PIC SECTION ISD_K_PRVPIC : constant := 4; -- PRIVATE PIC SECTION ISD_K_USRSTACK : constant := 253; -- USER STACK SECTION ISD_S_ISDDEF : constant := 64; -- Old size name - synonym type ISD_VPNPFC_BITS1_TYPE is record VPG : UNSIGNED_23; -- VIRTUAL PAGE INCLUDING P1 & S FILLER_1 : BOOLEAN; end record; for ISD_VPNPFC_BITS1_TYPE use record VPG at 0 range 0 .. 22; FILLER_1 at 2 range 7 .. 7; end record; for ISD_VPNPFC_BITS1_TYPE'SIZE use 24; ISD_VPNPFC_BITS1_TYPE_INIT : constant ISD_VPNPFC_BITS1_TYPE := (VPG => 0, FILLER_1 => FALSE); type ISD_VPNPFC_FIELDS2_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 3); PFC : UNSIGNED_BYTE; -- PAGE FAULT CLUSTER end record; for ISD_VPNPFC_FIELDS2_TYPE use record FILLER_1 at 0 range 0 .. 23; PFC at 3 range 0 .. 7; end record; for ISD_VPNPFC_FIELDS2_TYPE'SIZE use 32; ISD_VPNPFC_FIELDS2_TYPE_INIT : constant ISD_VPNPFC_FIELDS2_TYPE := (FILLER_1 => (others => 0), PFC => 0); type ISD_VPNPFC_TYPE is -- VPN & PFC VIELDS record VPN : UNSIGNED_21; -- STARTING VIRTUAL PAGE NUMBER P1 : BOOLEAN; -- P1 SPACE SYSTEM : BOOLEAN; -- SYSTEM SPACE FILLER_1 : BOOLEAN; -- SPARE PFC : UNSIGNED_8; -- PAGE FAULT CLUSTER ----Component(s) below are defined as comments since they ----overlap other fields ---- ----VPNPFC_BITS1 : ISD_VPNPFC_BITS1_TYPE; ----VPNPFC_FIELDS2 : ISD_VPNPFC_FIELDS2_TYPE; end record; for ISD_VPNPFC_TYPE use record VPN at 0 range 0 .. 20; P1 at 2 range 5 .. 5; SYSTEM at 2 range 6 .. 6; FILLER_1 at 2 range 7 .. 7; PFC at 3 range 0 .. 7; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----VPNPFC_BITS1 at 0 range 0 .. 23; ----VPNPFC_FIELDS2 at 0 range 0 .. 31; end record; for ISD_VPNPFC_TYPE'SIZE use 32; ISD_VPNPFC_TYPE_INIT : constant ISD_VPNPFC_TYPE := (VPN => 0, P1 => FALSE, SYSTEM => FALSE, FILLER_1 => FALSE, PFC => 0); type ISD_FLAGS_FIELDS_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 3); TYP : UNSIGNED_BYTE; -- ISD TYPE CODE end record; for ISD_FLAGS_FIELDS_TYPE use record FILLER_1 at 0 range 0 .. 23; TYP at 3 range 0 .. 7; end record; for ISD_FLAGS_FIELDS_TYPE'SIZE use 32; ISD_FLAGS_FIELDS_TYPE_INIT : constant ISD_FLAGS_FIELDS_TYPE := (FILLER_1 => (others => 0), TYP => 0); type ISD_FLAGS_TYPE is -- FLAGS AND ISD TYPE record GBL : BOOLEAN; -- GLOBAL CRF : BOOLEAN; -- COPY ON REFERENCE DZRO : BOOLEAN; -- DEMAND ZERO PAGE WRT : BOOLEAN; -- WRITABLE MATCHCTL : UNSIGNED_3; -- IDENT MATCH CONTROL FIELD LASTCLU : BOOLEAN; -- ISD IS PART OF LAST P0 SPACE CLUSTER INITALCODE : BOOLEAN; -- ISD IS PART OF INITIALIZATION CODE BASED : BOOLEAN; -- ISECT IS BASED FIXUPVEC : BOOLEAN; -- ISECT IS FIXUP SECTION RESIDENT : BOOLEAN; -- ISECT IS MEMORY-RESIDENT FILLER_1 : UNSIGNED_5; -- UNUSED, RESERVED FOR FUTURE USE VECTOR : BOOLEAN; -- VECTOR CONTAINED IN IMAGE SECTION PROTECT : BOOLEAN; -- IMAGE SECTION IS PROTECTED FILLER_2 : UNSIGNED_13; -- UNUSED, RESERVED FOR FUTURE USE ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FLAGS_FIELDS : ISD_FLAGS_FIELDS_TYPE; end record; for ISD_FLAGS_TYPE use record GBL at 0 range 0 .. 0; CRF at 0 range 1 .. 1; DZRO at 0 range 2 .. 2; WRT at 0 range 3 .. 3; MATCHCTL at 0 range 4 .. 6; LASTCLU at 0 range 7 .. 7; INITALCODE at 1 range 0 .. 0; BASED at 1 range 1 .. 1; FIXUPVEC at 1 range 2 .. 2; RESIDENT at 1 range 3 .. 3; FILLER_1 at 1 range 4 .. 8; VECTOR at 2 range 1 .. 1; PROTECT at 2 range 2 .. 2; FILLER_2 at 2 range 3 .. 15; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FLAGS_FIELDS at 0 range 0 .. 31; end record; for ISD_FLAGS_TYPE'SIZE use 32; ISD_FLAGS_TYPE_INIT : constant ISD_FLAGS_TYPE := (GBL => FALSE, CRF => FALSE, DZRO => FALSE, WRT => FALSE, MATCHCTL => 0, LASTCLU => FALSE, INITALCODE => FALSE, BASED => FALSE, FIXUPVEC => FALSE, RESIDENT => FALSE, FILLER_1 => 0, VECTOR => FALSE, PROTECT => FALSE, FILLER_2 => 0); type ISD_TYPE is record SIZE : UNSIGNED_WORD; -- SIZE IN BYTES OF THIS ISD PAGCNT : UNSIGNED_WORD; -- ! OF PAGES DESCRIBED BY THIS ISD VPNPFC : ISD_VPNPFC_TYPE; -- VPN & PFC VIELDS FLAGS : ISD_FLAGS_TYPE; -- FLAGS AND ISD TYPE VBN : UNSIGNED_LONGWORD; -- BASE VIRTUAL BLOCK NUMBER IDENT : UNSIGNED_LONGWORD; -- IDENT FOR GLOBAL SECTION GBLNAM : STRING(1 .. 44); -- GLOBAL NAME COUNTED STRING -- MATCH CONTROL VIELD VALUES -- - -- BASE OF ZERO , INCR 1 -- ISD TYPE FIELD DEFINITIONS -- - end record; for ISD_TYPE use record SIZE at 0 range 0 .. 15; PAGCNT at 2 range 0 .. 15; VPNPFC at 4 range 0 .. 31; FLAGS at 8 range 0 .. 31; VBN at 12 range 0 .. 31; IDENT at 16 range 0 .. 31; GBLNAM at 20 range 0 .. 351; end record; for ISD_TYPE'SIZE use 512; ISD_TYPE_INIT : constant ISD_TYPE := (SIZE => 0, PAGCNT => 0, VPNPFC => ISD_VPNPFC_TYPE_INIT, FLAGS => ISD_FLAGS_TYPE_INIT, VBN => 0, IDENT => 0, GBLNAM => (others => ASCII.NUL)); end ISDDEF;