1 /****^  ***********************************************************
 2         *                                                         *
 3         * Copyright, (C) Honeywell Bull Inc., 1987                *
 4         *                                                         *
 5         * Copyright, (C) Honeywell Information Systems Inc., 1984 *
 6         *                                                         *
 7         *********************************************************** */
 8 
 9 
10 /****^  HISTORY COMMENTS:
11   1) change(87-02-26,Farley), approve(87-04-15,MCR7661),
12      audit(87-04-21,Fawcett), install(87-04-28,MR12.1-1028):
13      Added check for fgbx.io_reconfig, which will be on when an attempted I/O
14      reconfiguration may corrupt memory (e.g. adding an IOM).
15                                                    END HISTORY COMMENTS */
16 
17 
18 bce_continue: proc;
19 
20 /* return to Multics; also return to bos.
21 Keith Loepere, January 1984. */
22 
23 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */
24 
25 dcl  addr                             builtin;
26 dcl  com_err_                         entry () options (variable);
27 dcl  pmut$special_bce_return          entry (bit (72) aligned);
28 dcl  ssenb                            bit (1) aligned;
29 dcl  sys_boot_info$assume_config_deck bit (1) aligned external;
30 dcl  1 toehold$                       aligned like toe_hold external;
31 dcl  unspec                           builtin;
32 
33           if ^ (sys_info$collection_1_phase = CRASH_INITIALIZATION | sys_info$collection_1_phase = BCE_CRASH_INITIALIZATION) then do;
34                call com_err_ (0, "continue", "No image to restart.");
35                return;
36           end;
37           fgbxp = addr (flagbox$);
38           if fgbx.io_reconfig then do;
39                call com_err_ (0, "continue", "Not allowed to restart. Memory may have been corrupted.");
40                return;
41           end;
42 
43           ssenb = fgbx.rtb.ssenb;                 /* zero all rtb except ssenb */
44           unspec (fgbx.rtb) = "0"b;
45           fgbx.rtb.ssenb = ssenb;
46           call pmut$special_bce_return (toehold$.entry_sequences (TOE_HOLD_RESTART_ENTRY));
47           return;
48 
49 bce_bos: entry;
50 
51           if ^sys_boot_info$assume_config_deck then do;
52                call com_err_ (0, "bos", "BOS is not present.");
53                return;
54           end;
55           call pmut$special_bce_return (toehold$.entry_sequences (TOE_HOLD_BOS_MULTICS_ENTRY));
56           return;
57 
58 %page; %include collection_1_phases;
59 %page; %include flagbox;
60 %page; %include toe_hold;
61      end;