COMPILATION LISTING OF SEGMENT gm_util_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 06/04/84 1255.6 mst Mon Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 gm_util_: proc (seg_name, seg_type, sltep, seg_ptr, seg_is_linkage, seg_is_defs); 11 12 /* * GM_UTIL_ 13* * 14* * This repulsive utility program diddles with SLT entries to be written onto 15* * a system tape, in a fashion which is not particularly obvious even after 16* * considerable study. 17* */ 18 19 /* Modified 31 July 1981, W. Olin Sibert, to use gm_data.incl.pl1 for segment type values */ 20 21 /* argument declarations */ 22 23 dcl seg_name char (32) aligned, /* name of segment whose slte is being initialized */ 24 seg_type fixed bin (17), /* primary keyword type (name,first_name,etc.) */ 25 seg_ptr ptr, /* pointer to the segment */ 26 seg_is_linkage bit (1) aligned, /* on if slte is for linkage segment */ 27 seg_is_defs bit (1) aligned; /* on if slte is for defs segment */ 28 29 dcl (seg_word2 init ("110010000000010000000000000100000000"b), /* specifies re access,cache,paged,combine_link */ 30 seg_word3 init ("000000000000000000000000000000000000"b), /* specifies ringbrackets of 0,0,0 */ 31 link_word2 init ("111110000000011000000011011000000000"b), 32 /* when anded with word two of an slte for a linkage section, 33* saves access, paged, per_process, 34* init_seg, temp_seg, link_sect and link_sect_wired */ 35 link_word3 init ("000000000111111111000000000000000000"b), 36 /* when anded with word three of linkage slte, saves ringbracks */ 37 defs_word2 init ("000010000000000000000000000001000000"b), 38 /* When anded with word two of defs slte, saves cache */ 39 defs_word3 init ("000000000000000000000000000000000000"b)) bit (36) aligned static; 40 /* when anded with word three of defs slte, save nothing */ 41 42 dcl word_mask bit (36) aligned based; /* mask for above strings */ 43 44 dcl (word2_ptr, 45 word3_ptr, 46 word4_ptr) ptr; /* pointers to slte data words */ 47 48 dcl addrel builtin; 49 50 /* */ 51 52 /* initializations */ 53 /* ------------------- */ 54 55 word2_ptr = addrel (sltep, 1); 56 word3_ptr = addrel (sltep, 2); 57 word4_ptr = addrel (sltep, 3); 58 59 60 /* */ 61 62 /* initiate linkage slte */ 63 /* ------------------------- */ 64 65 if (seg_is_linkage) then do; 66 67 slte.link_sect = "1"b; /* set switch indicating this is a linkage section */ 68 69 if slte.combine_link = "1"b then do; /* if the combine link switch is on */ 70 slte.access = "1000"b; /* then default access is READ */ 71 slte.per_process = "0"b; 72 slte.init_seg = "1"b; 73 end; 74 75 else /* if the combine link switch is not on */ 76 slte.access = "1010"b; /* give the linkage RW */ 77 78 word2_ptr -> word_mask = word2_ptr -> word_mask & link_word2; /* initiate word 2 of slte */ 79 80 slte.temp_seg, slte.init_seg = "1"b; /* make all .link segments go away */ 81 82 word3_ptr -> word_mask = word3_ptr -> word_mask & link_word3; /* initiate word 3 of slte */ 83 84 word4_ptr -> word_mask = "0"b; /* initiate word 4 of slte */ 85 end; 86 87 /* */ 88 /* initiate defs slte */ 89 /* ------------------------- */ 90 91 else if (seg_is_defs) then do; 92 93 slte.defs = "1"b; /* set switch indicating this is a defs section */ 94 95 word2_ptr -> word_mask = word2_ptr -> word_mask & defs_word2; /* initiate word 2 of slte */ 96 97 word3_ptr -> word_mask = word3_ptr -> word_mask & defs_word3; /* initiate word 3 of slte */ 98 99 word4_ptr -> word_mask = "0"b; /* initiate word 4 of slte */ 100 101 slte.access = "1000"b; 102 slte.init_seg = "1"b; 103 slte.paged = "1"b; 104 end; 105 106 /* */ 107 108 /* initiate slte for segments */ 109 /* ------------------------------ */ 110 111 else do; 112 113 sltep -> word_mask = "0"b; /* initiate word 1 of slte */ 114 115 word2_ptr -> word_mask = seg_word2; /* initiate word 2 of slte */ 116 117 word3_ptr -> word_mask = seg_word3; /* initiate word 3 of slte */ 118 119 word4_ptr -> word_mask = "0"b; /* initiate word 4 of slte */ 120 121 if seg_type = FABRICATED_SEG /* fabricate */ 122 then sltep -> slte.access = "1010"b; /* READ, WRITE */ 123 end; 124 125 /* BEGIN INCLUDE FILE ... gm_data.incl.pl1 ... 31 July 1981 ... WOS */ 1 2 /* Assorted data and structures used by the generate_mst subsystem */ 1 3 1 4 dcl NORMAL_SEG init (1) fixed bin internal static options (constant); 1 5 dcl WHOLE_OBJECT_SEG init (2) fixed bin internal static options (constant); 1 6 dcl TEXT_ONLY_SEG init (3) fixed bin internal static options (constant); 1 7 dcl FABRICATED_SEG init (4) fixed bin internal static options (constant); 1 8 dcl DATA_SEG init (5) fixed bin internal static options (constant); 1 9 dcl FIRST_SEG init (6) fixed bin internal static options (constant); 1 10 dcl BOOT_PROGRAM_SEG init (7) fixed bin internal static options (constant); 1 11 1 12 /* END INCLUDE FILE ... gm_data.incl.pl1 */ 125 126 /* BEGIN INCLUDE FILE slte.incl.pl1 */ 2 2 /* Declaration for Segment Loading Table Entry structure. 2 3* Used by Initialization, MST Generation, and MST Checker subroutines */ 2 4 /* modified 5/4/76 by Noel I. Morris */ 2 5 /* last modified 12/12/83 by Keith Loepere for breakpointable */ 2 6 /* format: style3 */ 2 7 2 8 dcl sltep ptr; 2 9 2 10 dcl 1 slte_uns based (sltep) aligned, 2 11 ( 2 names_ptr bit (18), /* rel pointer to thread of names */ 2 12 2 path_ptr bit (18), /* rel pointer to pathname (if present) */ 2 13 /**** End of word 1 */ 2 14 2 access bit (4), /* SDW access bit (REWP) */ 2 15 2 cache bit (1), /* Segment to be allowed in cache */ 2 16 2 abs_seg bit (1), /* segment is an abs seg if ON */ 2 17 2 firmware_seg bit (1), /* load in low 256 */ 2 18 2 layout_seg bit (1), /* mailbox & such */ 2 19 2 breakpointable bit (1), /* includes breakpoint_page */ 2 20 2 pad1 bit (3), /* unused */ 2 21 2 wired bit (1), /* segment is wired if ON */ 2 22 2 paged bit (1), /* segment is paged if ON */ 2 23 2 per_process bit (1), /* segment is per-process if ON */ 2 24 2 pad3 bit (2), 2 25 2 acl_provided bit (1), /* ON if acl structure follows path_name on MST */ 2 26 /**** End of 1st half of word 2 */ 2 27 2 pad4 bit (3), 2 28 2 branch_required bit (1), /* path name supplied if ON */ 2 29 2 init_seg bit (1), /* segment is init_seg if ON */ 2 30 2 temp_seg bit (1), /* segment is temp_seg if ON */ 2 31 2 link_provided bit (1), /* linkage segment provided if ON */ 2 32 2 link_sect bit (1), /* segment is linkage segment if ON */ 2 33 2 link_sect_wired bit (1), /* linkage segment is wired if ON */ 2 34 2 combine_link bit (1), /* linkage is combined if ON */ 2 35 2 pre_linked bit (1), /* lot entry has been made if ON */ 2 36 2 defs bit (1), /* segment is definitions segment if ON */ 2 37 /***** End of word 2 */ 2 38 2 pad5 bit (6), 2 39 2 cur_length fixed bin (9) uns, /* current length of segment (in 1024 word blocks) */ 2 40 2 ringbrack (3) fixed bin (3) uns, /* ringbrackets */ 2 41 2 segno fixed bin (18) uns, /* text/link segment number */ 2 42 /***** End of word 3 */ 2 43 2 pad7 bit (3), 2 44 2 max_length fixed bin (9) uns, /* maximum length for segment */ 2 45 2 bit_count fixed bin (24) uns 2 46 ) unaligned; /* bitcount of segment */ 2 47 2 48 dcl 1 slte based (sltep) aligned, 2 49 ( 2 names_ptr bit (18), /* rel pointer to thread of names */ 2 50 2 path_ptr bit (18), /* rel pointer to pathname (if present) */ 2 51 2 access bit (4), /* SDW access bit (REWP) */ 2 52 2 cache bit (1), /* Segment to be allowed in cache */ 2 53 2 abs_seg bit (1), /* segment is an abs seg if ON */ 2 54 2 firmware_seg bit (1), 2 55 2 layout_seg bit (1), 2 56 2 breakpointable bit (1), 2 57 2 pad2 bit (3), 2 58 2 wired bit (1), /* segment is wired if ON */ 2 59 2 paged bit (1), /* segment is paged if ON */ 2 60 2 per_process bit (1), /* segment is per-process if ON */ 2 61 2 pad3 bit (2), 2 62 2 acl_provided bit (1), /* ON if acl structure follows path_name on MST */ 2 63 2 pad4 bit (3), 2 64 2 branch_required bit (1), /* path name supplied if ON */ 2 65 2 init_seg bit (1), /* segment is init_seg if ON */ 2 66 2 temp_seg bit (1), /* segment is temp_seg if ON */ 2 67 2 link_provided bit (1), /* linkage segment provided if ON */ 2 68 2 link_sect bit (1), /* segment is linkage segment if ON */ 2 69 2 link_sect_wired bit (1), /* linkage segment is wired if ON */ 2 70 2 combine_link bit (1), /* linkage is combined if ON */ 2 71 2 pre_linked bit (1), /* lot entry has been made if ON */ 2 72 2 defs bit (1), /* segment is definitions segment if ON */ 2 73 2 pad5 bit (6), 2 74 2 cur_length bit (9), /* current length of segment (in 1024 word blocks) */ 2 75 2 ringbrack (3) bit (3), /* ringbrackets */ 2 76 2 segno bit (18), /* text/link segment number */ 2 77 2 pad6 bit (3), 2 78 2 max_length bit (9), /* maximum length for segment */ 2 79 2 bit_count bit (24) 2 80 ) unaligned; /* bitcount of segment */ 2 81 2 82 /* END INCLUDE FILE slte.incl.pl1 */ 126 127 128 end gm_util_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/04/84 1242.3 gm_util_.pl1 >spec>temp>bce>on>gm_util_.pl1 125 1 03/27/82 0429.7 gm_data.incl.pl1 >ldd>include>gm_data.incl.pl1 126 2 06/01/84 1103.2 slte.incl.pl1 >spec>temp>bce>on>slte.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. FABRICATED_SEG constant fixed bin(17,0) initial dcl 1-7 ref 121 access 1 based bit(4) level 2 packed unaligned dcl 2-48 set ref 70* 75* 101* 121* addrel builtin function dcl 48 ref 55 56 57 combine_link 1(27) based bit(1) level 2 packed unaligned dcl 2-48 ref 69 defs 1(29) based bit(1) level 2 packed unaligned dcl 2-48 set ref 93* defs_word2 000000 constant bit(36) initial dcl 29 ref 95 defs_word3 constant bit(36) initial dcl 29 ref 97 init_seg 1(22) based bit(1) level 2 packed unaligned dcl 2-48 set ref 72* 80* 102* link_sect 1(25) based bit(1) level 2 packed unaligned dcl 2-48 set ref 67* link_word2 000001 constant bit(36) initial dcl 29 ref 78 link_word3 constant bit(36) initial dcl 29 ref 82 paged 1(13) based bit(1) level 2 packed unaligned dcl 2-48 set ref 103* per_process 1(14) based bit(1) level 2 packed unaligned dcl 2-48 set ref 71* seg_is_defs parameter bit(1) dcl 23 ref 10 91 seg_is_linkage parameter bit(1) dcl 23 ref 10 65 seg_name parameter char(32) dcl 23 ref 10 seg_ptr parameter pointer dcl 23 ref 10 seg_type parameter fixed bin(17,0) dcl 23 ref 10 121 seg_word2 000002 constant bit(36) initial dcl 29 ref 115 seg_word3 constant bit(36) initial dcl 29 ref 117 slte based structure level 1 dcl 2-48 sltep parameter pointer dcl 2-8 ref 10 55 56 57 67 69 70 71 72 75 80 80 93 101 102 103 113 121 temp_seg 1(23) based bit(1) level 2 packed unaligned dcl 2-48 set ref 80* word2_ptr 000100 automatic pointer dcl 44 set ref 55* 78 78 95 95 115 word3_ptr 000102 automatic pointer dcl 44 set ref 56* 82 82 97 97 117 word4_ptr 000104 automatic pointer dcl 44 set ref 57* 84 99 119 word_mask based bit(36) dcl 42 set ref 78* 78 82* 82 84* 95* 95 97* 97 99* 113* 115* 117* 119* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BOOT_PROGRAM_SEG internal static fixed bin(17,0) initial dcl 1-10 DATA_SEG internal static fixed bin(17,0) initial dcl 1-8 FIRST_SEG internal static fixed bin(17,0) initial dcl 1-9 NORMAL_SEG internal static fixed bin(17,0) initial dcl 1-4 TEXT_ONLY_SEG internal static fixed bin(17,0) initial dcl 1-6 WHOLE_OBJECT_SEG internal static fixed bin(17,0) initial dcl 1-5 slte_uns based structure level 1 dcl 2-10 NAME DECLARED BY EXPLICIT CONTEXT. gm_util_ 000015 constant entry external dcl 10 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 174 204 147 204 Length 372 147 10 151 24 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gm_util_ 70 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gm_util_ 000100 word2_ptr gm_util_ 000102 word3_ptr gm_util_ 000104 word4_ptr gm_util_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return ext_entry NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000007 55 000022 56 000027 57 000033 65 000037 67 000042 69 000046 70 000053 71 000057 72 000061 73 000063 75 000064 78 000070 80 000072 82 000076 84 000100 85 000101 91 000102 93 000105 95 000111 97 000113 99 000115 101 000116 102 000122 103 000124 104 000126 113 000127 115 000131 117 000133 119 000134 121 000135 128 000145 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved