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 */