--******************************************************************************************************************** -- Created: 30-Mar-2010 17:33:20 by OpenVMS SDL EV3-3 -- Source: 16-APR-1998 16:19:46 $1$DGA7274:[LIB_ADA.LIS]EISDDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package EISDDEF is -- module $EISDDEF --+ -- EXTENDED IMAGE SECTION DESCRIPTOR DEFINITIONS --- EISD_K_MAJORID : constant := 1; EISD_K_MINORID : constant := 1; EISD_M_GBL : constant := 16#00000001#; EISD_M_CRF : constant := 16#00000002#; EISD_M_DZRO : constant := 16#00000004#; EISD_M_WRT : constant := 16#00000008#; EISD_M_INITALCODE : constant := 16#00000010#; EISD_M_BASED : constant := 16#00000020#; EISD_M_FIXUPVEC : constant := 16#00000040#; EISD_M_RESIDENT : constant := 16#00000080#; EISD_M_VECTOR : constant := 16#00000100#; EISD_M_PROTECT : constant := 16#00000200#; EISD_M_LASTCLU : constant := 16#00000400#; EISD_M_EXE : constant := 16#00000800#; EISD_M_NONSHRADR : constant := 16#00001000#; EISD_M_QUAD_LENGTH : constant := 16#00002000#; EISD_M_ALLOC_64BIT : constant := 16#00004000#; EISD_K_LENDZRO : constant := 36; -- LENGTH OF DEMAND ZERO ISD (OR STACK ISD) EISD_C_LENDZRO : constant := 36; -- LENGTH OF DEMAND ZERO ISD (OR STACK ISD) EISD_K_LENPRIV : constant := 36; -- LENGTH OF PRIVATE ISD EISD_C_LENPRIV : constant := 36; -- LENGTH OF PRIVATE ISD EISD_K_LENGLBL : constant := 56; -- LENGTH OF OLD GLOBAL ISD EISD_C_LENGLBL : constant := 56; -- LENGTH OF OLD GLOBAL ISD EISD_K_MAXLENGLBL : constant := 84; -- MAX LENGTH OF NEW GLOBAL ISD EISD_C_MAXLENGLBL : constant := 84; -- MAX LENGTH OF NEW GLOBAL ISD --+ EISD_K_MATALL : constant := 0; -- MATCH ALWAYS, USE GLOBAL SECTION EISD_K_MATEQU : constant := 1; -- MATCH IF ISD$L_IDENT EQU GBL ID EISD_K_MATLEQ : constant := 2; -- MATCH IF ISD$L_IDENT LEQ GBL ID EISD_K_MATNEV : constant := 3; -- MATCH NEVER, USE PRIVATE COPY --+ EISD_K_NORMAL : constant := 0; -- NORMAL PROGRAM IMAGE SECTION --NO SPECIAL ACTION REQUIRED EISD_K_SHRFXD : constant := 1; -- SHAREABLE FIXED SECTION EISD_K_PRVFXD : constant := 2; -- PRIVATE FIXED SECTION EISD_K_SHRPIC : constant := 3; -- SHAREABLE PIC SECTION EISD_K_PRVPIC : constant := 4; -- PRIVATE PIC SECTION EISD_K_USRSTACK : constant := 253; -- USER STACK SECTION EISD_S_EISDDEF : constant := 84; -- Old size name - synonym type EISD_VERSION_TYPE is -- Version of this EISD record MAJORID : UNSIGNED_LONGWORD; -- Major ID MINORID : UNSIGNED_LONGWORD; -- Minor ID end record; for EISD_VERSION_TYPE use record MAJORID at 0 range 0 .. 31; MINORID at 4 range 0 .. 31; end record; for EISD_VERSION_TYPE'SIZE use 64; EISD_VERSION_TYPE_INIT : constant EISD_VERSION_TYPE := (MAJORID => 0, MINORID => 0); type EISD_VA_BITS_TYPE is record VADDR : UNSIGNED_30; -- Virtual address in region P1 : BOOLEAN; -- P1 SPACE SYSTEM : BOOLEAN; -- SYSTEM SPACE end record; for EISD_VA_BITS_TYPE use record VADDR at 0 range 0 .. 29; P1 at 3 range 6 .. 6; SYSTEM at 3 range 7 .. 7; end record; for EISD_VA_BITS_TYPE'SIZE use 32; EISD_VA_BITS_TYPE_INIT : constant EISD_VA_BITS_TYPE := (VADDR => 0, P1 => FALSE, SYSTEM => FALSE); type EISD_FLAGS_TYPE is -- FLAGS AND ISD TYPE record GBL : BOOLEAN; -- GLOBAL CRF : BOOLEAN; -- COPY ON REFERENCE DZRO : BOOLEAN; -- DEMAND ZERO PAGE WRT : BOOLEAN; -- WRITABLE 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 VECTOR : BOOLEAN; -- VECTOR CONTAINED IN IMAGE SECTION PROTECT : BOOLEAN; -- IMAGE SECTION IS PROTECTED LASTCLU : BOOLEAN; -- LAST CLUSTER EXE : BOOLEAN; -- IF SET, THIS IS A CODE IMAGE SECTION NONSHRADR : BOOLEAN; -- IF SET, SECTION CONTAINS NON-SHAREABLE ADDRESS DATA QUAD_LENGTH : BOOLEAN; -- If set, quad length field (eisd$q_secsize) is valid ALLOC_64BIT : BOOLEAN; -- If set, allocate in 64-bit space FILLER_1 : UNSIGNED_17; end record; for EISD_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; INITALCODE at 0 range 4 .. 4; BASED at 0 range 5 .. 5; FIXUPVEC at 0 range 6 .. 6; RESIDENT at 0 range 7 .. 7; VECTOR at 1 range 0 .. 0; PROTECT at 1 range 1 .. 1; LASTCLU at 1 range 2 .. 2; EXE at 1 range 3 .. 3; NONSHRADR at 1 range 4 .. 4; QUAD_LENGTH at 1 range 5 .. 5; ALLOC_64BIT at 1 range 6 .. 6; FILLER_1 at 1 range 7 .. 23; end record; for EISD_FLAGS_TYPE'SIZE use 32; EISD_FLAGS_TYPE_INIT : constant EISD_FLAGS_TYPE := (GBL => FALSE, CRF => FALSE, DZRO => FALSE, WRT => FALSE, INITALCODE => FALSE, BASED => FALSE, FIXUPVEC => FALSE, RESIDENT => FALSE, VECTOR => FALSE, PROTECT => FALSE, LASTCLU => FALSE, EXE => FALSE, NONSHRADR => FALSE, QUAD_LENGTH => FALSE, ALLOC_64BIT => FALSE, FILLER_1 => 0); type EISD_CONTROL_TYPE is -- Conrtol fields record PFC : UNSIGNED_BYTE; -- Page faule cluster MATCHCTL : UNSIGNED_BYTE; -- Linker match control TYP : UNSIGNED_BYTE; -- Section type FILLER_1 : UNSIGNED_BYTE; -- filler end record; for EISD_CONTROL_TYPE use record PFC at 0 range 0 .. 7; MATCHCTL at 1 range 0 .. 7; TYP at 2 range 0 .. 7; FILLER_1 at 3 range 0 .. 7; end record; for EISD_CONTROL_TYPE'SIZE use 32; EISD_CONTROL_TYPE_INIT : constant EISD_CONTROL_TYPE := (PFC => 0, MATCHCTL => 0, TYP => 0, FILLER_1 => 0); type EISD_TYPE is record VERSION : EISD_VERSION_TYPE; -- Version of this EISD EISDSIZE : UNSIGNED_LONGWORD; -- SIZE IN BYTES OF THIS EISD SECSIZE : UNSIGNED_LONGWORD; -- SIZE OF SECTION IN BYTES DESCRIBED BY THIS ISD VIRT_ADDR : UNSIGNED_QUADWORD; -- Virtual address of section ----Component(s) below are defined as comments since they ----overlap other fields ---- ----VIRT_ADDR : ADDRESS; -- low 32 bits of virtual address ----VA_BITS : EISD_VA_BITS_TYPE; FLAGS : EISD_FLAGS_TYPE; -- FLAGS AND ISD TYPE VBN : UNSIGNED_LONGWORD; -- BASE VIRTUAL BLOCK NUMBER CONTROL : EISD_CONTROL_TYPE; -- Conrtol fields IDENT : UNSIGNED_LONGWORD; -- IDENT FOR GLOBAL SECTION GBLNAM : STRING(1 .. 44); -- GLOBAL NAME COUNTED STRING ----Component(s) below are defined as comments since they ----overlap other fields ---- ----SECSIZE : UNSIGNED_QUADWORD; -- Quadword size for 64-bit sections -- MATCH CONTROL VIELD VALUES -- - -- BASE OF ZERO , INCR 1 -- ISD TYPE FIELD DEFINITIONS -- - end record; for EISD_TYPE use record VERSION at 0 range 0 .. 63; EISDSIZE at 8 range 0 .. 31; SECSIZE at 12 range 0 .. 31; VIRT_ADDR at 16 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----VIRT_ADDR at 16 range 0 .. 31; ----VA_BITS at 16 range 0 .. 31; FLAGS at 24 range 0 .. 31; VBN at 28 range 0 .. 31; CONTROL at 32 range 0 .. 31; IDENT at 36 range 0 .. 31; GBLNAM at 40 range 0 .. 351; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----SECSIZE at 40 range 0 .. 63; end record; for EISD_TYPE'SIZE use 672; EISD_TYPE_INIT : constant EISD_TYPE := ( VERSION => EISD_VERSION_TYPE_INIT, EISDSIZE => 0, SECSIZE => 0, VIRT_ADDR => (0, 0), FLAGS => EISD_FLAGS_TYPE_INIT, VBN => 0, CONTROL => EISD_CONTROL_TYPE_INIT, IDENT => 0, GBLNAM => (others => ASCII.NUL) ); end EISDDEF;