1 /* BEGIN INCLUDE FILE ... stack_header.incl.pl1 .. 3/72 Bill Silver */ 2 /* modified 7/76 by M. Weaver for *system links and more system use of areas */ 3 /* modified 3/77 by M. Weaver to add rnt_ptr */ 4 /* Modified April 1983 by C. Hornig for tasking */ 5 6 /****^ HISTORY COMMENTS: 7 1) change(86-06-24,DGHowe), approve(86-06-24,MCR7396), 8 audit(86-08-05,Schroth), install(86-11-03,MR12.0-1206): 9 added the heap_header_ptr definition. 10 2) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 11 audit(86-10-10,Fawcett), install(86-11-03,MR12.0-1206): 12 Modified to support control point management. These changes were actually 13 made in February 1985 by G. Palter. 14 3) change(86-10-22,Fawcett), approve(86-10-22,MCR7473), 15 audit(86-10-22,Farley), install(86-11-03,MR12.0-1206): 16 Remove the old_lot pointer and replace it with cpm_data_ptr. Use the 18 17 bit pad after cur_lot_size for the cpm_enabled. This was done to save some 18 space int the stack header and change the cpd_ptr unal to cpm_data_ptr 19 (ITS pair). 20 END HISTORY COMMENTS */ 21 22 /* format: style2 */ 23 24 dcl sb ptr; /* the main pointer to the stack header */ 25 26 dcl 1 stack_header based (sb) aligned, 27 2 pad1 (4) fixed bin, /* (0) also used as arg list by outward_call_handler */ 28 2 cpm_data_ptr ptr, /* (4) pointer to control point which owns this stack */ 29 2 combined_stat_ptr ptr, /* (6) pointer to area containing separate static */ 30 2 clr_ptr ptr, /* (8) pointer to area containing linkage sections */ 31 2 max_lot_size fixed bin (17) unal, /* (10) DU number of words allowed in lot */ 32 2 main_proc_invoked fixed bin (11) unal, /* (10) DL nonzero if main procedure invoked in run unit */ 33 2 have_static_vlas bit (1) unal, /* (10) DL "1"b if (very) large arrays are being used in static */ 34 2 pad4 bit (2) unal, 35 2 run_unit_depth fixed bin (2) unal, /* (10) DL number of active run units stacked */ 36 2 cur_lot_size fixed bin (17) unal, /* (11) DU number of words (entries) in lot */ 37 2 cpm_enabled bit (18) unal, /* (11) DL non-zero if control point management is enabled */ 38 2 system_free_ptr ptr, /* (12) pointer to system storage area */ 39 2 user_free_ptr ptr, /* (14) pointer to user storage area */ 40 2 null_ptr ptr, /* (16) */ 41 2 stack_begin_ptr ptr, /* (18) pointer to first stack frame on the stack */ 42 2 stack_end_ptr ptr, /* (20) pointer to next useable stack frame */ 43 2 lot_ptr ptr, /* (22) pointer to the lot for the current ring */ 44 2 signal_ptr ptr, /* (24) pointer to signal procedure for current ring */ 45 2 bar_mode_sp ptr, /* (26) value of sp before entering bar mode */ 46 2 pl1_operators_ptr ptr, /* (28) pointer to pl1_operators_$operator_table */ 47 2 call_op_ptr ptr, /* (30) pointer to standard call operator */ 48 2 push_op_ptr ptr, /* (32) pointer to standard push operator */ 49 2 return_op_ptr ptr, /* (34) pointer to standard return operator */ 50 2 return_no_pop_op_ptr 51 ptr, /* (36) pointer to standard return / no pop operator */ 52 2 entry_op_ptr ptr, /* (38) pointer to standard entry operator */ 53 2 trans_op_tv_ptr ptr, /* (40) pointer to translator operator ptrs */ 54 2 isot_ptr ptr, /* (42) pointer to ISOT */ 55 2 sct_ptr ptr, /* (44) pointer to System Condition Table */ 56 2 unwinder_ptr ptr, /* (46) pointer to unwinder for current ring */ 57 2 sys_link_info_ptr ptr, /* (48) pointer to *system link name table */ 58 2 rnt_ptr ptr, /* (50) pointer to Reference Name Table */ 59 2 ect_ptr ptr, /* (52) pointer to event channel table */ 60 2 assign_linkage_ptr ptr, /* (54) pointer to storage for (obsolete) hcs_$assign_linkage */ 61 2 heap_header_ptr ptr, /* (56) pointer to the heap header for this ring */ 62 2 trace, 63 3 frames, 64 4 count fixed bin, /* (58) number of trace frames */ 65 4 top_ptr ptr unal, /* (59) pointer to last trace frame */ 66 3 in_trace bit (36) aligned, /* (60) trace antirecursion flag */ 67 2 pad2 bit (36), /* (61) */ 68 2 pad5 pointer; /* (62) pointer to future stuff */ 69 70 /* The following offset refers to a table within the pl1 operator table. */ 71 72 dcl tv_offset fixed bin init (361) internal static; 73 /* (551) octal */ 74 75 76 /* The following constants are offsets within this transfer vector table. */ 77 78 dcl ( 79 call_offset fixed bin init (271), 80 push_offset fixed bin init (272), 81 return_offset fixed bin init (273), 82 return_no_pop_offset fixed bin init (274), 83 entry_offset fixed bin init (275) 84 ) internal static; 85 86 87 88 89 90 /* The following declaration is an overlay of the whole stack header. Procedures which 91 move the whole stack header should use this overlay. 92 */ 93 94 dcl stack_header_overlay (size (stack_header)) fixed bin based (sb); 95 96 97 98 /* END INCLUDE FILE ... stack_header.incl.pl1 */