--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:16 by OpenVMS SDL EV3-3 -- Source: 13-MAR-1996 14:11:05 $1$DGA8085:[LIB_ADA.LIS]ASTSTKDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package ASTSTKDEF is -- module $ASTSTKDEF -- -- AST stack - this defines the architected stack contents during -- an AST. -- -- This also contains a definition of the stack frame for SCH$ASTDEL(_K). -- Offsets are defined both as positive from the base of the stack frame, and -- as negative from the base of the ASTSTK$ structure. -- -- It would be nice if ORIGIN could be used to let SDL do this, but the C -- backend doesn't know what to do with ORIGIN. -- ASTSTK_M_FEN : constant := 16#00000001#; ASTSTK_M_FP_SAVE_DELAYED : constant := 16#00000002#; ASTSTK_M_FP_SAVE_ENABLE : constant := 16#00000004#; ASTSTK_M_FP_RECLEAR_FEN : constant := 16#00000008#; ASTSTK_ASTDEL_FRAME_Q_FP : constant := -8; ASTSTK_ASTDEL_FRAME_Q_R14 : constant := -16; ASTSTK_ASTDEL_FRAME_Q_R13 : constant := -24; ASTSTK_ASTDEL_FRAME_Q_RET_PC : constant := -32; ASTSTK_ASTDEL_FRAME_Q_HANDLER : constant := -40; ASTSTK_ASTDEL_FRAME_Q_PV : constant := -48; ASTDEL_FRAME_K_SIZE : constant := 48; ASTDEL_FRAME_C_SIZE : constant := 48; ASTSTK_K_NO_FEN_LENGTH : constant := 144; ASTSTK_C_NO_FEN_LENGTH : constant := 144; ASTSTK_K_FEN_LENGTH : constant := 336; ASTSTK_C_FEN_LENGTH : constant := 336; ASTSTK_S_ASTSTKDEF : constant := 336; type ASTSTK_FLAGS_TYPE is record FEN : BOOLEAN; -- Floating point enabled FP_SAVE_DELAYED : BOOLEAN; -- FP register save delayed FP_SAVE_ENABLE : BOOLEAN; -- Don't save without this bit set FP_RECLEAR_FEN : BOOLEAN; -- If set, clear FEN after ast FILLER_1 : BIT_ARRAY (0 .. 59); end record; for ASTSTK_FLAGS_TYPE use record FEN at 0 range 0 .. 0; FP_SAVE_DELAYED at 0 range 1 .. 1; FP_SAVE_ENABLE at 0 range 2 .. 2; FP_RECLEAR_FEN at 0 range 3 .. 3; FILLER_1 at 0 range 4 .. 63; end record; for ASTSTK_FLAGS_TYPE'SIZE use 64; ASTSTK_FLAGS_TYPE_INIT : constant ASTSTK_FLAGS_TYPE := (FEN => FALSE, FP_SAVE_DELAYED => FALSE, FP_SAVE_ENABLE => FALSE, FP_RECLEAR_FEN => FALSE, FILLER_1 => (others => FALSE)); type ASTSTK_BASE_OVERLAY_TYPE is record PV : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FLAGS : ASTSTK_FLAGS_TYPE; end record; for ASTSTK_BASE_OVERLAY_TYPE use record PV at 0 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FLAGS at 0 range 0 .. 63; end record; for ASTSTK_BASE_OVERLAY_TYPE'SIZE use 64; ASTSTK_BASE_OVERLAY_TYPE_INIT : constant ASTSTK_BASE_OVERLAY_TYPE := (PV => (0, 0)); type ASTSTK_TYPE is record BASE_OVERLAY : ASTSTK_BASE_OVERLAY_TYPE; NO_FEN_R0 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F0 : UNSIGNED_QUADWORD; ----HANDLER : UNSIGNED_QUADWORD; NO_FEN_R1 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F1 : UNSIGNED_QUADWORD; ----RET_PC : UNSIGNED_QUADWORD; NO_FEN_R16 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F10 : UNSIGNED_QUADWORD; ----R13 : UNSIGNED_QUADWORD; NO_FEN_R17 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F11 : UNSIGNED_QUADWORD; ----R14 : UNSIGNED_QUADWORD; NO_FEN_R18 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F12 : UNSIGNED_QUADWORD; ----FP : UNSIGNED_QUADWORD; NO_FEN_R19 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F13 : UNSIGNED_QUADWORD; NO_FEN_R20 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F14 : UNSIGNED_QUADWORD; NO_FEN_R21 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F15 : UNSIGNED_QUADWORD; NO_FEN_R22 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F16 : UNSIGNED_QUADWORD; NO_FEN_R23 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F17 : UNSIGNED_QUADWORD; NO_FEN_R24 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F18 : UNSIGNED_QUADWORD; NO_FEN_R25 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F19 : UNSIGNED_QUADWORD; NO_FEN_R26 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F20 : UNSIGNED_QUADWORD; NO_FEN_R27 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F21 : UNSIGNED_QUADWORD; NO_FEN_R28 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F22 : UNSIGNED_QUADWORD; NO_FEN_R29 : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F23 : UNSIGNED_QUADWORD; NO_FEN_FILL : UNSIGNED_QUADWORD; -- Fill to ensure octaword alignment ----Component(s) below are defined as comments since they ----overlap other fields ---- ----F24 : UNSIGNED_QUADWORD; F25 : UNSIGNED_QUADWORD; F26 : UNSIGNED_QUADWORD; F27 : UNSIGNED_QUADWORD; F28 : UNSIGNED_QUADWORD; F29 : UNSIGNED_QUADWORD; F30 : UNSIGNED_QUADWORD; F31 : UNSIGNED_QUADWORD; -- Placeholder for octword alignment FEN_R0 : UNSIGNED_QUADWORD; FEN_R1 : UNSIGNED_QUADWORD; FEN_R16 : UNSIGNED_QUADWORD; FEN_R17 : UNSIGNED_QUADWORD; FEN_R18 : UNSIGNED_QUADWORD; FEN_R19 : UNSIGNED_QUADWORD; FEN_R20 : UNSIGNED_QUADWORD; FEN_R21 : UNSIGNED_QUADWORD; FEN_R22 : UNSIGNED_QUADWORD; FEN_R23 : UNSIGNED_QUADWORD; FEN_R24 : UNSIGNED_QUADWORD; FEN_R25 : UNSIGNED_QUADWORD; FEN_R26 : UNSIGNED_QUADWORD; FEN_R27 : UNSIGNED_QUADWORD; FEN_R28 : UNSIGNED_QUADWORD; FEN_R29 : UNSIGNED_QUADWORD; FEN_FILL : UNSIGNED_QUADWORD; -- Fill to ensure octaword alignment end record; for ASTSTK_TYPE use record BASE_OVERLAY at 0 range 0 .. 63; NO_FEN_R0 at 8 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F0 at 8 range 0 .. 63; ----HANDLER at 8 range 0 .. 63; NO_FEN_R1 at 16 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F1 at 16 range 0 .. 63; ----RET_PC at 16 range 0 .. 63; NO_FEN_R16 at 24 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F10 at 24 range 0 .. 63; ----R13 at 24 range 0 .. 63; NO_FEN_R17 at 32 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F11 at 32 range 0 .. 63; ----R14 at 32 range 0 .. 63; NO_FEN_R18 at 40 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F12 at 40 range 0 .. 63; ----FP at 40 range 0 .. 63; NO_FEN_R19 at 48 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F13 at 48 range 0 .. 63; NO_FEN_R20 at 56 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F14 at 56 range 0 .. 63; NO_FEN_R21 at 64 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F15 at 64 range 0 .. 63; NO_FEN_R22 at 72 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F16 at 72 range 0 .. 63; NO_FEN_R23 at 80 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F17 at 80 range 0 .. 63; NO_FEN_R24 at 88 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F18 at 88 range 0 .. 63; NO_FEN_R25 at 96 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F19 at 96 range 0 .. 63; NO_FEN_R26 at 104 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F20 at 104 range 0 .. 63; NO_FEN_R27 at 112 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F21 at 112 range 0 .. 63; NO_FEN_R28 at 120 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F22 at 120 range 0 .. 63; NO_FEN_R29 at 128 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F23 at 128 range 0 .. 63; NO_FEN_FILL at 136 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----F24 at 136 range 0 .. 63; F25 at 144 range 0 .. 63; F26 at 152 range 0 .. 63; F27 at 160 range 0 .. 63; F28 at 168 range 0 .. 63; F29 at 176 range 0 .. 63; F30 at 184 range 0 .. 63; F31 at 192 range 0 .. 63; FEN_R0 at 200 range 0 .. 63; FEN_R1 at 208 range 0 .. 63; FEN_R16 at 216 range 0 .. 63; FEN_R17 at 224 range 0 .. 63; FEN_R18 at 232 range 0 .. 63; FEN_R19 at 240 range 0 .. 63; FEN_R20 at 248 range 0 .. 63; FEN_R21 at 256 range 0 .. 63; FEN_R22 at 264 range 0 .. 63; FEN_R23 at 272 range 0 .. 63; FEN_R24 at 280 range 0 .. 63; FEN_R25 at 288 range 0 .. 63; FEN_R26 at 296 range 0 .. 63; FEN_R27 at 304 range 0 .. 63; FEN_R28 at 312 range 0 .. 63; FEN_R29 at 320 range 0 .. 63; FEN_FILL at 328 range 0 .. 63; end record; for ASTSTK_TYPE'SIZE use 2688; ASTSTK_TYPE_INIT : constant ASTSTK_TYPE := ( BASE_OVERLAY => ASTSTK_BASE_OVERLAY_TYPE_INIT, NO_FEN_R0 => (0, 0), NO_FEN_R1 => (0, 0), NO_FEN_R16 => (0, 0), NO_FEN_R17 => (0, 0), NO_FEN_R18 => (0, 0), NO_FEN_R19 => (0, 0), NO_FEN_R20 => (0, 0), NO_FEN_R21 => (0, 0), NO_FEN_R22 => (0, 0), NO_FEN_R23 => (0, 0), NO_FEN_R24 => (0, 0), NO_FEN_R25 => (0, 0), NO_FEN_R26 => (0, 0), NO_FEN_R27 => (0, 0), NO_FEN_R28 => (0, 0), NO_FEN_R29 => (0, 0), NO_FEN_FILL => (0, 0), F25 => (0, 0), F26 => (0, 0), F27 => (0, 0), F28 => (0, 0), F29 => (0, 0), F30 => (0, 0), F31 => (0, 0), FEN_R0 => (0, 0), FEN_R1 => (0, 0), FEN_R16 => (0, 0), FEN_R17 => (0, 0), FEN_R18 => (0, 0), FEN_R19 => (0, 0), FEN_R20 => (0, 0), FEN_R21 => (0, 0), FEN_R22 => (0, 0), FEN_R23 => (0, 0), FEN_R24 => (0, 0), FEN_R25 => (0, 0), FEN_R26 => (0, 0), FEN_R27 => (0, 0), FEN_R28 => (0, 0), FEN_R29 => (0, 0), FEN_FILL => (0, 0)); end ASTSTKDEF;