1 /* ***********************************************************
  2    *                                                         *
  3    * Copyright, (C) Honeywell Bull Inc., 1987                *
  4    *                                                         *
  5    * Copyright, (C) Honeywell Information Systems Inc., 1982 *
  6    *                                                         *
  7    *********************************************************** */
  8 
  9 /* HISTORY COMMENTS:
 10   1) change(85-09-09,Farley), approve(85-09-09,MCR6979),
 11      audit(86-03-06,GDixon), install(86-03-21,MR12.0-1033):
 12      Support IMU.
 13   2) change(86-01-07,Fawcett), approve(86-04-11,MCR7383),
 14      audit(86-05-12,Coppola), install(86-07-17,MR12.0-1097):
 15      Add support for subvolumes on MSU3380 and MSU3390.
 16   3) change(87-10-02,Farley), approve(88-02-26,MCR7794),
 17      audit(88-03-04,Fawcett), install(88-03-15,MR12.2-1035):
 18      Added imu_style_iom flag, so that init_early_config can create the proper
 19      IOM config entry.
 20   4) change(87-10-19,Farley), approve(88-02-26,MCR7795),
 21      audit(88-03-04,Fawcett), install(88-03-15,MR12.2-1035):
 22      Added default_time_zone and default_time_zone_delta, so that predefined
 23      time zone information can be available at boot time.
 24   5) change(87-10-19,Farley), approve(88-02-26,MCR7796),
 25      audit(88-03-04,Fawcett), install(88-03-15,MR12.2-1035):
 26      Added default_rpv_data, so that predefined RPV information can be
 27      available at boot time.
 28                                                    END HISTORY COMMENTS */
 29 /* format: style2 */
 30 bootload_info:
 31      procedure;
 32 
 33 /* *      This is a CDS which is used to generate the bootload_info segment, used in
 34    *      bound_bootload_0 and various later parts of collection 1 and 2 bootload.
 35    *      In a later release, it will ask questions to allow certain
 36    *      configuration info to be "canned" onto the MST. For now,
 37    *      none of the answers are used, so all that is commented out/
 38    *      skipped.
 39    *
 40    *      11/02/80, W. Olin Sibert
 41    *      8/82 BIM
 42    *      x/83 Keith Loepere for various values, including bce_sst_sizes
 43    *      4/84 Keith Loepere for bce_intk_card.
 44    *      3/85 Keith Loepere for safe_config_deck_frec.
 45    */
 46 %page;
 47           dcl     1 bootload_info        aligned,           /* Data used by collection 1 bootload, mostly */
 48                     2 structure_start    pointer init (null ()),
 49                                                             /* Beginning of this structure */
 50                     2 structure_size     fixed bin init (0),/* And its length in words, for use in copying */
 51                     2 status_mask        bit (36) aligned init ("370000770000"b3),
 52                                                             /* Mask to check status word against */
 53                     2 bce_dbr            bit (72) aligned,  /* double word aligned */
 54                     2 iom_boot_info      (8) fixed bin (71) init ((8) - 1),
 55                                                             /* Information copied from that left in low memory by the */
 56                                                             /* IOM Bootload Program. */
 57                     2 boot_without_query bit (1) aligned init ("0"b),
 58                                                             /* info is here */
 59                     2 iom_port_table     (4) fixed bin (35) init ((4) - 1),
 60                                                             /* SCU port for each IOM */
 61                     2 imu_style_iom      bit (1) aligned init ("0"b),
 62                                                             /* Bootload IOM is an IMU */
 63                     2 cold_tape_mpc      bit (1) aligned init ("1"b),
 64                                                             /* F/W in tape MPC */
 65                     2 tape_iom_number    fixed bin (3) init (-1),
 66                                                             /* Bootload tape IOM number */
 67                     2 tape_channel_number
 68                                          fixed bin (6) init (-1),
 69                                                             /* Bootload tape channel number */
 70                     2 tape_device_number fixed bin (6) init (-1),
 71                                                             /* Bootload tape device number, once known */
 72                     2 tape_mpc_fw_name   char (32) unal init (""),
 73                     2 cold_disk_mpc      bit (1) aligned init ("1"b),
 74                     2 default_rpv_data   char (24) unaligned init (""),
 75                                                             /* Predefined RPV information */
 76                     2 disk_mpc_chanid    char (8) aligned init (""),
 77                     2 disk_device_has_sv bit (1) aligned init ("0"b),
 78                     2 disk_device_sv     fixed bin (17) init (-1),
 79                     2 disk_device_number fixed bin (6) init (-1),
 80                                                             /* Bootload disk device number, once known */
 81                     2 disk_model_number  fixed bin init (-1),
 82                                                             /* Bootload disk canonical device model number */
 83                     2 disk_mpc_model_number
 84                                          fixed bin init (-1),
 85                                                             /* Bootload disk MPC type, possibly default. */
 86                     2 system_type        fixed bin,         /* As in l68 vs adp */
 87                     2 disk_mpc_fw_rev_bcd
 88                                          bit (36) aligned init (""b),
 89                     2 bce_part_frec      fixed bin,
 90                     2 bce_part_nrec      fixed bin,
 91                     2 mst_past_bce_frec  fixed bin,         /* first record on rpv for mst area used for segments past bce usage (i.e. collections 2 and 3) */
 92                     2 config_part_frec   fixed bin,
 93                     2 safe_config_deck_frec
 94                                          fixed bin,
 95                     2 console_iom_number fixed bin (3) init (0),
 96                                                             /* IOM Numbers */
 97                     2 console_channel_number
 98                                          fixed bin (6) init (-1),
 99                                                             /* Channel number of bootload console */
