1 /*  START OF:       amu_hardcore_info.incl.pl1                *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
 2 
 3 
 4 
 5 
 6 /****^  HISTORY COMMENTS:
 7   1) change(2022-11-06,GDixon), approve(2023-01-16,MCR10129),
 8      audit(2023-02-28,Swenson), install(2023-02-28,MR12.8-1054):
 9       A) Add iupt and int_unpaged_page_tables elements.
10       B) Add 3 elements describing the breakpoint_page segment and
11          single PTW locating its data page in a wired, real-memory frame.
12       C) Add/clarify comments describing various elements.
13       D) Add pad elements to facilitate future addition w/o need to recompile
14          many components not otherwise affected by those additions.
15                                                    END HISTORY COMMENTS */
16 
17 
18 
19 
20 /* This structure contains information about the hardcore supervisor address
21    space for an address translation. */
22 
23 dcl 1 hardcore_info aligned based (amu_info.hardcore_info_ptr),
24 
25     2 pointers,                                             /* assorted pointers to various useful items              */
26       3 slt aligned,                                        /* SLT (Segment Loader Table)                             */
27         4 fptr pointer unaligned,                           /*  address in foreign address space                      */
28         4 lptr pointer unaligned,                           /*  location in local address space                       */
29       3 sltnt aligned like hardcore_info.slt,               /* SLT Names Segment                                      */
30       3 definitions aligned like hardcore_info.slt,         /* hardcore definitions_ segment                          */
31       3 sst aligned like hardcore_info.slt,                 /* SST (System Segments Table - aka sst or sst_seg)       */
32       3 sstnt aligned like hardcore_info.slt,               /* SSTNT (SST Names Table)                                */
33                                                             /*       (if any -- foreign_ptr = null  if not)           */
34       3 tc_data aligned like hardcore_info.slt,             /* TC_DATA (Traffic Control Data - aka tc_data)           */
35       3 upt aligned like hardcore_info.slt,                 /* unpaged_page_tables                                    */
36                                                             /*       (if any -- foreign_ptr = null  if not)           */
37       3 iupt aligned like hardcore_info.slt,                /* int_unpaged_page_tables                                */
38                                                             /*       (if any -- foreign_ptr = null  if not)           */
39       3 pad1 (4) ptr unaligned,
40 
41     2 segno,                                                /* various per-process/per-processor segment numbers      */
42       3 prds fixed bin (15),                                /*  PRDS (Processor Data Segment)                         */
43       3 dseg fixed bin (15),                                /*  DSEG (process' Descriptor Segment)                    */
44       3 pds fixed bin (15),                                 /*  PDS  (Process  Data Segment)                          */
45       3 kst fixed bin (15),                                 /*  KST  (process' Known Segment Table)                   */
46                                                             /* next two items are hardcore supervisor segs, but not   */
47                                                             /* per-process/per-processor segments...                  */
48       3 stack_0 fixed bin (15),                             /*  stack_0 -- first one in stack group                   */
49       3 sst_seg fixed bin(15),                              /*  SST - System Segment Table                            */
50                                                             /* next two items are per-bootload segments known mostly  */
51                                                             /* by process 0 (Initializer.SysDaemon)...                */
52       3 unpaged_page_tables fixed bin(15),                  /*  unpaged_page_tables if it exists                      */
53       3 int_unpaged_page_tables fixed bin(15),              /*  int_unpaged_page_tables if it exists                  */
54       3 pad2 (2) fixed bin(15),
55 
56     2 apt,                                                  /* information about the APT                              */
57       3 foreign_ptr pointer unaligned,                      /* foreign and local pointers to tcm.apt                  */
58       3 local_ptr pointer unaligned,
59       3 count fixed bin,                                    /* number of APTEs                                        */
60       3 size fixed bin,                                     /* size of a single APTE                                  */
61 
62     2 hcs_count fixed bin,                                  /* highest hardcore segno                                 */
63 
64     2 breakpoint_page aligned,                              /* Information about the breakpoint_page segment used by  */
65                                                             /*  bce_probe command to set breakpoints in hardcore      */
66                                                             /*  segments having the SLTE breakpointable attribute.    */
67       3 bkpt_ptw_add fixed bin(18) unsigned,                /*   - ptw.add absadr of this wired page in real memory;  */
68                                                             /*     it appears at end of page table for each segment   */
69                                                             /*     in which breakpoints may be set by bce_probe.      */
70                                                             /*     This single page thereby appears in each of these  */
71                                                             /*     segments, and can easily be referenced when a      */
72                                                             /*     a breakpoint is reached in code execution.         */
73       3 bkpt_cme_offset fixed bin(12) unsigned,             /*   - offset of its real memory frame in core_map        */
74       3 bkpt_segno fixed bin,                               /*   - segno of breakpoint_page segment: a 1-page seg     */
75                                                             /*     defined in SLT used by bce_probe to reference the  */
76                                                             /*     the page.                                          */
77     2 pad3 (6) fixed bin(35);
78 
79 
80 dcl 1 hardcore_cur based (hardcore_cur_ptr),                /* Structure filled by: amu_$hardcore_info_set_cur_ptrs   */
81                                                             /* containing ptrs to contiguous copies of segments from  */
82                                                             /* an fdump (crash dump):                                 */
83     2 sltp ptr,                                             /*  SLT (Segment Loader Table)                            */
84     2 sltntp ptr,                                           /*  SLT Name Table                                        */
85     2 defp ptr,                                             /*  definitions                                           */
86     2 sstp ptr,                                             /*  SST (System Segments Table - aka sst or sst_seg)      */
87     2 sstntp ptr,                                           /*  SST Name Table                                        */
88     2 tc_datap ptr,                                         /*  TC_DATA (Traffic Control Data - aka tc_data)          */
89     2 uptp ptr,                                             /*  unpaged_page_tables (Page Tables for segs w/o ASTE)   */
90     2 iuptp ptr,                                            /*  int_unpaged_page_tables (like uptp but for init_segs) */
91     2 pad4 (2) ptr;
92 dcl hardcore_cur_ptr ptr;
93 
94 /*  END OF:         amu_hardcore_info.incl.pl1                *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */