! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! + ! VIRTUAL ADDRESS VIELDS ! - DECLARE LONG CONSTANT VA$M_P1 = x'40000000' DECLARE LONG CONSTANT VA$M_SYSTEM = x'80000000' DECLARE LONG CONSTANT VA$M_BYTES_PER_PAGELET = x'000001FF' DECLARE LONG CONSTANT VA$M_BYTE_IN_PAGELET = x'000001FF' DECLARE LONG CONSTANT VA$M_VRN = x'00000000' DECLARE LONG CONSTANT VA$C_VRN_SYSTEM = 7 ! VRN for system space DECLARE LONG CONSTANT VA$C_REGION_COUNT = 8 ! Number of virtual regions DECLARE LONG CONSTANT VA$M_VRNX = x'00000000' DECLARE LONG CONSTANT VA$C_VRNX_SYSTEM = 15 ! VRNX for system space DECLARE LONG CONSTANT VA$C_VRNX_COUNT = 16 ! Number of virtual address spaces DECLARE LONG CONSTANT VA$S_VADEF = 8 DECLARE LONG CONSTANT VA$C_PAGELET_SIZE = 512 DECLARE LONG CONSTANT VA$C_PAGELET_SHIFT_SIZE = 9 DECLARE LONG CONSTANT VA$S_VA = 8 record VA group VA$R_VADEF_UNION variant case BASIC$QUADWORD VA$Q_QUAD case group VA$R_VADEF_BITS0 ! P1 SPACE ! SYSTEM SPACE LONG FILL_1_bits ! COMMENT ADDED BY SDL - FILL_1_bits contains bits FILL_1 through SYSTEM end group VA$R_VADEF_BITS0 case group VA$R_VADEF_BITS2 ! BYTES PER PAGELET WORD BYTES_PER_PAGELET_bits ! COMMENT ADDED BY SDL - BYTES_PER_PAGELET_bits contains bits & ! BYTES_PER_PAGELET through FILL_74_ end group VA$R_VADEF_BITS2 case group VA$R_VADEF_BITS3 ! BYTE IN PAGELET (common name) WORD BYTE_IN_PAGELET_bits ! COMMENT ADDED BY SDL - BYTE_IN_PAGELET_bits contains bits BYTE_IN_PAGELET & ! through FILL_75_ end group VA$R_VADEF_BITS3 case group VA$R_VADEF_BITS4 ! Virtual Region Number BYTE FILL_4_bits ( 8 ) ! COMMENT ADDED BY SDL - FILL_4_bits contains bits FILL_4 through VRN end group VA$R_VADEF_BITS4 case group VA$R_VADEF_BITS5 ! Virtual Address Space BYTE FILL_6_bits ( 8 ) ! COMMENT ADDED BY SDL - FILL_6_bits contains bits FILL_6 through VRNX end group VA$R_VADEF_BITS5 end variant end group VA$R_VADEF_UNION end record VA ! + ! Process permanent region ids ! - DECLARE LONG CONSTANT VA$C_P0 = 0 ! Region id for 32-bit program region DECLARE LONG CONSTANT VA$C_P1 = 1 ! Region id for control region DECLARE LONG CONSTANT VA$C_P2 = 2 ! Region id for 64-bit program region DECLARE LONG CONSTANT VA$M_DESCEND = x'00000001' DECLARE LONG CONSTANT VA$M_P0_SPACE = x'00000002' DECLARE LONG CONSTANT VA$M_P1_SPACE = x'00000004' DECLARE LONG CONSTANT VA$M_PERMANENT = x'00000008' DECLARE LONG CONSTANT VA$M_EXPAND_ON_ACCVIO = x'00000010' DECLARE LONG CONSTANT VA$M_SHARED_PTS = x'00000040' DECLARE LONG CONSTANT VA$M_OWNER_MODE = x'0000000F' DECLARE LONG CONSTANT VA$M_CREATE_MODE = x'000000F0' DECLARE LONG CONSTANT VA$C_REGSUM_LENGTH = 40 DECLARE LONG CONSTANT VA$_REGSUM_BY_ID = 0 DECLARE LONG CONSTANT VA$_REGSUM_BY_VA = 1 DECLARE LONG CONSTANT VA$_NEXT_REGSUM_BY_VA = 2 ! + DECLARE LONG CONSTANT VA$C_REGION_UCREATE_UOWN = 51 DECLARE LONG CONSTANT VA$C_REGION_UCREATE_SOWN = 50 DECLARE LONG CONSTANT VA$C_REGION_UCREATE_EOWN = 49 DECLARE LONG CONSTANT VA$C_REGION_UCREATE_KOWN = 48 DECLARE LONG CONSTANT VA$C_REGION_SCREATE_SOWN = 34 DECLARE LONG CONSTANT VA$C_REGION_SCREATE_EOWN = 33 DECLARE LONG CONSTANT VA$C_REGION_SCREATE_KOWN = 32 DECLARE LONG CONSTANT VA$C_REGION_ECREATE_EOWN = 17 DECLARE LONG CONSTANT VA$C_REGION_ECREATE_KOWN = 16 DECLARE LONG CONSTANT VA$C_REGION_KCREATE_KOWN = 0 DECLARE LONG CONSTANT VA$S_REGSUM = 40 record REGSUM BASIC$QUADWORD VA$Q_REGION_ID ! Id of region group VA$R_FLAGS_OVERLAY variant case LONG VA$L_FLAGS ! FLAGS longword case group VA$R_FLAGS_BITS ! Region is descending ! Region is in P0 space ! Region is in P1 space ! Region is permanent ! Expand within region on accvio ! Don't replicate this bit in the ! public interface. ! Region is a shared PT region BYTE DESCEND_bits ! COMMENT ADDED BY SDL - DESCEND_bits contains bits DESCEND through FILL_76_ end group VA$R_FLAGS_BITS end variant end group VA$R_FLAGS_OVERLAY group VA$R_REGION_PROT variant case LONG VA$L_REGION_PROTECTION case group VA$R_REGION_FIELDS ! Region owner mode ! Region create mode BYTE OWNER_MODE_bits ! COMMENT ADDED BY SDL - OWNER_MODE_bits contains bits OWNER_MODE through CREATE_MODE end group VA$R_REGION_FIELDS end variant end group VA$R_REGION_PROT group VA$R_START_VA_UNION variant case BASIC$QUADWORD VA$PQ_START_VA ! Lowest address in region case LONG VA$PS_START_VA ! Lowest address in 32-bit region end variant end group VA$R_START_VA_UNION group VA$R_REGION_SIZE_UNION variant case BASIC$QUADWORD VA$Q_REGION_SIZE ! Size of region case LONG VA$L_REGION_SIZE ! Size of 32-bit region end variant end group VA$R_REGION_SIZE_UNION group VA$R_FREE_VA_UNION variant case BASIC$QUADWORD VA$PQ_FIRST_FREE_VA ! First free VA in region case LONG VA$PS_FIRST_FREE_VA ! First free VA in 32-bit region end variant end group VA$R_FREE_VA_UNION ! Region protection encodings ! - end record REGSUM ! + ! VA flags ! - DECLARE LONG CONSTANT VA$M_NO_OVERMAP = x'00000001' DECLARE LONG CONSTANT VA$S_VA_FLAGS = 1 record VA_FLAGS ! Do not overmap while creating pages BYTE NO_OVERMAP_bits ! COMMENT ADDED BY SDL - NO_OVERMAP_bits contains bits NO_OVERMAP through FILL_77_ end record VA_FLAGS ! + ! SETSTK_64 flags ! - DECLARE LONG CONSTANT VA$M_SETSTK_REGISTER = x'00000001' DECLARE LONG CONSTANT VA$S_SETSTK_FLAGS = 1 record SETSTK_FLAGS ! Set register stack limits BYTE SETSTK_REGISTER_bits ! COMMENT ADDED BY SDL - SETSTK_REGISTER_bits contains bits SETSTK_REGISTER through FILL_78_ end record SETSTK_FLAGS