COMPILATION LISTING OF SEGMENT dn355_boot_interrupt Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1031.7 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(86-06-05,GJohnson), approve(86-06-05,MCR7387), 17* audit(86-06-10,Martinson), install(86-07-11,MR12.0-1091): 18* Correct error message documentation. 19* END HISTORY COMMENTS */ 20 21 22 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend,indcomtxt */ 23 dn355_boot_interrupt: 24 proc (a_fnp_no); 25 26 /* This procedure is called by dn355 when it receives an interrupt from an FNP 27* * whose "bootloading" flag is on. This program interprets the bootload status 28* * and wakes up the process that initiated the bootload to inform it of the results 29* * of the bootload. 30* * 31* * Written 5/19/76 by Robert S. Coren 32* * Modified 79 June 8 by Art Beattie to handle new config_messages. 33* * Modified 08/26/80 by Robert Coren to ignore spurious bootload interrupts. 34* * Modified 07/14/83 BIM to remove the $emergency entrypoint -- all 35* * its work is done elsewhere. Also assumed that all unwiring 36* * will be done by fnp_util$abort when called from 37* * user ring upon notification of boot failure. 38* * Modified 1984-07-27 BIM for system_fault entrypoint. 39**/ 40 41 42 /* PARAMETER */ 43 44 dcl a_fnp_no fixed bin; 45 46 47 /* AUTOMATIC */ 48 49 dcl fnp_no fixed bin; 50 dcl astep ptr; 51 dcl fnp_tag char (1); 52 dcl igcode fixed bin (35); 53 dcl stat_ptr ptr; 54 dcl major fixed bin; 55 dcl sub_stat fixed bin; 56 dcl event_message fixed bin (71); /* event message used to report result */ 57 dcl offset fixed bin; 58 59 60 /* ENTRIES */ 61 62 dcl syserr options (variable); 63 dcl pxss$ring_0_wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 64 65 /* BASED */ 66 67 dcl fb fixed bin (35) based; 68 69 dcl 1 fnp_boot_status aligned based (stat_ptr), /* structure of bootload status */ 70 2 real_status bit (1) unaligned, /* must be "1"b in valid status */ 71 2 pad1 bit (2) unaligned, 72 2 major_status bit (3) unaligned, 73 2 pad2 bit (3) unaligned, 74 2 substatus fixed bin (8) unal, /* code set by 355, only interesting if major_status is 4 */ 75 2 channel_no fixed bin (17) unaligned; /* channel no. of LSLA in case of config error */ 76 77 78 /* INTERNAL STATIC CONSTANTS */ 79 80 dcl TELL fixed bin int static options (constant) init (0); /* code for syserr -- print on console only */ 81 dcl BOOTLOAD_OK fixed bin int static options (constant) init (0); 82 dcl CHECKSUM_ERROR fixed bin int static options (constant) init (1); 83 dcl READ_ERROR fixed bin int static options (constant) init (2); 84 dcl GICB_ERROR fixed bin int static options (constant) init (3); 85 dcl INIT_ERROR fixed bin int static options (constant) init (4); 86 dcl UNWIRE_STATUS fixed bin int static options (constant) init (5); 87 dcl MAX_STATUS fixed bin int static options (constant) init (5); 88 89 dcl FNP_UP fixed bin int static options (constant) init (4); 90 dcl FNP_DOWN fixed bin int static options (constant) init (2); 91 92 93 /* BUILTINS */ 94 95 dcl (addr, bin, hbound, max, ptr, substr) builtin; 96 97 98 /* INCLUDE FILES */ 99 1 1 /* BEGIN INCLUDE FILE ... dn355_messages.incl.pl1 */ 1 2 1 3 /* created 1/31/75 by Robert S. Coren 1 4* * modified 5/19/76 by Robert S. Coren to add bootload messages 1 5* * Modified 1979 June 8 by Art Beattie to add messages to config_messages. 1 6* */ 1 7 1 8 /* This include file describes the data segment used in interpreting 1 9* * the info returned with an emergency interrupt from the 355, 1 10* * as well as error message mailboxes and bootload interrupts 1 11* */ 1 12 1 13 dcl dn355_messages$fault_names (0:10) char(16) aligned external; /* names associated with 355 fault codes */ 1 14 1 15 dcl dn355_messages$per_module fixed bin external; /* names and messages associated with 355 modules */ 1 16 1 17 dcl dn355_messages$error_messages (10) fixed bin ext; /* error_messages sent from the 355 */ 1 18 1 19 dcl dn355_messages$boot_messages (0:4) fixed bin external; /* messages describing major bootload status */ 1 20 1 21 dcl dn355_messages$config_messages (0:15) fixed bin external; /* messages describing configuration errors */ 1 22 1 23 dcl modulep ptr; 1 24 dcl reasonp ptr; 1 25 1 26 1 27 /* list of module names and message list offsets */ 1 28 1 29 dcl 1 dn355_modules (9) based (modulep) aligned, 1 30 2 name char(12), 1 31 2 list_offset fixed bin; 1 32 1 33 /* list of message offsets */ 1 34 1 35 dcl message_offset (22) fixed bin based; 1 36 1 37 1 38 /* crash messages for each module */ 1 39 1 40 dcl 1 dn355_reason aligned based (reasonp), 1 41 2 length fixed bin (8) unal, 1 42 2 msg char(0 refer (dn355_reason.length)) unal; 1 43 1 44 1 45 /* END INCLUDE FILE ... dn355_messages.incl.pl1 */ 100 101 2 1 /* BEGIN dn355_data.incl.pl1 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 2 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 2 8* Add data needed for the uncp multiplexer (DSA gateway) interface 2 9* implementation. 2 10* 2) change(89-03-20,Parisek), approve(89-06-06,MCR8110), 2 11* audit(89-10-09,Farley), install(89-10-25,MR12.3-1100): 2 12* Add support of protocol mpx. 2 13* END HISTORY COMMENTS */ 2 14 2 15 2 16 /* Date Last Modified and Reason 2 17* 2 18* Created 07/25/74 by R. B. Snyder for new ttydim. 2 19* Modified 06/23/77 by J. Stern to add channel_work_reqd and cwork_count 2 20* Modified 08/14/78 by Robert Coren to remove devx_tab and invent PCBs 2 21* Modified 79 May 14 by Art Beattie to add fnp_mem_size 2 22* Modified December 1979 by Robert Coren to add FNP queue lock 2 23* Modified January 1980 by Larry Johnson to increase max number of FNPs to 8 2 24* Modified 02/12/80 by Robert Coren to add dcw_list_array_ptr 2 25* Modified 03/06/80 by Robert Coren to add some metering info 2 26* Modified 12/10/80 by Robert Coren to add get_meters_waiting flag 2 27* Modified 83-12-16 BIM to use a chanid instead of iom/channel fb's. 2 28* Modified 1984-07-26 BIM for paged iom. 2 29* Modified in September 1985 for the DN7100 version interim. 2 30**/ 2 31 2 32 /* LOCKING RULES: A fnp is locked by its LCTE unless its LCTE is uninitialized. 2 33* In that case, the configuration_lock must be held. 2 34* if tty_lock$lock_lcte returns io_no_permission, then the caller must 2 35* lock$lock_fast the configuration lock and retry the LCTE lock. If 2 36* the lcte is now initialized, too bad. Otherwise, the config lock protects. 2 37* 2 38* Configuration locking is interesting to init_multiplexer and 2 39* all of fnp t&d and reconfiguration. The guts of the multiplexer 2 40* pay no attention to it. Thus, if the LCTE can be locked, it MUST be 2 41* locked before changing the io_manager_assigned flag. */ 2 42 2 43 /* format: style4,delnl,insnl,^ifthendo */ 2 44 2 45 dcl max_no_355s fixed bin int static init (8) options (constant); 2 46 /* max no of 355s we can handle (arbitrary) */ 2 47 dcl dn355_data$ external fixed bin; 2 48 2 49 dcl infop pointer; 2 50 dcl fnpp ptr; 2 51 2 52 dcl 1 datanet_info aligned based (infop), 2 53 2 configuration_lock aligned, 2 54 3 pid bit (36) aligned, 2 55 3 event bit (36) aligned, 2 56 3 flags aligned, 2 57 4 notify_sw bit (1) unaligned, 2 58 4 pad bit (35) aligned, 2 59 2 no_of_355s fixed bin, /* no. of FNP's */ 2 60 2 trace bit (1) aligned, /* watch events on console */ 2 61 2 debug_stop bit (1) aligned, /* crash on errors */ 2 62 2 uncp_bufp ptr, /* pointer to the circular buffer */ 2 63 2 protocol_datap ptr, /* pointer to protocol_mpx data */ 2 64 2 pad1 (6) bit (36) aligned, 2 65 2 per_datanet (max_no_355s) aligned like fnp_info; /* data per datanet */ 2 66 2 67 dcl 1 fnp_info aligned based (fnpp), /* structure for each FNP */ 2 68 2 mbx_pt pointer, /* pointer to mailbox NULL if not in config */ 2 69 2 pcb_array_ptr pointer, /* pointer to array of physical channel blocks */ 2 70 2 dcw_list_array_ptr pointer, /* pointer to array of space reserved for output DCW lists */ 2 71 2 no_of_channels fixed bin, /* number of channels on this FNP */ 2 72 2 fnp_id, 2 73 3 fnp_tag char (1) unaligned, /* letter identifying FNP */ 2 74 3 fnp_number fixed bin (9) unsigned unaligned, /* sequence number of FNP */ 2 75 3 padc bit (18) unaligned, 2 76 2 io_chanid char (8) aligned, 2 77 2 io_manager_chx fixed bin (35), /* devx for DIA on iom */ 2 78 2 lsla_idx (0:5) fixed bin aligned, /* index into PCB array for lsla lines */ 2 79 2 hsla_idx (0:2) fixed bin aligned, /* index into PCB array for hsla lines */ 2 80 2 count fixed bin, /* number of items in delay queue */ 2 81 2 cur_ptr fixed bin, /* offset in tty_buf of next delay queue element */ 2 82 2 last_ptr fixed bin, /* offset in tty_buf of last delay queue element */ 2 83 2 bleft_355 fixed bin, /* number of free buffers in this 355 */ 2 84 2 flags, 2 85 3 work_reqd bit (1) unaligned, /* mailbox messages queued up */ 2 86 3 bootloading bit (1) unaligned, /* currently being bootloaded */ 2 87 3 running bit (1) unaligned, /* this FNP is running */ 2 88 3 wired bit (1) unaligned, /* bootload buffer is wired */ 2 89 3 dump_patch_in_progress bit (1) unaligned, /* a dump or patch order is in progress */ 2 90 3 level_3_pending bit (1) unaligned, /* level 3 interrupt pending */ 2 91 3 level_7_pending bit (1) unaligned, /* level 7 interrupt pending */ 2 92 3 dump_patch_disabled bit (1) unaligned, /* dump & patch orders disabled because of timeout */ 2 93 3 t_and_d_in_progress bit (1) unaligned, /* T & D using FNP */ 2 94 3 t_and_d_lev_3_occurred bit (1) unaligned, /* A level 3 occurred */ 2 95 3 t_and_d_lev_7_occurred bit (1) unaligned, 2 96 3 t_and_d_notify_requested bit (1) unaligned, 2 97 3 t_and_d_assigned bit (1) unaligned, /* AS has given fnp to process */ 2 98 3 get_meters_waiting bit (1) unaligned, /* waiting for meter copy to complete */ 2 99 3 padb bit (7) unaligned, 2 100 3 active_dial unaligned, 2 101 4 active_bit (15) bit (1) unaligned, /* ON if the process is active */ 2 102 2 lcte_ptr ptr, /* pointer to this FNP's LCT entry */ 2 103 2 astep ptr, /* pointer to aste of wired bootload buffer */ 2 104 2 boot_ev_chan fixed bin (71), /* event channel over which to signal bootload completion */ 2 105 2 boot_process_id bit (36), /* process that initiated bootload */ 2 106 2 version char (4), /* version id of core image */ 2 107 2 fnp_mem_size fixed bin (18) unsigned, /* memory size of this FNP in 18-bit words */ 2 108 2 queue_lock bit (36) aligned, /* lock for interrupt queue */ 2 109 2 dump_patch_lock bit (36), /* lock for fnp_dump or _patch operation */ 2 110 2 q_entries_made fixed bin (35), /* count of delay queue entries made */ 2 111 2 input_reject_count fixed bin, /* number of times input rejected */ 2 112 2 processed_from_q fixed bin (35), /* number of interrupts processed from queue */ 2 113 2 fnp_channel_locked fixed bin (35), /* number of times dn355 found per-FNP lock locked */ 2 114 2 input_data_transactions fixed bin (35), /* number of mailbox transactions for input */ 2 115 2 output_data_transactions fixed bin (35), /* number of mailbox transactions for output */ 2 116 2 input_control_transactions fixed bin (35), /* number of mailbox transactions for inbound control info */ 2 117 2 output_control_transactions fixed bin (35), /* number of mailbox transactions for outbound control info */ 2 118 2 cumulative_mbx_in_use fixed bin (35), /* cumulative count of number of outbound mailboxes in use */ 2 119 2 max_mbx_in_use fixed bin, /* maximum number of mailboxes in use at any given time */ 2 120 2 mbx_in_use_updated fixed bin (35), /* number of increments to cumulative_mbx_in_use */ 2 121 2 mbx_unavailable fixed bin (35), /* number of times had to queue mailbox transaction because none available */ 2 122 2 free_size fixed bin (35), /* cumulative amount of bleft_355 */ 2 123 2 free_count fixed bin, /* number of adds to above */ 2 124 2 fnp_space_restricted_output fixed bin (35), /* number of times available FNP space restricted amount of output sent */ 2 125 2 tandd_pcbx fixed bin, /* index of PCB for COLTS channel */ 2 126 2 n_pages_wired fixed bin, /* pages wired for loading */ 2 127 2 config_flags aligned, 2 128 3 available bit (1) unaligned, /* reconfig says "yes" */ 2 129 3 io_manager_assigned bit (1) unaligned, /* We have channel assigned to us */ 2 130 3 pad bit (34) unaligned, 2 131 2 uncp_pcbx1 fixed bin (17) unaligned, /* For the DN7100 */ 2 132 2 uncp_pcbx2 fixed bin (17) unaligned, /* For the DN7100 */ 2 133 2 ptx fixed bin, /* page table index, used only at bootload */ 2 134 2 ptp pointer unaligned; /* page table for this FNP */ 2 135 2 136 /**** The following named constants are used to lay out the 2 137* iom page tables. Each FNP has to have its own page 2 138* table because there is not enough room to have eight different 2 139* bootload images of 32 K and > 64 K of tty_buf 2 140* 2 141* THE MAX TTY BUF LENGTH IS 192 K words. We could have another 16 K 2 142* easily, and then after that it would get hard. */ 2 143 2 144 /**** The layout 2 145* 2 146* Page I/O address Memory address Comments 2 147* ---- ------ -------------- -------- 2 148* 0 0 xxxxxx invalid PTW 2 149* 1 2000 2000 write-enabled (mailbox) 2 150* 2 4000 4000 write-enabled (mailbox) 2 151* 3 6000 6000 write-enabled (mailbox) 2 152* 4 10000 as needed bootload image segment page 0 2 153* .... .... .... .... 2 154* 35 110000 as needed bootload image segment page 31 2 155* 36 112000 xxxxxx invalid PTW 2 156* ... .... .... .... 2 157* 63 160000 .... invalid PTW 2 158* 64 200000 as needed tty_buf page 0 2 159* ... .... .... .... 2 160* 127 260000 as needed tty_buf page 63 2 161* 255 ...... ..... tty_buf page 191 2 162**/ 2 163 2 164 /**** We assume that the page table starts at all zeros. */ 2 165 2 166 declare FIRST_BOOTLOAD_PAGEX fixed bin init (4) int static options (constant); 2 167 declare FIRST_TTY_BUF_PAGEX fixed bin init (64) int static options (constant); 2 168 2 169 /* End include file dn355_data.incl.pl1 */ 102 103 3 1 /* BEGIN dn355_mailbox.incl.pl1 */ 3 2 3 3 /* Date Last Modified and Reason 3 4* Created 07/25/74 by R. B. Snyder for new ttydim. 3 5* Modified 08/20/75 by Mike Grady to prepare for multiple 355's 3 6* Modified 11/08/78 by Robert Coren to introduce FNP-controlled mailboxes 3 7* Modified 02/19/80 by Robert Coren to specify format of accept_input mailbox 3 8* Modified 04/23/80 by Robert Coren to replace lock with num_in_use 3 9* Modified 09/21/82 by Robert Coren to make subfields of crash_data be fixed bin (18) unsigned 3 10* */ 3 11 3 12 dcl 1 datanet_mbx aligned based (mbxp), /* declaration of 355 mailbox */ 3 13 2 dia_pcw aligned, /* Peripheral Control Word for DIA */ 3 14 3 zero bit (18) unaligned, 3 15 3 error bit (1) unaligned, /* set to "1"b if error on connect */ 3 16 3 pad1 bit (5) unaligned, 3 17 3 mbx_no bit (6) unaligned, /* number of submbx being sent to 355 */ 3 18 3 command bit (6) unaligned, /* always 71 (octal) */ 3 19 2 mailbox_requests fixed bin, /* 0 mod 256K cnt of mbx requests by 355 */ 3 20 2 term_inpt_mpx_wd bit (36) aligned, /* terminate interrupt multiplex word */ 3 21 2 last_mbx_req_count fixed bin, /* previous value of mailbox_requests */ 3 22 2 num_in_use fixed bin, /* number of submailboxes currently in use */ 3 23 2 mbx_used_flags, /* one bit for each mailbox */ 3 24 3 used (0:7) bit (1) unaligned, /* "1"b means this mbx is being used */ 3 25 3 pad2 bit (28) unaligned, 3 26 2 crash_data, /* data for 355 emergency interrupt */ 3 27 3 fault_code fixed bin (18) unal unsigned, 3 28 3 ic fixed bin (18) unal unsigned, 3 29 3 iom_fault_status fixed bin (18) unal unsigned, 3 30 3 fault_word fixed bin (18) unal unsigned, /* contains either faulting instruction or iomchannel no */ 3 31 2 dn355_sub_mbxes (0:7) aligned, /* 8 CS-initiated submailboxes */ 3 32 3 pad4 (8) fixed bin, /* eight words each */ 3 33 2 fnp_sub_mbxes (0:3) aligned, /* 4 FNP-initiated mailboxes */ 3 34 3 pad5 (28) fixed bin; /* 28 words each */ 3 35 3 36 dcl 1 sub_mbx aligned based (subp), /* declaration of a submailbox */ 3 37 2 dn355_no bit (3) unaligned, /* 355 number */ 3 38 2 pad1 bit (5) unaligned, 3 39 2 line_number unaligned, /* line number assigned by 355 */ 3 40 3 is_hsla bit (1) unaligned, /* on if hsla, off if lsla */ 3 41 3 la_no bit (3) unaligned, /* line adapter (high or low speed) number */ 3 42 3 slot_no bit (6) unaligned, /* physical slot/subchannel number */ 3 43 2 terminal_id bit (18) unaligned, /* not used */ 3 44 3 45 2 terminal_type bit (9) unaligned, /* unused */ 3 46 2 cmd_data_len fixed bin (8) unaligned, /* no. of 6 bit chars in command data */ 3 47 2 op_code fixed bin (8) unaligned, /* op code */ 3 48 2 io_cmd fixed bin (8) unaligned, /* i/o cmd */ 3 49 3 50 2 command_data (3) bit (36) unaligned, /* data associated with op code */ 3 51 3 52 2 address unal, /* dcw buffer or circular queue address */ 3 53 3 data_addr bit (18) unaligned, /* data address */ 3 54 3 word_cnt fixed bin (18) unsigned unaligned, /* data length */ 3 55 2 pad3 bit (72) unaligned; 3 56 3 57 /* The structure below defines the long form of submailbox used by the FNP. Note that 3 58* the declaration of command_data and input_data is that used for the input_in_mailbox 3 59* operation; other FNP-initiated operations use the command_data format described by 3 60* the above (short mailbox) structure 3 61**/ 3 62 3 63 dcl 1 fnp_sub_mbx aligned based (subp), /* format used for FNP-controlled mailbox */ 3 64 2 dn355_no bit (3) unaligned, /* as above */ 3 65 2 pad1 bit (5) unaligned, 3 66 2 line_number unaligned, /* as above */ 3 67 3 is_hsla bit (1) unaligned, 3 68 3 la_no bit (3) unaligned, 3 69 3 slot_no bit (6) unaligned, 3 70 2 n_free_buffers fixed bin (17) unaligned, /* number of free blocks in FNP at present */ 3 71 3 72 2 pad3 bit (9) unaligned, 3 73 2 n_chars fixed bin (9) unsigned unaligned, /* number of data characters (if input) */ 3 74 2 op_code fixed bin (9) unsigned unaligned, /* as above */ 3 75 2 io_cmd fixed bin (9) unsigned unaligned, /* as above */ 3 76 3 77 2 input_data char (100) unaligned, /* input characters for input_in_mailbox op */ 3 78 2 command_data bit (36) unaligned; /* shouldn't need more than one word */ 3 79 3 80 /* The structure below defines the format of a long submailbox used for an accept_input operation 3 81* when the data is too long to fit directly in the mailbox. command_data and n_chars occupy the same position as for input_in_mailbox, above. 3 82**/ 3 83 3 84 dcl 1 input_sub_mbx aligned based (subp), 3 85 2 pad1 bit (8) unaligned, 3 86 2 line_number unaligned like sub_mbx.line_number, 3 87 2 n_free_buffers fixed bin (17) unaligned, /* number of free blocks in FNP at present */ 3 88 3 89 2 n_chars fixed bin (17) unaligned, /* total number of data characters */ 3 90 2 op_code fixed bin (9) unsigned unaligned, 3 91 2 io_cmd fixed bin (9) unsigned unaligned, 3 92 3 93 2 n_buffers fixed bin, /* number of buffers in this input chain */ 3 94 2 dcw (24), /* "pseudo-DCWs" used to specify buffer addresses and tallies */ 3 95 3 abs_addr bit (24) unaligned, /* supplied by CS */ 3 96 3 tally fixed bin (12) unsigned unaligned, /* in characters, supplied by FNP */ 3 97 2 command_data bit (36) unaligned; /* as above */ 3 98 3 99 dcl subp pointer; 3 100 dcl mbxp pointer; 3 101 3 102 /* END dn355_mailbox.incl.pl1 */ 104 105 4 1 /* Begin include file fnp_mpx_msg_.incl.pl1 BIM 83-12-20 */ 4 2 /* Message from ring 0 fnp mpx to user ring mpx manager */ 4 3 /* format: style3 */ 4 4 4 5 dcl fnp_msg_ptr pointer; 4 6 dcl 1 fnp_msg aligned based (fnp_msg_ptr), 4 7 2 fnp_no fixed bin (17) unal, 4 8 2 state fixed bin (17) unal, 4 9 2 flags unaligned, 4 10 3 deconfigured bit, 4 11 3 pad bit (35); 4 12 4 13 /* End include file fnp_mpx_msg_.incl.pl1 */ 106 107 108 109 110 fnp_no = a_fnp_no; 111 infop = addr (dn355_data$); 112 fnpp = addr (datanet_info.per_datanet (fnp_no)); 113 mbxp = fnp_info.mbx_pt; 114 fnp_msg_ptr = addr (event_message); 115 fnp_tag = fnp_info.fnp_tag; 116 117 fnp_msg.fnp_no = fnp_no; 118 119 stat_ptr = addr (datanet_mbx.crash_data); /* this is where bootload status goes */ 120 121 if ^fnp_boot_status.real_status /* bad news, status is not for real */ 122 then do; 123 call syserr (TELL, "Invalid bootload interrupt for FNP ^a, status ^w", fnp_tag, stat_ptr -> fb); 124 go to down; 125 end; 126 127 major = bin (fnp_boot_status.major_status, 3); /* get major status */ 128 /*** BOOTLOAD_OK now comes in for WIRED fnp's, since unwiring is done 129* by user ring in response to bootload completion, or on timeout. */ 130 131 if major < 0 | major > MAX_STATUS then do; 132 call syserr (TELL, "Unrecognized bootload status ^w for FNP ^a", stat_ptr -> fb, fnp_tag); 133 go to down; 134 end; 135 136 if major = UNWIRE_STATUS then return; /* this was just to tell us I/O was finished */ 137 138 offset = dn355_messages$boot_messages (major); /* get message describing major status */ 139 reasonp = ptr (addr (dn355_messages$boot_messages), offset); 140 call syserr (TELL, dn355_reason.msg, fnp_tag); 141 142 if major = INIT_ERROR /* more info in this case */ 143 then do; 144 sub_stat = max (0, fnp_boot_status.substatus); 145 if sub_stat > hbound (dn355_messages$config_messages, 1) then sub_stat = 0; 146 147 offset = dn355_messages$config_messages (sub_stat); 148 reasonp = ptr (addr (dn355_messages$config_messages), offset); 149 call syserr (TELL, dn355_reason.msg, fnp_boot_status.channel_no - 9, stat_ptr -> fb); 150 end; 151 152 if major = BOOTLOAD_OK /* good news */ 153 then do; 154 fnp_msg.state = FNP_UP; 155 fnp_info.running = "1"b; 156 end; 157 158 else do; /* bad news */ 159 down: 160 call syserr (TELL, "FNP ^a not loaded.", fnp_tag); 161 fnp_msg.state = FNP_DOWN; 162 end; 163 164 /* now tell process that started bootload */ 165 166 fnp_info.bootloading = "0"b; /* done now */ 167 call pxss$ring_0_wakeup (fnp_info.boot_process_id, fnp_info.boot_ev_chan, event_message, igcode); 168 169 return; 170 171 system_fault: 172 entry (a_fnp_no); 173 fnp_no = a_fnp_no; 174 infop = addr (dn355_data$); 175 fnpp = addr (datanet_info.per_datanet (fnp_no)); 176 mbxp = fnp_info.mbx_pt; 177 fnp_msg_ptr = addr (event_message); 178 fnp_tag = fnp_info.fnp_tag; 179 180 fnp_msg.fnp_no = fnp_no; 181 182 stat_ptr = addr (datanet_mbx.crash_data); /* this is where bootload status goes */ 183 go to down; 184 185 /* BEGIN MESSAGE DOCUMENTATION 186* 187* Message: 188* Invalid bootload interrupt for FNP X, status N 189* 190* S: $info 191* 192* T: When bootloading an FNP 193* 194* M: The FNP responded to the bootload attempt with an interrupt, but the high-order 195* bit of the reported status was not on. N is the reported status (in octal). 196* 197* A: $inform 198* 199* 200* Message: 201* Unrecognized bootload status N for FNP X 202* 203* S: $info 204* 205* T: When bootloading an FNP 206* 207* M: The status reported by an FNP in response to a bootload attempt was not one of the ones 208* recognized. N is the reported status (in octal). 209* 210* A: $inform 211* 212* 213* Message: 214* FNP X loaded successfully 215* 216* S: $info 217* 218* T: When bootloading an FNP 219* 220* M: The FNP bootload has completed successfully. 221* 222* A: This message is for informational purposes only. 223* 224* 225* Message: 226* checksum error in core image for FNP X 227* 228* S: $info 229* 230* T: When bootloading an FNP 231* 232* M: The core image received for loading in the FNP had a checksum error. 233* 234* A: Try to load the FNP again. If the error recurs, either the DIA hardware 235* is failing, or the core image in the Multics hierarchy is damaged. In the 236* latter case, the core image must be rebound. 237* 238* 239* Message: 240* error reading core image for FNP X 241* 242* S: $info 243* 244* T: When bootloading an FNP 245* 246* M: An I/O error was detected by the FNP bootload program while attempting to read 247* the core image into FNP memory. A hardware failure of either the DIA or the Multics IOM is indicated. 248* 249* A: Try the FNP load again. If it fails again, consult Field Engineering. 250* 251* 252* Message: 253* configuration error reported by bootloading program for FNP X 254* 255* S: $info 256* 257* T: When bootloading an FNP 258* 259* M: The FNP bootload program, gicb, found an inconsistency in the FNP configuration. 260* 261* A: $inform 262* 263* 264* Message: 265* configuration error reported by FNP X: DETAILS 266* 267* S: $info 268* 269* T: When bootloading an FNP 270* 271* M: The FNP initialization program detected an error or inconsistency in 272* the FNP configuration. DETAILS is a more specific description of the error. 273* 274* A: If possible, correct the error, either by updating the CDT to reflect the 275* actual configuration, or recabling the FNP. If the error cannot be corrected 276* or is not understood, inform the systems programming staff. 277* 278* 279* Message: 280* FNP X not loaded. 281* 282* S: $info 283* 284* T: When bootloading an FNP 285* 286* M: The attempted bootload was not successful. This message is always preceded by one of the 287* above error messages. 288* 289* A: This message is for informational purposes only. 290* 291* END MESSAGE DOCUMENTATION */ 292 293 end /* dn355_boot_interrupt */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0824.9 dn355_boot_interrupt.pl1 >special_ldd>install>MR12.3-1114>dn355_boot_interrupt.pl1 100 1 09/12/79 1808.7 dn355_messages.incl.pl1 >ldd>include>dn355_messages.incl.pl1 102 2 10/26/89 2011.9 dn355_data.incl.pl1 >ldd>include>dn355_data.incl.pl1 104 3 10/20/82 0938.5 dn355_mailbox.incl.pl1 >ldd>include>dn355_mailbox.incl.pl1 106 4 07/11/84 0937.3 fnp_mpx_msg_.incl.pl1 >ldd>include>fnp_mpx_msg_.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. BOOTLOAD_OK constant fixed bin(17,0) initial dcl 81 ref 152 FNP_DOWN constant fixed bin(17,0) initial dcl 90 ref 161 FNP_UP constant fixed bin(17,0) initial dcl 89 ref 154 INIT_ERROR constant fixed bin(17,0) initial dcl 85 ref 142 MAX_STATUS constant fixed bin(17,0) initial dcl 87 ref 131 TELL 000004 constant fixed bin(17,0) initial dcl 80 set ref 123* 132* 140* 149* 159* UNWIRE_STATUS constant fixed bin(17,0) initial dcl 86 ref 136 a_fnp_no parameter fixed bin(17,0) dcl 44 ref 23 110 171 173 addr builtin function dcl 95 ref 111 112 114 119 139 148 174 175 177 182 bin builtin function dcl 95 ref 127 boot_ev_chan 36 based fixed bin(71,0) level 2 dcl 2-67 set ref 167* boot_process_id 40 based bit(36) level 2 dcl 2-67 set ref 167* bootloading 30(01) based bit(1) level 3 packed packed unaligned dcl 2-67 set ref 166* channel_no 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 69 ref 149 crash_data 6 based structure level 2 dcl 3-12 set ref 119 182 datanet_info based structure level 1 dcl 2-52 datanet_mbx based structure level 1 dcl 3-12 dn355_data$ 000020 external static fixed bin(17,0) dcl 2-47 set ref 111 174 dn355_messages$boot_messages 000014 external static fixed bin(17,0) array dcl 1-19 set ref 138 139 dn355_messages$config_messages 000016 external static fixed bin(17,0) array dcl 1-21 set ref 145 147 148 dn355_reason based structure level 1 dcl 1-40 event_message 000110 automatic fixed bin(71,0) dcl 56 set ref 114 167* 177 fb based fixed bin(35,0) dcl 67 set ref 123* 132* 149* flags 30 based structure level 2 dcl 2-67 fnp_boot_status based structure level 1 dcl 69 fnp_id 7 based structure level 2 dcl 2-67 fnp_info based structure level 1 dcl 2-67 fnp_msg based structure level 1 dcl 4-6 fnp_msg_ptr 000124 automatic pointer dcl 4-5 set ref 114* 117 154 161 177* 180 fnp_no 000100 automatic fixed bin(17,0) dcl 49 in procedure "dn355_boot_interrupt" set ref 110* 112 117 173* 175 180 fnp_no based fixed bin(17,0) level 2 in structure "fnp_msg" packed packed unaligned dcl 4-6 in procedure "dn355_boot_interrupt" set ref 117* 180* fnp_tag 7 based char(1) level 3 in structure "fnp_info" packed packed unaligned dcl 2-67 in procedure "dn355_boot_interrupt" ref 115 178 fnp_tag 000101 automatic char(1) packed unaligned dcl 51 in procedure "dn355_boot_interrupt" set ref 115* 123* 132* 140* 159* 178* fnpp 000120 automatic pointer dcl 2-50 set ref 112* 113 115 155 166 167 167 175* 176 178 hbound builtin function dcl 95 ref 145 igcode 000102 automatic fixed bin(35,0) dcl 52 set ref 167* infop 000116 automatic pointer dcl 2-49 set ref 111* 112 174* 175 length based fixed bin(8,0) level 2 packed packed unaligned dcl 1-40 ref 140 140 149 149 line_number 0(08) based structure level 2 packed packed unaligned dcl 3-36 major 000106 automatic fixed bin(17,0) dcl 54 set ref 127* 131 131 136 138 142 152 major_status 0(03) based bit(3) level 2 packed packed unaligned dcl 69 ref 127 max builtin function dcl 95 ref 144 max_no_355s internal static fixed bin(17,0) initial dcl 2-45 ref 2-52 mbx_pt based pointer level 2 dcl 2-67 ref 113 176 mbxp 000122 automatic pointer dcl 3-100 set ref 113* 119 176* 182 msg 0(09) based char level 2 packed packed unaligned dcl 1-40 set ref 140* 149* offset 000112 automatic fixed bin(17,0) dcl 57 set ref 138* 139 147* 148 per_datanet 22 based structure array level 2 dcl 2-52 set ref 112 175 ptr builtin function dcl 95 ref 139 148 pxss$ring_0_wakeup 000012 constant entry external dcl 63 ref 167 real_status based bit(1) level 2 packed packed unaligned dcl 69 ref 121 reasonp 000114 automatic pointer dcl 1-24 set ref 139* 140 148* 149 running 30(02) based bit(1) level 3 packed packed unaligned dcl 2-67 set ref 155* stat_ptr 000104 automatic pointer dcl 53 set ref 119* 121 123 127 132 144 149 149 182* state 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 4-6 set ref 154* 161* sub_mbx based structure level 1 dcl 3-36 sub_stat 000107 automatic fixed bin(17,0) dcl 55 set ref 144* 145 145* 147 substatus 0(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 69 ref 144 syserr 000010 constant entry external dcl 62 ref 123 132 140 149 159 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CHECKSUM_ERROR internal static fixed bin(17,0) initial dcl 82 FIRST_BOOTLOAD_PAGEX internal static fixed bin(17,0) initial dcl 2-166 FIRST_TTY_BUF_PAGEX internal static fixed bin(17,0) initial dcl 2-167 GICB_ERROR internal static fixed bin(17,0) initial dcl 84 READ_ERROR internal static fixed bin(17,0) initial dcl 83 astep automatic pointer dcl 50 dn355_messages$error_messages external static fixed bin(17,0) array dcl 1-17 dn355_messages$fault_names external static char(16) array dcl 1-13 dn355_messages$per_module external static fixed bin(17,0) dcl 1-15 dn355_modules based structure array level 1 dcl 1-29 fnp_sub_mbx based structure level 1 dcl 3-63 input_sub_mbx based structure level 1 dcl 3-84 message_offset based fixed bin(17,0) array dcl 1-35 modulep automatic pointer dcl 1-23 subp automatic pointer dcl 3-99 substr builtin function dcl 95 NAMES DECLARED BY EXPLICIT CONTEXT. dn355_boot_interrupt 000050 constant entry external dcl 23 down 000333 constant label dcl 159 ref 124 133 183 system_fault 000405 constant entry external dcl 171 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 544 566 440 554 Length 1036 440 22 233 104 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dn355_boot_interrupt 124 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dn355_boot_interrupt 000100 fnp_no dn355_boot_interrupt 000101 fnp_tag dn355_boot_interrupt 000102 igcode dn355_boot_interrupt 000104 stat_ptr dn355_boot_interrupt 000106 major dn355_boot_interrupt 000107 sub_stat dn355_boot_interrupt 000110 event_message dn355_boot_interrupt 000112 offset dn355_boot_interrupt 000114 reasonp dn355_boot_interrupt 000116 infop dn355_boot_interrupt 000120 fnpp dn355_boot_interrupt 000122 mbxp dn355_boot_interrupt 000124 fnp_msg_ptr dn355_boot_interrupt THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. pxss$ring_0_wakeup syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dn355_data$ dn355_messages$boot_messages dn355_messages$config_messages LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 23 000045 110 000055 111 000060 112 000062 113 000065 114 000067 115 000071 117 000074 119 000077 121 000101 123 000104 124 000133 127 000134 131 000140 132 000144 133 000173 136 000174 138 000176 139 000200 140 000204 142 000234 144 000237 145 000246 147 000251 148 000255 149 000261 152 000322 154 000324 155 000327 156 000332 159 000333 161 000357 166 000362 167 000365 169 000402 171 000403 173 000412 174 000415 175 000420 176 000423 177 000425 178 000427 180 000431 182 000434 183 000436 ----------------------------------------------------------- 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