100                     2 console_model      fixed bin (35) init (0),
101                     2 console_pcw_check  bit (1) aligned init ("0"b),
102                     2 console_uses_pcw   bit (1) aligned init ("1"b),
103                     2 bootload_mem_size  fixed bin (35) init (512 * 1024),
104                                                             /* Size of bootload memory for collection 1 */
105                     2 contig_mem_size    fixed bin (35) init (0),
106                     2 bootload_1_ptr     pointer,           /* Pointer to base of bootload_1 */
107                     2 lot_ptr            pointer,           /* Pointer to base ot lot */
108                     2 sys_boot_info_ptr  pointer,           /* Pointer to our sister segment */
109                     2 assume_config_deck bit (1) aligned init ("1"b),
110                     2 config_has_been_modified
111                                          bit (1) aligned init ("0"b),
112                                                             /* oper should perform a reinit */
113                                                             /* assume BOS or whatever has left a valid config deck around in the canonical place */
114                     2 console_available  bit (1) aligned init ("0"b),
115                                                             /* early console support turned on */
116                     2 sysid              char (32) unaligned init (""),
117                                                             /* MST magic fills this in. */
118                     2 creation_time      fixed bin (71) init (-1),
119                                                             /* Time this structure was created */
120                     2 creation_time_string
121                                          char (24) unaligned init (""),
122                                                             /* Character representation of the above */
123                     2 creator            char (32) unaligned init (""),
124                                                             /* User who created this segment */
125                     2 creation_site_id   char (32) unaligned init (""),
126                                                             /* Installation ID of site where it was created */
127                     2 default_time_zone  char (4) unaligned init ("gmt"),
128                                                             /* Time zone to use before config available */
129                     2 default_time_zone_delta
130                                          fixed bin (71) init (0),
131                                                             /* Binary offset of the above */
132                     2 rpv_cold_boot      bit (1) aligned init ("0"b),
133                                                             /* Turned on in cold boot until RPV is formatted */
134                     2 bce_intk_card      aligned like intk_card,
135                     2 at_bce_cl          bit (1) aligned init ("0"b),
136                                                             /* controlled by bce_get_to_command_level */
137                     2 pad_align_2        fixed bin (71) init (0),
138                     2 l68_fault_names    (32) char (8) aligned init (
139                                                             /** **/
140                                          "shutdown", "store   ", "mme1    ", "ft1     ", "timer-ro", "command ",
141                                          "derail  ", "lockup  ", "connect ", "parity  ", "ipr     ", "onc     ",
142                                          "startup ", "overflow", "divcheck", "execute ", "segment ", "page    ",
143                                          "df2     ", "df3     ", "acv     ", "mme2    ", "mme3    ", "mme4    ",
144                                          "linkage ", "ft3     ", "fault26 ", "fault27 ", "fault28 ", "fault29 ",
145                                          "fault30 ", "trouble "),
146                     2 adp_fault_names    (32) char (8) aligned init (
147                                                             /** **/
148                                          "shutdown", "store   ", "mme1    ", "ft1     ", "timer-ro", "command ",
149                                          "derail  ", "lockup  ", "connect ", "memsys  ", "ipr     ", "onc     ",
150                                          "startup ", "overflow", "divcheck", "execute ", "mme2    ", "mme3    ",
151                                          "segment ", "mme4    ", "page    ", "page-wrt", "acv     ", "fault23 ",
152                                          "linkage ", "ft3     ", "fault26 ", "fault27 ", "hype-dis", "hype-cio",
153                                          "hype-tro", "trouble "),
154                     2 bce_sst_sizes      (0:3) fixed bin init (64, 32, 8, 8),
155                                                             /* size of sst pools for bce */
156                     2 end_of_bootload_info
157                                          pointer init (null ());
158                                                             /* Last location in the structure */
159 ^L
160 
161           dcl     1 cds_data             aligned like cds_args;
162                                                             /* arguments to create_data_segment_ subr */
163 
164           dcl     code                   fixed bin (35);
165 
166           dcl     com_err_               entry () options (variable);
167           dcl     create_data_segment_   entry (pointer, fixed binary (35));
168           dcl     get_group_id_          entry () returns (char (32));
169           dcl     ioa_                   entry options (variable);
170           dcl     system_info_$installation_id
171                                          entry (char (*));
172 
173 
174 
175           dcl     PAD                    (1) char (32) init ("pad*") int static options (constant);
176           dcl     WHOAMI                 char (32) internal static options (constant) init ("bootload_info");
177 
178 
179           dcl     (addr, null, size, string, unspec)
180                                          builtin;
181 ^L
182 
183           bootload_info.creator = get_group_id_ ();
184           call system_info_$installation_id (bootload_info.creation_site_id);
185 
186           unspec (bootload_info.bootload_1_ptr), unspec (bootload_info.sys_boot_info_ptr),
187                unspec (bootload_info.lot_ptr) = "077777000043000000000000"b3;
188                                                             /* ring 0 pointers to base of segment -1 */
189 
190 /* For the first release, ask no questions, just fill in the */
191 /* salient values */
192 
193           bootload_info.boot_without_query = "0"b;
194           bootload_info.tape_mpc_fw_name = "";
195           bootload_info.disk_mpc_chanid = "";
196           bootload_info.disk_device_has_sv = "0"b;
197           bootload_info.disk_device_sv = -1;
198           bootload_info.disk_device_number = 0;
199           bootload_info.disk_model_number = 0;
200           bootload_info.disk_mpc_model_number = 0;
201 
202           bootload_info.structure_size = size (bootload_info);
203                                                             /* set it up for copying */
204 
205           cds_data.sections (1).p = addr (bootload_info);
206           cds_data.sections (1).len = size (bootload_info);
207           cds_data.sections (1).struct_name = WHOAMI;
208 
209           cds_data.seg_name = WHOAMI;
210 
211           cds_data.num_exclude_names = 1;
212           cds_data.exclude_array_ptr = addr (PAD);
213 
214           string (cds_data.switches) = "0"b;
215           cds_data.switches.have_text = "1"b;               /* only create text section */
216 
217           call create_data_segment_ (addr (cds_data), code);
218 
219           if code ^= 0
220           then do;                                          /* Nothing can be done */
221                     call com_err_ (code, WHOAMI);
222                     return;
223                end;
224 
225           cds_data.seg_name = "sys_boot_info";              /* Create the unbound copy */
226 
227           call ioa_ ("^a: Generating sys_boot_info copy of bootload_info.", WHOAMI);
228 
229           call create_data_segment_ (addr (cds_data), code);
230 
231           if code ^= 0
232           then do;                                          /* Nothing can be done */
233                     call com_err_ (code, WHOAMI);
234                     return;
235                end;
236 
237           return;
238 
239 /* format: off */
240 %page; %include cds_args;
241 %page; %include config_intk_card;
242 /* format: on */
243      end bootload_info;