COMPILATION LISTING OF SEGMENT save_history_registers Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1637.6 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 save_history_registers: proc; 12 13 /* save_history_registers - command to set, reset or display state of the per-process switch, 14* pds$save_history_regs or the per-system switch wired_hardcore_data$save_hregs, (with the -priv 15* control arg). When signalable faults ocurr, history registers are either stored or not stored in the 16* signallers stack frame (return_to_ring_0_) depending on the state of both of these switches. If the 17* per-system switch is on, then all processes will store history registers in the signallers stack 18* frame. If the per-system switch is off but a users per-process switch is on, then only that users 19* process will store history registers. The default state of both the per-process and the per-system 20* switchs is "0"b or off. 21* 22* Written 9/16/80 by J. A. Bush for the DPS8/70M CPU 23**/ 24 25 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 26 dcl (com_err_, ioa_) entry options (variable); 27 dcl hcs_$history_regs_set entry (bit (1) aligned); 28 dcl hcs_$history_regs_get entry (bit (1) aligned); 29 dcl hphcs_$history_regs_get entry (bit (1) aligned); 30 dcl hphcs_$history_regs_set entry (bit (1) aligned); 31 dcl ap ptr; 32 dcl (al, i) fixed bin; 33 dcl code fixed bin (35); 34 dcl (desired_state, old_state, priv_sw, print_sw, set_sw) bit (1) aligned; 35 dcl arg char (al) based (ap); 36 dcl pname char (22) int static options (constant) init ("save_history_registers"); 37 dcl error_table_$bad_arg fixed bin (35) ext; 38 39 priv_sw, print_sw, set_sw = "0"b; 40 call cu_$arg_ptr (1, ap, al, code); /* get arg * */ 41 if code ^= 0 then do; 42 usage: call com_err_ (code, pname, "Usage: ^a {on | off} {-priv} {-print (-pr)}", pname); 43 return; 44 end; 45 do i = 2 by 1 while (code = 0); 46 if arg = "-priv" then priv_sw = "1"b; /* user wants per-system history regs */ 47 else if arg = "-print" | arg = "-pr" then print_sw = "1"b; /* user wants old state of switch */ 48 else if arg = "on" then /* user wants history regs turned on */ 49 set_sw, desired_state = "1"b; 50 else if arg = "off" then do; /* user wants saving of hregs turned off */ 51 desired_state = "0"b; 52 set_sw = "1"b; 53 end; 54 else do; 55 code = error_table_$bad_arg; 56 go to usage; /* tell user what is valid */ 57 end; 58 call cu_$arg_ptr (i, ap, al, code); /* get next arg */ 59 end; 60 if priv_sw then do; /* if dealing with per-system history reg saving */ 61 if print_sw then do; /* if user wants to know old state */ 62 call hphcs_$history_regs_get (old_state); /* get current setting */ 63 call ioa_ ("per-system history register saving ^[was previously^;is^] turned ^[on^;off^]", 64 set_sw, old_state); 65 end; 66 if set_sw then /* if user wants to change state */ 67 call hphcs_$history_regs_set (desired_state); 68 end; 69 else do; /* dealing with per-process history regs */ 70 if print_sw then do; /* if user wants to know old state */ 71 call hcs_$history_regs_get (old_state); /* get current setting */ 72 call ioa_ ("per-process history register saving ^[was previously^;is^] turned ^[on^;off^]", 73 set_sw, old_state); 74 end; 75 if set_sw then /* if user wants to change state */ 76 call hcs_$history_regs_set (desired_state); 77 end; 78 79 end save_history_registers; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1505.7 save_history_registers.pl1 >dumps>old>recomp>save_history_registers.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. al 000102 automatic fixed bin(17,0) dcl 32 set ref 40* 46 47 47 48 50 58* ap 000100 automatic pointer dcl 31 set ref 40* 46 47 47 48 50 58* arg based char unaligned dcl 35 ref 46 47 47 48 50 code 000104 automatic fixed bin(35,0) dcl 33 set ref 40* 41 42* 45 55* 58* com_err_ 000012 constant entry external dcl 26 ref 42 cu_$arg_ptr 000010 constant entry external dcl 25 ref 40 58 desired_state 000105 automatic bit(1) dcl 34 set ref 48* 51* 66* 75* error_table_$bad_arg 000026 external static fixed bin(35,0) dcl 37 ref 55 hcs_$history_regs_get 000020 constant entry external dcl 28 ref 71 hcs_$history_regs_set 000016 constant entry external dcl 27 ref 75 hphcs_$history_regs_get 000022 constant entry external dcl 29 ref 62 hphcs_$history_regs_set 000024 constant entry external dcl 30 ref 66 i 000103 automatic fixed bin(17,0) dcl 32 set ref 45* 58* ioa_ 000014 constant entry external dcl 26 ref 63 72 old_state 000106 automatic bit(1) dcl 34 set ref 62* 63* 71* 72* pname 000000 constant char(22) initial unaligned dcl 36 set ref 42* 42* print_sw 000110 automatic bit(1) dcl 34 set ref 39* 47* 61 70 priv_sw 000107 automatic bit(1) dcl 34 set ref 39* 46* 60 set_sw 000111 automatic bit(1) dcl 34 set ref 39* 48* 52* 63* 66 72* 75 NAMES DECLARED BY EXPLICIT CONTEXT. save_history_registers 000105 constant entry external dcl 11 usage 000135 constant label dcl 42 ref 56 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 514 544 401 524 Length 726 401 30 146 113 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME save_history_registers 156 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME save_history_registers 000100 ap save_history_registers 000102 al save_history_registers 000103 i save_history_registers 000104 code save_history_registers 000105 desired_state save_history_registers 000106 old_state save_history_registers 000107 priv_sw save_history_registers 000110 print_sw save_history_registers 000111 set_sw save_history_registers THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr hcs_$history_regs_get hcs_$history_regs_set hphcs_$history_regs_get hphcs_$history_regs_set ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000104 39 000112 40 000115 41 000133 42 000135 43 000164 45 000165 46 000171 47 000202 48 000215 50 000225 51 000231 52 000232 53 000234 55 000235 56 000240 58 000241 59 000256 60 000260 61 000262 62 000264 63 000273 66 000316 68 000330 70 000331 71 000333 72 000342 75 000365 79 000377 ----------------------------------------------------------- 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