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) change85-09-09Farley, approve85-09-09MCR6979,
11 audit86-03-06GDixon, install86-03-21MR12.0-1033:
12 Support IMU.
13 2) change86-01-07Fawcett, approve86-04-11MCR7383,
14 audit86-05-12Coppola, install86-07-17MR12.0-1097:
15 Add support for subvolumes on MSU3380 and MSU3390.
16 3) change87-10-02Farley, approve88-02-26MCR7794,
17 audit88-03-04Fawcett, install88-03-15MR12.2-1035:
18 Added imu_style_iom flag, so that init_early_config can create the proper
19 IOM config entry.
20 4) change87-10-19Farley, approve88-02-26MCR7795,
21 audit88-03-04Fawcett, install88-03-15MR12.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) change87-10-19Farley, approve88-02-26MCR7796,
25 audit88-03-04Fawcett, install88-03-15MR12.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;