COMPILATION LISTING OF SEGMENT find_condition_info_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/05/86 1030.7 mst Wed Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 find_condition_info_: proc (a_sp, a_cip, a_code); 11 12 /* This procedure is given a pointer to a stack frame being used when a condition occurred 13* and returns the information relevant to that condition. 14* 0) coded by M. Weaver 6 / 21 / 73 15* 1) modified by C. D. Tavares on 09/28/78 to fix bug where signal_ args were 16* always assumed to be in stack (via dead process code) 17* 2) modified by JRDavis 10 May 79 to use new include file arg_list.incl, stackframeptr () */ 18 /* Fixed not to fault if no condition frame 12/12/79 S. Herbst */ 19 /* Fixed to initialize fff_sw correctly 11/22/83 by M. Weaver */ 20 /* Changed to copy stack_frame.return_ptr through RETURN_PTR_MASK 03/07/84 S. Herbst */ 21 22 23 declare (a_sp, a_cip, nsp, locp, callp, temptr) ptr; 24 declare ptra (0 : 10) ptr based aligned; 25 declare bptr ptr based; 26 declare ap ptr; /* to arg list */ 27 declare live_stack bit (1) aligned, 28 old_stack_segno bit (18); 29 30 declare (a_code, code) fixed bin (35); 31 declare error_table_$noentry ext fixed bin (35); 32 declare (lng, nargs) fixed bin; 33 34 declare op_name char (32) aligned; 35 declare bchar char (lng) based unaligned; 36 37 declare (fff_sw, trap_sw, frame_flag) bit (1) aligned; 38 declare spno bit (18) aligned; 39 40 41 declare find_condition_frame_ entry (ptr) returns (ptr); 42 declare is_condition_frame_ entry (ptr) returns (bit (1) aligned); 43 declare interpret_op_ptr_ entry (ptr, ptr, ptr, char (32) aligned, bit (1) aligned); 44 declare (addr, addrel, baseno, baseptr, bin, null, pointer, ptr, rel, rtrim, stackframeptr, substr) builtin; 45 46 declare 1 string_desc aligned based, /* overlay of string descriptor */ 47 2 xxx bit (18) unaligned, 48 2 string_lng bit (18) unaligned; 49 50 declare 1 auto_cond_info like condition_info; 51 1 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 1 2* 1 3* James R. Davis 10 May 79 */ 1 4 1 5 1 6 1 7 /****^ HISTORY COMMENTS: 1 8* 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 1 9* audit(86-07-15,Schroth): 1 10* added command_name_arglist declaration to allow the storage of the 1 11* command name given to the command processor 1 12* END HISTORY COMMENTS */ 1 13 1 14 dcl 1 arg_list aligned based, 1 15 2 header, 1 16 3 arg_count fixed bin (17) unsigned unal, 1 17 3 pad1 bit (1) unal, 1 18 3 call_type fixed bin (18) unsigned unal, 1 19 3 desc_count fixed bin (17) unsigned unal, 1 20 3 pad2 bit (19) unal, 1 21 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 1 22 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 1 23 1 24 1 25 dcl 1 command_name_arglist aligned based, 1 26 2 header, 1 27 3 arg_count fixed bin (17) unsigned unal, 1 28 3 pad1 bit (1) unal, 1 29 3 call_type fixed bin (18) unsigned unal, 1 30 3 desc_count fixed bin (17) unsigned unal, 1 31 3 mbz bit(1) unal, 1 32 3 has_command_name bit(1) unal, 1 33 3 pad2 bit (17) unal, 1 34 2 arg_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 1 35 2 desc_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 1 36 2 name, 1 37 3 command_name_ptr pointer, 1 38 3 command_name_length fixed bin (21); 1 39 1 40 1 41 1 42 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 1 43 2 header, 1 44 3 arg_count fixed bin (17) unsigned unal, 1 45 3 pad1 bit (1) unal, 1 46 3 call_type fixed bin (18) unsigned unal, 1 47 3 desc_count fixed bin (17) unsigned unal, 1 48 3 pad2 bit (19) unal, 1 49 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 1 50 2 envptr ptr, 1 51 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 1 52 1 53 1 54 dcl ( 1 55 Quick_call_type init (0), 1 56 Interseg_call_type init (4), 1 57 Envptr_supplied_call_type 1 58 init (8) 1 59 ) fixed bin (18) unsigned unal int static options (constant); 1 60 1 61 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 1 62* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 1 63* an argument list of the proper size in the user's stack 1 64* 1 65**/ 1 66 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 52 53 2 1 /* BEGIN INCLUDE FILE its.incl.pl1 2 2* modified 27 July 79 by JRDavis to add its_unsigned 2 3* Internal format of ITS pointer, including ring-number field for follow-on processor */ 2 4 2 5 dcl 1 its based aligned, /* declaration for ITS type pointer */ 2 6 2 pad1 bit (3) unaligned, 2 7 2 segno bit (15) unaligned, /* segment number within the pointer */ 2 8 2 ringno bit (3) unaligned, /* ring number within the pointer */ 2 9 2 pad2 bit (9) unaligned, 2 10 2 its_mod bit (6) unaligned, /* should be 43(8) */ 2 11 2 12 2 offset bit (18) unaligned, /* word offset within the addressed segment */ 2 13 2 pad3 bit (3) unaligned, 2 14 2 bit_offset bit (6) unaligned, /* bit offset within the word */ 2 15 2 pad4 bit (3) unaligned, 2 16 2 mod bit (6) unaligned; /* further modification */ 2 17 2 18 dcl 1 itp based aligned, /* declaration for ITP type pointer */ 2 19 2 pr_no bit (3) unaligned, /* number of pointer register to use */ 2 20 2 pad1 bit (27) unaligned, 2 21 2 itp_mod bit (6) unaligned, /* should be 41(8) */ 2 22 2 23 2 offset bit (18) unaligned, /* word offset from pointer register word offset */ 2 24 2 pad2 bit (3) unaligned, 2 25 2 bit_offset bit (6) unaligned, /* bit offset relative to new word offset */ 2 26 2 pad3 bit (3) unaligned, 2 27 2 mod bit (6) unaligned; /* further modification */ 2 28 2 29 2 30 dcl 1 its_unsigned based aligned, /* just like its, but with unsigned binary */ 2 31 2 pad1 bit (3) unaligned, 2 32 2 segno fixed bin (15) unsigned unaligned, 2 33 2 ringno fixed bin (3) unsigned unaligned, 2 34 2 pad2 bit (9) unaligned, 2 35 2 its_mod bit (6) unaligned, 2 36 2 37 2 offset fixed bin (18) unsigned unaligned, 2 38 2 pad3 bit (3) unaligned, 2 39 2 bit_offset fixed bin (6) unsigned unaligned, 2 40 2 pad4 bit (3) unaligned, 2 41 2 mod bit (6) unaligned; 2 42 2 43 dcl 1 itp_unsigned based aligned, /* just like itp, but with unsigned binary where appropriate */ 2 44 2 pr_no fixed bin (3) unsigned unaligned, 2 45 2 pad1 bit (27) unaligned, 2 46 2 itp_mod bit (6) unaligned, 2 47 2 48 2 offset fixed bin (18) unsigned unaligned, 2 49 2 pad2 bit (3) unaligned, 2 50 2 bit_offset fixed bin (6) unsigned unaligned, 2 51 2 pad3 bit (3) unaligned, 2 52 2 mod bit (6) unaligned; 2 53 2 54 2 55 dcl ITS_MODIFIER bit (6) unaligned internal static options (constant) init ("43"b3); 2 56 dcl ITP_MODIFIER bit (6) unaligned internal static options (constant) init ("41"b3); 2 57 2 58 /* END INCLUDE FILE its.incl.pl1 */ 54 55 3 1 /* BEGIN INCLUDE FILE ... stack_frame.incl.pl1 ... */ 3 2 3 3 /* format: off */ 3 4 3 5 /* Modified: 16 Dec 1977, D. Levin - to add fio_ps_ptr and pl1_ps_ptr */ 3 6 /* Modified: 3 Feb 1978, P. Krupp - to add run_unit_manager bit & main_proc bit */ 3 7 /* Modified: 21 March 1978, D. Levin - change fio_ps_ptr to support_ptr */ 3 8 /* Modified: 03/01/84, S. Herbst - Added RETURN_PTR_MASK */ 3 9 3 10 3 11 /****^ HISTORY COMMENTS: 3 12* 1) change(86-09-15,Kissel), approve(86-09-15,MCR7473), 3 13* audit(86-10-01,Fawcett), install(86-11-03,MR12.0-1206): 3 14* Modified to add constants for the translator_id field in the stack_frame 3 15* structure. 3 16* END HISTORY COMMENTS */ 3 17 3 18 3 19 dcl RETURN_PTR_MASK bit (72) int static options (constant) /* mask to be AND'd with stack_frame.return_ptr */ 3 20 init ("777777777777777777000000"b3); /* when copying, to ignore bits that a call fills */ 3 21 /* with indicators (nonzero for Fortran hexfp caller) */ 3 22 /* say: unspec(ptr) = unspec(stack_frame.return_ptr) & RETURN_PTR_MASK; */ 3 23 3 24 dcl TRANSLATOR_ID_PL1V2 bit (18) internal static options (constant) init ("000000"b3); 3 25 dcl TRANSLATOR_ID_ALM bit (18) internal static options (constant) init ("000001"b3); 3 26 dcl TRANSLATOR_ID_PL1V1 bit (18) internal static options (constant) init ("000002"b3); 3 27 dcl TRANSLATOR_ID_SIGNAL_CALLER bit (18) internal static options (constant) init ("000003"b3); 3 28 dcl TRANSLATOR_ID_SIGNALLER bit (18) internal static options (constant) init ("000004"b3); 3 29 3 30 3 31 dcl sp pointer; /* pointer to beginning of stack frame */ 3 32 3 33 dcl stack_frame_min_length fixed bin static init(48); 3 34 3 35 3 36 dcl 1 stack_frame based(sp) aligned, 3 37 2 pointer_registers(0 : 7) ptr, 3 38 2 prev_sp pointer, 3 39 2 next_sp pointer, 3 40 2 return_ptr pointer, 3 41 2 entry_ptr pointer, 3 42 2 operator_and_lp_ptr ptr, /* serves as both */ 3 43 2 arg_ptr pointer, 3 44 2 static_ptr ptr unaligned, 3 45 2 support_ptr ptr unal, /* only used by fortran I/O */ 3 46 2 on_unit_relp1 bit(18) unaligned, 3 47 2 on_unit_relp2 bit(18) unaligned, 3 48 2 translator_id bit(18) unaligned, /* Translator ID (see constants above) 3 49* 0 => PL/I version II 3 50* 1 => ALM 3 51* 2 => PL/I version I 3 52* 3 => signal caller frame 3 53* 4 => signaller frame */ 3 54 2 operator_return_offset bit(18) unaligned, 3 55 2 x(0: 7) bit(18) unaligned, /* index registers */ 3 56 2 a bit(36), /* accumulator */ 3 57 2 q bit(36), /* q-register */ 3 58 2 e bit(36), /* exponent */ 3 59 2 timer bit(27) unaligned, /* timer */ 3 60 2 pad bit(6) unaligned, 3 61 2 ring_alarm_reg bit(3) unaligned; 3 62 3 63 3 64 dcl 1 stack_frame_flags based(sp) aligned, 3 65 2 pad(0 : 7) bit(72), /* skip over prs */ 3 66 2 xx0 bit(22) unal, 3 67 2 main_proc bit(1) unal, /* on if frame belongs to a main procedure */ 3 68 2 run_unit_manager bit(1) unal, /* on if frame belongs to run unit manager */ 3 69 2 signal bit(1) unal, /* on if frame belongs to logical signal_ */ 3 70 2 crawl_out bit(1) unal, /* on if this is a signal caller frame */ 3 71 2 signaller bit(1) unal, /* on if next frame is signaller's */ 3 72 2 link_trap bit(1) unal, /* on if this frame was made by the linker */ 3 73 2 support bit(1) unal, /* on if frame belongs to a support proc */ 3 74 2 condition bit(1) unal, /* on if condition established in this frame */ 3 75 2 xx0a bit(6) unal, 3 76 2 xx1 fixed bin, 3 77 2 xx2 fixed bin, 3 78 2 xx3 bit(25) unal, 3 79 2 old_crawl_out bit (1) unal, /* on if this is a signal caller frame */ 3 80 2 old_signaller bit(1) unal, /* on if next frame is signaller's */ 3 81 2 xx3a bit(9) unaligned, 3 82 2 xx4(9) bit(72) aligned, 3 83 2 v2_pl1_op_ret_base ptr, /* When a V2 PL/I program calls an operator the 3 84* * operator puts a pointer to the base of 3 85* * the calling procedure here. (text base ptr) */ 3 86 2 xx5 bit(72) aligned, 3 87 2 pl1_ps_ptr ptr; /* ptr to ps for this frame; also used by fio. */ 3 88 3 89 /* format: on */ 3 90 3 91 /* END INCLUDE FILE ... stack_frame.incl.pl1 */ 56 57 4 1 /* BEGIN INCLUDE FILE ... stack_header.incl.pl1 .. 3/72 Bill Silver */ 4 2 /* modified 7/76 by M. Weaver for *system links and more system use of areas */ 4 3 /* modified 3/77 by M. Weaver to add rnt_ptr */ 4 4 /* Modified April 1983 by C. Hornig for tasking */ 4 5 4 6 /****^ HISTORY COMMENTS: 4 7* 1) change(86-06-24,DGHowe), approve(86-06-24,MCR7396), 4 8* audit(86-08-05,Schroth), install(86-11-03,MR12.0-1206): 4 9* added the heap_header_ptr definition. 4 10* 2) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 4 11* audit(86-10-10,Fawcett), install(86-11-03,MR12.0-1206): 4 12* Modified to support control point management. These changes were actually 4 13* made in February 1985 by G. Palter. 4 14* 3) change(86-10-22,Fawcett), approve(86-10-22,MCR7473), 4 15* audit(86-10-22,Farley), install(86-11-03,MR12.0-1206): 4 16* Remove the old_lot pointer and replace it with cpm_data_ptr. Use the 18 4 17* bit pad after cur_lot_size for the cpm_enabled. This was done to save some 4 18* space int the stack header and change the cpd_ptr unal to cpm_data_ptr 4 19* (ITS pair). 4 20* END HISTORY COMMENTS */ 4 21 4 22 /* format: style2 */ 4 23 4 24 dcl sb ptr; /* the main pointer to the stack header */ 4 25 4 26 dcl 1 stack_header based (sb) aligned, 4 27 2 pad1 (4) fixed bin, /* (0) also used as arg list by outward_call_handler */ 4 28 2 cpm_data_ptr ptr, /* (4) pointer to control point which owns this stack */ 4 29 2 combined_stat_ptr ptr, /* (6) pointer to area containing separate static */ 4 30 2 clr_ptr ptr, /* (8) pointer to area containing linkage sections */ 4 31 2 max_lot_size fixed bin (17) unal, /* (10) DU number of words allowed in lot */ 4 32 2 main_proc_invoked fixed bin (11) unal, /* (10) DL nonzero if main procedure invoked in run unit */ 4 33 2 have_static_vlas bit (1) unal, /* (10) DL "1"b if (very) large arrays are being used in static */ 4 34 2 pad4 bit (2) unal, 4 35 2 run_unit_depth fixed bin (2) unal, /* (10) DL number of active run units stacked */ 4 36 2 cur_lot_size fixed bin (17) unal, /* (11) DU number of words (entries) in lot */ 4 37 2 cpm_enabled bit (18) unal, /* (11) DL non-zero if control point management is enabled */ 4 38 2 system_free_ptr ptr, /* (12) pointer to system storage area */ 4 39 2 user_free_ptr ptr, /* (14) pointer to user storage area */ 4 40 2 null_ptr ptr, /* (16) */ 4 41 2 stack_begin_ptr ptr, /* (18) pointer to first stack frame on the stack */ 4 42 2 stack_end_ptr ptr, /* (20) pointer to next useable stack frame */ 4 43 2 lot_ptr ptr, /* (22) pointer to the lot for the current ring */ 4 44 2 signal_ptr ptr, /* (24) pointer to signal procedure for current ring */ 4 45 2 bar_mode_sp ptr, /* (26) value of sp before entering bar mode */ 4 46 2 pl1_operators_ptr ptr, /* (28) pointer to pl1_operators_$operator_table */ 4 47 2 call_op_ptr ptr, /* (30) pointer to standard call operator */ 4 48 2 push_op_ptr ptr, /* (32) pointer to standard push operator */ 4 49 2 return_op_ptr ptr, /* (34) pointer to standard return operator */ 4 50 2 return_no_pop_op_ptr 4 51 ptr, /* (36) pointer to standard return / no pop operator */ 4 52 2 entry_op_ptr ptr, /* (38) pointer to standard entry operator */ 4 53 2 trans_op_tv_ptr ptr, /* (40) pointer to translator operator ptrs */ 4 54 2 isot_ptr ptr, /* (42) pointer to ISOT */ 4 55 2 sct_ptr ptr, /* (44) pointer to System Condition Table */ 4 56 2 unwinder_ptr ptr, /* (46) pointer to unwinder for current ring */ 4 57 2 sys_link_info_ptr ptr, /* (48) pointer to *system link name table */ 4 58 2 rnt_ptr ptr, /* (50) pointer to Reference Name Table */ 4 59 2 ect_ptr ptr, /* (52) pointer to event channel table */ 4 60 2 assign_linkage_ptr ptr, /* (54) pointer to storage for (obsolete) hcs_$assign_linkage */ 4 61 2 heap_header_ptr ptr, /* (56) pointer to the heap header for this ring */ 4 62 2 trace, 4 63 3 frames, 4 64 4 count fixed bin, /* (58) number of trace frames */ 4 65 4 top_ptr ptr unal, /* (59) pointer to last trace frame */ 4 66 3 in_trace bit (36) aligned, /* (60) trace antirecursion flag */ 4 67 2 pad2 bit (36), /* (61) */ 4 68 2 pad5 pointer; /* (62) pointer to future stuff */ 4 69 4 70 /* The following offset refers to a table within the pl1 operator table. */ 4 71 4 72 dcl tv_offset fixed bin init (361) internal static; 4 73 /* (551) octal */ 4 74 4 75 4 76 /* The following constants are offsets within this transfer vector table. */ 4 77 4 78 dcl ( 4 79 call_offset fixed bin init (271), 4 80 push_offset fixed bin init (272), 4 81 return_offset fixed bin init (273), 4 82 return_no_pop_offset fixed bin init (274), 4 83 entry_offset fixed bin init (275) 4 84 ) internal static; 4 85 4 86 4 87 4 88 4 89 4 90 /* The following declaration is an overlay of the whole stack header. Procedures which 4 91* move the whole stack header should use this overlay. 4 92**/ 4 93 4 94 dcl stack_header_overlay (size (stack_header)) fixed bin based (sb); 4 95 4 96 4 97 4 98 /* END INCLUDE FILE ... stack_header.incl.pl1 */ 58 5 1 /* */ 5 2 /* BEGIN INCLUDE FILE mc.incl.pl1 Created Dec 72 for 6180 - WSS. */ 5 3 /* Modified 06/07/76 by Greenberg for mc.resignal */ 5 4 /* Modified 07/07/76 by Morris for fault register data */ 5 5 /* Modified 08/28/80 by J. A. Bush for the DPS8/70M CVPU */ 5 6 /* Modified '82 to make values constant */ 5 7 5 8 /* words 0-15 pointer registers */ 5 9 5 10 dcl mcp ptr; 5 11 5 12 dcl 1 mc based (mcp) aligned, 5 13 2 prs (0:7) ptr, /* POINTER REGISTERS */ 5 14 (2 regs, /* registers */ 5 15 3 x (0:7) bit (18), /* index registers */ 5 16 3 a bit (36), /* accumulator */ 5 17 3 q bit (36), /* q-register */ 5 18 3 e bit (8), /* exponent */ 5 19 3 pad1 bit (28), 5 20 3 t bit (27), /* timer register */ 5 21 3 pad2 bit (6), 5 22 3 ralr bit (3), /* ring alarm register */ 5 23 5 24 2 scu (0:7) bit (36), 5 25 5 26 2 mask bit (72), /* mem controller mask at time of fault */ 5 27 2 ips_temp bit (36), /* Temporary storage for IPS info */ 5 28 2 errcode fixed bin (35), /* fault handler's error code */ 5 29 2 fim_temp, 5 30 3 unique_index bit (18) unal, /* unique index for restarting faults */ 5 31 3 resignal bit (1) unal, /* recompute signal name with fcode below */ 5 32 3 fcode bit (17) unal, /* fault code used as index to FIM table and SCT */ 5 33 2 fault_reg bit (36), /* fault register */ 5 34 2 pad2 bit (1), 5 35 2 cpu_type fixed bin (2) unsigned, /* L68 = 0, DPS8/70M = 1 */ 5 36 2 ext_fault_reg bit (15), /* extended fault reg for DPS8/70M CPU */ 5 37 2 fault_time bit (54), /* time of fault */ 5 38 5 39 2 eis_info (0:7) bit (36)) unaligned; 5 40 5 41 5 42 dcl (apx fixed bin init (0), 5 43 abx fixed bin init (1), 5 44 bpx fixed bin init (2), 5 45 bbx fixed bin init (3), 5 46 lpx fixed bin init (4), 5 47 lbx fixed bin init (5), 5 48 spx fixed bin init (6), 5 49 sbx fixed bin init (7)) internal static options (constant); 5 50 5 51 5 52 5 53 5 54 dcl scup ptr; 5 55 5 56 dcl 1 scu based (scup) aligned, /* SCU DATA */ 5 57 5 58 5 59 /* WORD (0) */ 5 60 5 61 (2 ppr, /* PROCEDURE POINTER REGISTER */ 5 62 3 prr bit (3), /* procedure ring register */ 5 63 3 psr bit (15), /* procedure segment register */ 5 64 3 p bit (1), /* procedure privileged bit */ 5 65 5 66 2 apu, /* APPENDING UNIT STATUS */ 5 67 3 xsf bit (1), /* ext seg flag - IT modification */ 5 68 3 sdwm bit (1), /* match in SDW Ass. Mem. */ 5 69 3 sd_on bit (1), /* SDW Ass. Mem. ON */ 5 70 3 ptwm bit (1), /* match in PTW Ass. Mem. */ 5 71 3 pt_on bit (1), /* PTW Ass. Mem. ON */ 5 72 3 pi_ap bit (1), /* Instr Fetch or Append cycle */ 5 73 3 dsptw bit (1), /* Fetch of DSPTW */ 5 74 3 sdwnp bit (1), /* Fetch of SDW non paged */ 5 75 3 sdwp bit (1), /* Fetch of SDW paged */ 5 76 3 ptw bit (1), /* Fetch of PTW */ 5 77 3 ptw2 bit (1), /* Fetch of pre-paged PTW */ 5 78 3 fap bit (1), /* Fetch of final address paged */ 5 79 3 fanp bit (1), /* Fetch of final address non-paged */ 5 80 3 fabs bit (1), /* Fetch of final address absolute */ 5 81 5 82 2 fault_cntr bit (3), /* number of retrys of EIS instructions */ 5 83 5 84 5 85 /* WORD (1) */ 5 86 5 87 2 fd, /* FAULT DATA */ 5 88 3 iro bit (1), /* illegal ring order */ 5 89 3 oeb bit (1), /* out of execute bracket */ 5 90 3 e_off bit (1), /* no execute */ 5 91 3 orb bit (1), /* out of read bracket */ 5 92 3 r_off bit (1), /* no read */ 5 93 3 owb bit (1), /* out of write bracket */ 5 94 3 w_off bit (1), /* no write */ 5 95 3 no_ga bit (1), /* not a gate */ 5 96 3 ocb bit (1), /* out of call bracket */ 5 97 3 ocall bit (1), /* outward call */ 5 98 3 boc bit (1), /* bad outward call */ 5 99 3 inret bit (1), /* inward return */ 5 100 3 crt bit (1), /* cross ring transfer */ 5 101 3 ralr bit (1), /* ring alarm register */ 5 102 3 am_er bit (1), /* associative memory fault */ 5 103 3 oosb bit (1), /* out of segment bounds */ 5 104 3 paru bit (1), /* processor parity upper */ 5 105 3 parl bit (1), /* processor parity lower */ 5 106 3 onc_1 bit (1), /* op not complete type 1 */ 5 107 3 onc_2 bit (1), /* op not complete type 2 */ 5 108 5 109 2 port_stat, /* PORT STATUS */ 5 110 3 ial bit (4), /* illegal action lines */ 5 111 3 iac bit (3), /* illegal action channel */ 5 112 3 con_chan bit (3), /* connect channel */ 5 113 5 114 2 fi_num bit (5), /* (fault/interrupt) number */ 5 115 2 fi_flag bit (1), /* 1 => fault, 0 => interrupt */ 5 116 5 117 5 118 /* WORD (2) */ 5 119 5 120 2 tpr, /* TEMPORARY POINTER REGISTER */ 5 121 3 trr bit (3), /* temporary ring register */ 5 122 3 tsr bit (15), /* temporary segment register */ 5 123 5 124 2 pad2 bit (9), 5 125 5 126 2 cpu_no bit (3), /* CPU number */ 5 127 5 128 2 delta bit (6), /* tally modification DELTA */ 5 129 5 130 5 131 /* WORD (3) */ 5 132 5 133 2 word3 bit (18), 5 134 5 135 2 tsr_stat, /* TSR STATUS for 1,2,&3 word instructions */ 5 136 3 tsna, /* Word 1 status */ 5 137 4 prn bit (3), /* Word 1 PR number */ 5 138 4 prv bit (1), /* Word 1 PR valid bit */ 5 139 3 tsnb, /* Word 2 status */ 5 140 4 prn bit (3), /* Word 2 PR number */ 5 141 4 prv bit (1), /* Word 2 PR valid bit */ 5 142 3 tsnc, /* Word 3 status */ 5 143 4 prn bit (3), /* Word 3 PR number */ 5 144 4 prv bit (1), /* Word 3 PR valid bit */ 5 145 5 146 2 tpr_tbr bit (6), /* TPR.TBR field */ 5 147 5 148 5 149 /* WORD (4) */ 5 150 5 151 2 ilc bit (18), /* INSTRUCTION COUNTER */ 5 152 5 153 2 ir, /* INDICATOR REGISTERS */ 5 154 3 zero bit (1), /* zero indicator */ 5 155 3 neg bit (1), /* negative indicator */ 5 156 3 carry bit (1), /* carryry indicator */ 5 157 3 ovfl bit (1), /* overflow indicator */ 5 158 3 eovf bit (1), /* eponent overflow */ 5 159 3 eufl bit (1), /* exponent underflow */ 5 160 3 oflm bit (1), /* overflow mask */ 5 161 3 tro bit (1), /* tally runout */ 5 162 3 par bit (1), /* parity error */ 5 163 3 parm bit (1), /* parity mask */ 5 164 3 bm bit (1), /* ^bar mode */ 5 165 3 tru bit (1), /* truncation mode */ 5 166 3 mif bit (1), /* multi-word instruction mode */ 5 167 3 abs bit (1), /* absolute mode */ 5 168 3 hex bit (1), /* hexadecimal exponent mode */ 5 169 3 pad bit (3), 5 170 5 171 5 172 /* WORD (5) */ 5 173 5 174 2 ca bit (18), /* COMPUTED ADDRESS */ 5 175 5 176 2 cu, /* CONTROL UNIT STATUS */ 5 177 3 rf bit (1), /* on first cycle of repeat instr */ 5 178 3 rpt bit (1), /* repeat instruction */ 5 179 3 rd bit (1), /* repeat double instruction */ 5 180 3 rl bit (1), /* repeat link instruciton */ 5 181 3 pot bit (1), /* IT modification */ 5 182 3 pon bit (1), /* return type instruction */ 5 183 3 xde bit (1), /* XDE from Even location */ 5 184 3 xdo bit (1), /* XDE from Odd location */ 5 185 3 poa bit (1), /* operation preparation */ 5 186 3 rfi bit (1), /* tells CPU to refetch instruction */ 5 187 3 its bit (1), /* ITS modification */ 5 188 3 if bit (1), /* fault occured during instruction fetch */ 5 189 5 190 2 cpu_tag bit (6)) unaligned, /* computed tag field */ 5 191 5 192 5 193 /* WORDS (6,7) */ 5 194 5 195 2 even_inst bit (36), /* even instruction of faulting pair */ 5 196 5 197 2 odd_inst bit (36); /* odd instruction of faulting pair */ 5 198 5 199 5 200 5 201 5 202 5 203 5 204 /* ALTERNATE SCU DECLARATION */ 5 205 5 206 5 207 dcl 1 scux based (scup) aligned, 5 208 5 209 (2 pad0 bit (36), 5 210 5 211 2 fd, /* GROUP II FAULT DATA */ 5 212 3 isn bit (1), /* illegal segment number */ 5 213 3 ioc bit (1), /* illegal op code */ 5 214 3 ia_am bit (1), /* illegal address - modifier */ 5 215 3 isp bit (1), /* illegal slave procedure */ 5 216 3 ipr bit (1), /* illegal procedure */ 5 217 3 nea bit (1), /* non existent address */ 5 218 3 oobb bit (1), /* out of bounds */ 5 219 3 pad bit (29), 5 220 5 221 2 pad2 bit (36), 5 222 5 223 2 pad3a bit (18), 5 224 5 225 2 tsr_stat (0:2), /* TSR STATUS as an ARRAY */ 5 226 3 prn bit (3), /* PR number */ 5 227 3 prv bit (1), /* PR valid bit */ 5 228 5 229 2 pad3b bit (6)) unaligned, 5 230 5 231 2 pad45 (0:1) bit (36), 5 232 5 233 2 instr (0:1) bit (36); /* Instruction ARRAY */ 5 234 5 235 5 236 5 237 /* END INCLUDE FILE mc.incl.pl1 */ 59 6 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 6 2 6 3 /* Structure for find_condition_info_. 6 4* 6 5* Written 1-Mar-79 by M. N. Davidoff. 6 6**/ 6 7 6 8 /* automatic */ 6 9 6 10 declare condition_info_ptr pointer; 6 11 6 12 /* based */ 6 13 6 14 declare 1 condition_info aligned based (condition_info_ptr), 6 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 6 16 2 version fixed binary, /* Must be 1 */ 6 17 2 condition_name char (32) varying, /* name of condition */ 6 18 2 info_ptr pointer, /* pointer to the condition data structure */ 6 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 6 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 6 21 2 flags unaligned, 6 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 6 23 3 pad1 bit (35), 6 24 2 pad2 bit (36), 6 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 6 26 2 pad3 (4) bit (36); 6 27 6 28 /* internal static */ 6 29 6 30 declare condition_info_version_1 6 31 fixed binary internal static options (constant) initial (1); 6 32 6 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 60 61 /* this procedure is coded to work on any stack, even a defunct one */ 62 63 condition_info_ptr = a_cip; 64 fff_sw = "0"b; 65 66 if a_sp = null then do; 67 sp = find_condition_frame_ (a_sp); 68 if sp = null then go to error; 69 end; 70 else sp = a_sp; 71 72 if baseno (stackframeptr ()) = baseno (sp) /* is supplied stack ptr same seg as our stack ? */ 73 then live_stack = "1"b; 74 75 else do; 76 live_stack = ""b; /* we are debugging a dead stack */ 77 old_stack_segno = baseno (pointer (sp, 0) -> stack_header.stack_begin_ptr); 78 end; 79 80 common: code = 0; 81 trap_sw = "0"b; /* usually have real condition */ 82 83 /* initialize output structure */ 84 85 condition_info.mc_ptr, condition_info.info_ptr, condition_info.wc_ptr, condition_info.loc_ptr = null; 86 condition_info.condition_name = " "; 87 condition_info.flags.crawlout = "0"b; 88 89 if sp = null then go to error; /* have no stack seg to look at */ 90 if a_sp ^= null /* check for valid condition frame */ 91 then if ^is_condition_frame_ (sp) then go to error; /* no valid info */ 92 93 /* check to be sure we in fact have a condition frame; also we have to know 94* type of condition so we know where to find info */ 95 96 nsp = translate_ptr (sp -> stack_frame.next_sp); /* get ptr to next frame */ 97 98 if sp -> stack_frame_flags.signaller then do; /* had a fault */ 99 100 if nsp -> stack_frame_flags.link_trap then trap_sw = "1"b; 101 102 else ap = translate_ptr (translate_ptr (nsp -> stack_frame.next_sp) -> stack_frame.arg_ptr); 103 /* get ptr to signaller arg list */ 104 105 end; 106 107 else do; /* have crawlout or software signal */ 108 if nsp -> stack_frame_flags.signal 109 then ap = translate_ptr (nsp -> stack_frame.arg_ptr); 110 else do; /* only one more possibility left */ 111 if nsp -> stack_frame_flags.crawl_out then do; 112 ap = translate_ptr (nsp -> stack_frame.operator_and_lp_ptr); 113 condition_info.flags.crawlout = "1"b; 114 end; 115 else do; 116 error: code = error_table_$noentry; 117 go to return; 118 end; 119 end; 120 end; 121 122 /* fill output structure */ 123 124 if ^trap_sw then do; /* get info from arg list */ 125 126 if ap = null then go to error; /* real ap was null ptr */ 127 nargs = ap -> arg_list.arg_count; 128 if nargs < 1 | nargs > 4 then go to error; 129 go to fill_in (nargs); 130 131 fill_in (4): condition_info.wc_ptr = translate_ptr (translate_ptr (ap -> ptra (4)) -> bptr); 132 133 fill_in (3): condition_info.info_ptr = translate_ptr (translate_ptr (ap -> ptra (3)) -> bptr); 134 135 fill_in (2): condition_info.mc_ptr = translate_ptr (translate_ptr (ap -> ptra (2)) -> bptr); 136 137 fill_in (1): lng = bin (translate_ptr (ap -> ptra (nargs+1)) -> string_lng, 18); 138 /* get name length from descriptor */ 139 temptr = translate_ptr (ap -> ptra (1)); 140 condition_info.condition_name = rtrim (substr (temptr -> bchar, 1, lng)); 141 end; 142 143 else do; /* link trap; not condition but did not call out of last frame */ 144 condition_info.mc_ptr = addrel (nsp, 48); /* have only machine conditions */ 145 condition_info.condition_name = "fault_tag_2"; /* return something to distinguish this */ 146 end; 147 148 /* find out which, if any, mc we have to work with */ 149 150 if condition_info.wc_ptr ^= null then mcp = condition_info.wc_ptr; /* crawlout; left ring with fault */ 151 152 else if condition_info.flags.crawlout | (condition_info.mc_ptr = null) then mcp = null; 153 154 else mcp = condition_info.mc_ptr; /* have mc for this ring */ 155 156 /* if condition occurred in pl1_operators_, find transfer point */ 157 158 if live_stack then 159 call interpret_op_ptr_ (mcp, sp, callp, op_name, frame_flag); 160 else do; 161 callp = null; 162 op_name = ""; 163 frame_flag = "1"b; 164 end; 165 166 /* fill in loc_ptr */ 167 168 if callp ^= null then locp = callp; /* this will be more useful */ 169 else if mcp ^= null then do; /* use ppr from mc */ 170 scup = addr (mcp -> mc.scu (0)); 171 locp = ptr (baseptr (bin (bin (scup -> scu.ppr.psr, 15), 18)), 172 scup -> scu.ilc); 173 end; 174 else do; /* assume signal_ was called */ 175 unspec (locp) = unspec (sp -> stack_frame.return_ptr) & RETURN_PTR_MASK; 176 if rel (locp) ^= "0"b 177 then locp = addrel (locp, -1); 178 end; 179 180 condition_info.loc_ptr, condition_info.user_loc_ptr = locp; 181 182 if ^fff_sw then 183 if sp -> stack_frame_flags.support then do; /* find most recent nonsupport frame */ 184 nsp = sp; 185 spno = baseno (sp -> stack_frame.next_sp); 186 do while (baseno (nsp -> stack_frame.prev_sp) = spno); 187 nsp = translate_ptr (nsp -> stack_frame.prev_sp); 188 if ^nsp -> stack_frame_flags.support then do; /* found one */ 189 /* see if this is condition frame; if it is, can't use ret_ptr */ 190 if is_condition_frame_ (nsp) then do; 191 call find_condition_info_ (nsp, addr (auto_cond_info), code); 192 if code = 0 then do; /* have loc_ptr to use */ 193 condition_info.user_loc_ptr = auto_cond_info.loc_ptr; 194 go to return; 195 end; 196 end; 197 call interpret_op_ptr_ (null, nsp, callp, op_name, frame_flag); 198 if callp ^= null then condition_info.user_loc_ptr = callp; 199 else do; /* use return ptr with non-neg offset */ 200 unspec (condition_info.user_loc_ptr) = 201 unspec (nsp -> stack_frame.return_ptr) & RETURN_PTR_MASK; 202 if rel (condition_info.user_loc_ptr) ^= "0"b 203 then condition_info.user_loc_ptr = addrel (condition_info.user_loc_ptr, -1); 204 end; 205 go to return; 206 end; 207 end; 208 end; 209 210 /* if we are in find_fault_frame_, fill in return args */ 211 212 return: if fff_sw then do; 213 a_mcp = condition_info.mc_ptr; 214 faultptr = condition_info.loc_ptr; 215 cname = condition_info.condition_name; 216 cop = condition_info.wc_ptr; /* this isn't compatible but is more useful */ 217 end; 218 else a_code = code; 219 220 return; 221 222 /* */ 223 find_fault_frame_: entry (a_sp, a_mcp, faultsp, faultptr, cop, cname); 224 225 /* this interface is from the precurser to find_condition_info_ 226* which was written for trace_stack_ */ 227 228 declare (a_mcp, faultsp, faultptr, cop) ptr; 229 declare cname char (32) aligned; 230 231 sp = find_condition_frame_ (a_sp); 232 faultsp = sp; 233 234 if sp = null then do; /* nothing there */ 235 a_mcp, faultptr, cop = null; 236 cname = " "; 237 return; 238 end; 239 240 condition_info_ptr = addr (auto_cond_info); /* will use find_condition_info_'s setup */ 241 fff_sw = "1"b; 242 go to common; 243 244 translate_ptr: proc (inptr) returns (pointer); 245 246 /* This internal procedure translates pointers in dead stacks to pointers 247* valid within the process trying to debug them. */ 248 249 declare inptr pointer parameter; 250 251 if live_stack then return (inptr); /* usual case, easy enough. */ 252 253 if inptr = null then return (inptr); /* next easiest thing */ 254 255 if baseno (inptr) = old_stack_segno then 256 return (pointer (sp, rel (inptr))); 257 258 /* If we got here, we have a dead stack, and a pointer to something not in the stack. 259* If we ever install a subsystem to debug dead processes, we should put here a call 260* to its address-space manager who can tell us what the pointer pointed to and 261* what number it goes by in this process. But for now, we just punt and give 262* back the original pointer. */ 263 264 return (inptr); 265 266 end translate_ptr; 267 268 end find_condition_info_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/86 1033.8 find_condition_info_.pl1 >special_ldd>install>MR12.0-1206>find_condition_info_.pl1 52 1 08/05/86 0856.8 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 54 2 11/26/79 1320.6 its.incl.pl1 >ldd>include>its.incl.pl1 56 3 11/03/86 1114.7 stack_frame.incl.pl1 >special_ldd>install>MR12.0-1206>stack_frame.incl.pl1 58 4 11/04/86 1324.3 stack_header.incl.pl1 >special_ldd>install>MR12.0-1206>stack_header.incl.pl1 59 5 12/15/83 1100.4 mc.incl.pl1 >ldd>include>mc.incl.pl1 60 6 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.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. RETURN_PTR_MASK 000004 constant bit(72) initial unaligned dcl 3-19 ref 175 200 a_cip parameter pointer dcl 23 ref 10 63 a_code parameter fixed bin(35,0) dcl 30 set ref 10 218* a_mcp parameter pointer dcl 228 set ref 213* 223 235* a_sp parameter pointer dcl 23 set ref 10 66 67* 70 90 223 231* addr builtin function dcl 44 ref 170 191 191 240 addrel builtin function dcl 44 ref 144 176 202 ap 000110 automatic pointer dcl 26 set ref 102* 108* 112* 126 127 131 133 135 137 139 arg_count based fixed bin(17,0) level 3 packed unsigned unaligned dcl 1-14 ref 127 arg_list based structure level 1 dcl 1-14 arg_ptr 32 based pointer level 2 dcl 3-36 set ref 102* 108* auto_cond_info 000134 automatic structure level 1 unaligned dcl 50 set ref 191 191 240 baseno builtin function dcl 44 ref 72 72 77 185 186 255 baseptr builtin function dcl 44 ref 171 bchar based char unaligned dcl 35 ref 140 bin builtin function dcl 44 ref 137 171 171 bptr based pointer dcl 25 set ref 131* 133* 135* callp 000104 automatic pointer dcl 23 set ref 158* 161* 168 168 197* 198 198 cname parameter char(32) dcl 229 set ref 215* 223 236* code 000114 automatic fixed bin(35,0) dcl 30 set ref 80* 116* 191* 192 218 condition_info based structure level 1 dcl 6-14 condition_info_ptr 000174 automatic pointer dcl 6-10 set ref 63* 85 85 85 85 86 87 113 131 133 135 140 144 145 150 150 152 152 154 180 180 193 198 200 202 202 202 213 214 215 216 240* condition_name 3 based varying char(32) level 2 dcl 6-14 set ref 86* 140* 145* 215 cop parameter pointer dcl 228 set ref 216* 223 235* crawl_out 20(25) based bit(1) level 2 packed unaligned dcl 3-64 ref 111 crawlout 22 based bit(1) level 3 packed unaligned dcl 6-14 set ref 87* 113* 152 error_table_$noentry 000010 external static fixed bin(35,0) dcl 31 ref 116 faultptr parameter pointer dcl 228 set ref 214* 223 235* faultsp parameter pointer dcl 228 set ref 223 232* fff_sw 000127 automatic bit(1) dcl 37 set ref 64* 182 212 241* find_condition_frame_ 000012 constant entry external dcl 41 ref 67 231 flags 22 based structure level 2 packed unaligned dcl 6-14 frame_flag 000131 automatic bit(1) dcl 37 set ref 158* 163* 197* header based structure level 2 dcl 1-14 ilc 4 based bit(18) level 2 packed unaligned dcl 5-56 ref 171 info_ptr 14 based pointer level 2 dcl 6-14 set ref 85* 133* inptr parameter pointer dcl 249 ref 244 251 253 253 255 255 264 interpret_op_ptr_ 000016 constant entry external dcl 43 ref 158 197 is_condition_frame_ 000014 constant entry external dcl 42 ref 90 190 link_trap 20(27) based bit(1) level 2 packed unaligned dcl 3-64 ref 100 live_stack 000112 automatic bit(1) dcl 27 set ref 72* 76* 158 251 lng 000115 automatic fixed bin(17,0) dcl 32 set ref 137* 140 140 loc_ptr 20 based pointer level 2 in structure "condition_info" dcl 6-14 in procedure "find_condition_info_" set ref 85* 180* 214 loc_ptr 20 000134 automatic pointer level 2 in structure "auto_cond_info" dcl 50 in procedure "find_condition_info_" set ref 193 locp 000102 automatic pointer dcl 23 set ref 168* 171* 175* 176 176* 176 180 mc based structure level 1 dcl 5-12 mc_ptr based pointer level 2 dcl 6-14 set ref 85* 135* 144* 152 154 213 mcp 000170 automatic pointer dcl 5-10 set ref 150* 152* 154* 158* 169 170 nargs 000116 automatic fixed bin(17,0) dcl 32 set ref 127* 128 128 129 137 next_sp 22 based pointer level 2 dcl 3-36 set ref 96* 102* 185 nsp 000100 automatic pointer dcl 23 set ref 96* 100 102 108 108 111 112 144 184* 186 187* 187 188 190* 191* 197* 200 null builtin function dcl 44 ref 66 68 85 89 90 126 150 152 152 161 168 169 197 197 198 234 235 253 old_stack_segno 000113 automatic bit(18) unaligned dcl 27 set ref 77* 255 op_name 000117 automatic char(32) dcl 34 set ref 158* 162* 197* operator_and_lp_ptr 30 based pointer level 2 dcl 3-36 set ref 112* pointer builtin function dcl 44 ref 77 255 ppr based structure level 2 packed unaligned dcl 5-56 prev_sp 20 based pointer level 2 dcl 3-36 set ref 186 187* psr 0(03) based bit(15) level 3 packed unaligned dcl 5-56 ref 171 ptr builtin function dcl 44 ref 171 ptra based pointer array dcl 24 set ref 131* 133* 135* 137* 139* rel builtin function dcl 44 ref 176 202 255 return_ptr 24 based pointer level 2 dcl 3-36 ref 175 200 rtrim builtin function dcl 44 ref 140 scu based structure level 1 dcl 5-56 in procedure "find_condition_info_" scu 30 based bit(36) array level 2 in structure "mc" packed unaligned dcl 5-12 in procedure "find_condition_info_" set ref 170 scup 000172 automatic pointer dcl 5-54 set ref 170* 171 171 signal 20(24) based bit(1) level 2 packed unaligned dcl 3-64 ref 108 signaller 20(26) based bit(1) level 2 packed unaligned dcl 3-64 ref 98 sp 000166 automatic pointer dcl 3-31 set ref 67* 68 70* 72 77 89 90* 96 98 158* 175 182 184 185 231* 232 234 255 spno 000132 automatic bit(18) dcl 38 set ref 185* 186 stack_begin_ptr 22 based pointer level 2 dcl 4-26 ref 77 stack_frame based structure level 1 dcl 3-36 stack_frame_flags based structure level 1 dcl 3-64 stack_header based structure level 1 dcl 4-26 stackframeptr builtin function dcl 44 ref 72 string_desc based structure level 1 dcl 46 string_lng 0(18) based bit(18) level 2 packed unaligned dcl 46 ref 137 substr builtin function dcl 44 ref 140 support 20(28) based bit(1) level 2 packed unaligned dcl 3-64 ref 182 188 temptr 000106 automatic pointer dcl 23 set ref 139* 140 trap_sw 000130 automatic bit(1) dcl 37 set ref 81* 100* 124 user_loc_ptr 24 based pointer level 2 dcl 6-14 set ref 180* 193* 198* 200* 202 202* 202 wc_ptr 16 based pointer level 2 dcl 6-14 set ref 85* 131* 150 150 216 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Envptr_supplied_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 1-54 ITP_MODIFIER internal static bit(6) initial unaligned dcl 2-56 ITS_MODIFIER internal static bit(6) initial unaligned dcl 2-55 Interseg_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 1-54 Quick_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 1-54 TRANSLATOR_ID_ALM internal static bit(18) initial unaligned dcl 3-25 TRANSLATOR_ID_PL1V1 internal static bit(18) initial unaligned dcl 3-26 TRANSLATOR_ID_PL1V2 internal static bit(18) initial unaligned dcl 3-24 TRANSLATOR_ID_SIGNALLER internal static bit(18) initial unaligned dcl 3-28 TRANSLATOR_ID_SIGNAL_CALLER internal static bit(18) initial unaligned dcl 3-27 abx internal static fixed bin(17,0) initial dcl 5-42 apx internal static fixed bin(17,0) initial dcl 5-42 arg_list_with_envptr based structure level 1 dcl 1-42 bbx internal static fixed bin(17,0) initial dcl 5-42 bpx internal static fixed bin(17,0) initial dcl 5-42 call_offset internal static fixed bin(17,0) initial dcl 4-78 command_name_arglist based structure level 1 dcl 1-25 condition_info_version_1 internal static fixed bin(17,0) initial dcl 6-30 entry_offset internal static fixed bin(17,0) initial dcl 4-78 itp based structure level 1 dcl 2-18 itp_unsigned based structure level 1 dcl 2-43 its based structure level 1 dcl 2-5 its_unsigned based structure level 1 dcl 2-30 lbx internal static fixed bin(17,0) initial dcl 5-42 lpx internal static fixed bin(17,0) initial dcl 5-42 push_offset internal static fixed bin(17,0) initial dcl 4-78 return_no_pop_offset internal static fixed bin(17,0) initial dcl 4-78 return_offset internal static fixed bin(17,0) initial dcl 4-78 sb automatic pointer dcl 4-24 sbx internal static fixed bin(17,0) initial dcl 5-42 scux based structure level 1 dcl 5-207 spx internal static fixed bin(17,0) initial dcl 5-42 stack_frame_min_length internal static fixed bin(17,0) initial dcl 3-33 stack_header_overlay based fixed bin(17,0) array dcl 4-94 tv_offset internal static fixed bin(17,0) initial dcl 4-72 NAMES DECLARED BY EXPLICIT CONTEXT. common 000102 constant label dcl 80 ref 242 error 000247 constant label dcl 116 ref 68 89 90 126 128 fill_in 000000 constant label array(4) dcl 131 ref 129 find_condition_info_ 000023 constant entry external dcl 10 ref 191 find_fault_frame_ 000762 constant entry external dcl 223 return 000726 constant label dcl 212 ref 117 194 205 translate_ptr 001026 constant entry internal dcl 244 ref 96 102 102 108 112 131 131 133 133 135 135 137 139 187 NAME DECLARED BY CONTEXT OR IMPLICATION. unspec builtin function set ref 175 175 200* 200 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1166 1206 1064 1176 Length 1514 1064 20 271 101 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME find_condition_info_ 164 external procedure is an external procedure. translate_ptr internal procedure shares stack frame of external procedure find_condition_info_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME find_condition_info_ 000100 nsp find_condition_info_ 000102 locp find_condition_info_ 000104 callp find_condition_info_ 000106 temptr find_condition_info_ 000110 ap find_condition_info_ 000112 live_stack find_condition_info_ 000113 old_stack_segno find_condition_info_ 000114 code find_condition_info_ 000115 lng find_condition_info_ 000116 nargs find_condition_info_ 000117 op_name find_condition_info_ 000127 fff_sw find_condition_info_ 000130 trap_sw find_condition_info_ 000131 frame_flag find_condition_info_ 000132 spno find_condition_info_ 000134 auto_cond_info find_condition_info_ 000166 sp find_condition_info_ 000170 mcp find_condition_info_ 000172 scup find_condition_info_ 000174 condition_info_ptr find_condition_info_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_in call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. find_condition_frame_ interpret_op_ptr_ is_condition_frame_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noentry LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000017 63 000030 64 000034 66 000035 67 000041 68 000051 69 000055 70 000056 72 000061 76 000075 77 000076 80 000102 81 000103 85 000104 86 000112 87 000116 89 000120 90 000124 96 000145 98 000156 100 000162 102 000171 105 000212 108 000213 111 000230 112 000233 113 000243 114 000246 116 000247 117 000252 124 000253 126 000255 127 000261 128 000264 129 000270 131 000271 133 000313 135 000335 137 000356 139 000374 140 000405 141 000430 144 000431 145 000434 150 000442 152 000452 154 000464 158 000466 161 000510 162 000512 163 000515 168 000517 169 000526 170 000532 171 000535 173 000547 175 000550 176 000555 180 000562 182 000566 184 000574 185 000575 186 000600 187 000605 188 000615 190 000621 191 000635 192 000651 193 000653 194 000656 197 000657 198 000700 200 000710 202 000717 205 000724 207 000725 212 000726 213 000730 214 000734 215 000737 216 000745 217 000747 218 000750 220 000753 223 000754 231 000767 232 001001 234 001004 235 001010 236 001014 237 001020 240 001021 241 001023 242 001025 244 001026 251 001030 253 001036 255 001046 264 001061 ----------------------------------------------------------- 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