*COPY CORE 00001000
PUSH PRINT 00001200
AIF ('&SYSPARM' NE 'SUP').COR01 00001400
PRINT OFF,NOGEN 00001600
.COR01 ANOP 00001800
CORTABLE DSECT 00002000
SPACE 1 00003000
*** CORTABLE - REAL STORAGE ALLOCATION TABLE 00004000
* 00005000
* 0 +-----------------------+-----------------------+ 00006000
* | CORFPNT | CORBPNT | 00007000
* 8 +-----+-----------------+-----------------------+ 00008000
* | C*1 | CORSWPNT | CORPGPNT | 00009000
* 10 +-----+-----------------+-----------------------+ 00010000
* 00011000
*** CORTABLE - REAL STORAGE ALLOCATION TABLE 00012000
SPACE 1 00023000
CORFPNT DS 1F POINTER TO NEXT CORTABLE ENTRY IN QUEUE 00024000
CORBPNT DS 1F POINTER TO PREVIOUS ENTRY IN QUEUE 00025000
CORSWPNT DS 1F POINTER TO SWAPTABLE FOR PAGE 00026000
CORPGPNT DS 1F POINTER TO PAGTABLE FOR PAGE 00027000
SPACE 1 00028000
ORG CORSWPNT 00029000
CORFLAG DS 1X C*1 CORTABLE ENTRY STATUS FLAGS 00030000
SPACE 1 00031000
* ENTRY DEFINITION IF PAGE IS LOCKED 00032000
ORG CORBPNT 00033000
CORLCNT DS 1F PAGE LOCK COUNT FOR CORIOLCK 00034000
SPACE 1 00035000
* ENTRY DEFINITION IF PAGE IS IN TRANSIT 00036000
ORG CORFLAG 00037000
CORCODE DS 1X C*1 DASD OP-CODE FOR DMKPAGIO 00038000
SPACE 1 00039000
* BITS DEFINED IN CORFLAG 00040000
CORIOLCK EQU X'80' PAGE LOCKED FOR IO - CORLCNT GT ZERO 00041000
CORCFLCK EQU X'40' PAGE LOCKED BY CONSOLE FUNCTION 00042000
CORFLUSH EQU X'20' PAGE IS IN FLUSH LIST 00043000
CORFREE EQU X'10' PAGE IS IN FREE LIST 00044000
CORSHARE EQU X'08' PAGE IS SHARED 00045000
CORRSV EQU X'04' PAGE IS RESERVED 00046000
CORCP EQU X'02' PAGE BELONGS TO CP 00047000
CORDISA EQU X'01' PAGE DISABLED - NOT AVAILABLE 00048000
* ENTRY DEFINITION FOR PAGE OWNERSHIP @V407511 00048100
ORG CORFPNT @V407511 00048200
CORVM DS 1F POINTER TO VMBLOK OF PAGE OWNER @V407511 00048300
EJECT 00049000
SWPTABLE DSECT 00050000
SPACE 1 00051000
*** SWPTABLE - SWAP TABLE FOR VIRTUAL MACHINE PAGING 00052000
* 00053000
* -8 +-----------------------+-----------------------+ 00054000
* | SWPVM |S*7| SWPPAG | 00055000
* 0 +-----------------------+-----------------------+ 00056000
* | S*1 | S*2 | S*3 | S*4 | SWPCYL | S*5 | S*6 | 00057000
* 8 +-----------------------+-----------------------+ 00058000
* | | | | | | | | 00059000
* +-----+-----+-----+-----+-----------+-----+-----+ 00060000
* | | | | | | | | 00061000
* +-----+-----+-----+-----+-----------+-----+-----+ 00062000
* 00063000
*** SWPTABLE - SWAP TABLE FOR VIRTUAL MACHINE PAGING 00064000
SPACE 1 00069000
SWPVM DS 1F POINTER TO VMBLOK 00070000
SWPFLAG2 DS 1X S*7 SWAP TABLE FLAG2 BITS @V407511 00070100
ORG SWPFLAG2 @V407511 00070200
SWPPAG DS 1F POINTER TO PAGTABLE 00071000
SWPFLAG DS 1X S*1 SWAP TABLE FLAG BITS 00072000
SWPVPAGE DS 1X S*2 VIRTUAL PAGE NUMBER WITHIN SEGMENT 00073000
SWPKEY1 DS 1X S*3 VIRTUAL STORAGE KEY, 1ST 2048 BYTES 00074000
SWPKEY2 DS 1X S*4 VIRTUAL STORAGE KEY, 2ND 2048 BYTES 00075000
SWPCYL DS 1H DASD CYLINDER ADDRESS 00076000
SWPDPAGE DS 1X S*5 DASD PAGE NUMBER ON CYLINDER 00077000
SWPCODE DS 1X S*6 RDEVBLOK DEVICE CODE 00078000
SPACE 1 00079000
* BITS DEFINED IN SWPFLAG 00080000
SWPTRANS EQU X'80' PAGE IN TRANSIT 00081000
SWPRECMP EQU X'40' PAGE PERMANENTLY ASSIGNED 00082000
SWPALLOC EQU X'20' PAGE ENQUEUED FOR ALLOCATION 00083000
SWPSHR EQU X'10' PAGE SHARED 00084000
SWPREF1 EQU X'08' FIRST HALF PAGE REFERENCED 00085000
SWPCHG1 EQU X'04' FIRST HALF PAGE CHANGED 00086000
SWPREF2 EQU X'02' SECOND HALF PAGE REFERENCED 00087000
SWPCHG2 EQU X'01' SECOND HALF PAGE CHANGED 00088000
SPACE 00088100
* BITS DEFINED IN SWPFLAG2 @V407511 00088200
SWPAPP EQU X'80' ATTACHED PROCESSORS SHARED @V407511 00088300
* PAGE AND SWAP TABLES @V407511 00088400
EJECT 00089000
SEGTABLE DSECT 00090000
SPACE 1 00091000
*** SEGTABLE - TRANSLATION SEGMENT TABLE 00092000
* 00093000
* 0 +-----+-----------------+-----+-----------------+ 00094000
* | S*1 | SEGPAGE | | | 00095000
* 8 +-----+-----------------+-----+-----------------+ 00096000
* | | | | | 00097000
* +-----+-----------------+-----+-----------------+ 00098000
* | | | | | 00099000
* +-----+-----------------+-----+-----------------+ 00100000
* 00101000
*** SEGTABLE - TRANSLATION SEGMENT TABLE 00102000
SPACE 1 00107000
SEGPAGE DS 1F POINTER TO PAGE TABLE - PAGTABLE 00108000
SPACE 1 00109000
ORG SEGPAGE 00111000
SEGPLEN DS BL.4 S*1 PAGE TABLE LENGTH (NO. PAGES - 1) 00112000
SPACE 00114000
* BITS DEFINED IN SEGPAGE+3 00114100
SEGINV EQU X'01' SEGMENT INVALID FLAG @V408246 00114200
SEGMIG EQU X'10' SEGMENT MIGRATED (IF POINTER = 0)@V408246 00114300
SEGENQ EQU X'40' SEGMENT ENQUEUED (IF POINTER = 0)@V408246 00114400
PAGTABLE DSECT 00115000
SPACE 1 00116000
*** PAGTABLE - TRANSLATION PAGE TABLE 00117000
* 00118000
* -10 +-----------------------+-----------------------+ 00118100
* | PAGSTMP | PAGACT | PAGTOT | 00118200
* -8 +-----------------------+-----------------------+ 00119000
* | PAGSHR | PAGSWP | 00120100
* 0 +-----------------------+-----------------------+ 00121000
* | PAGCORE | | | | 00122000
* +-----------+-----------+-----------+-----------+ 00123000
* | | | | | 00124000
* +-----------+-----------+-----------+-----------+ 00125000
* 00126000
*** PAGTABLE - TRANSLATION PAGE TABLE 00127000
SPACE 1 00136000
PAGSTMP DS F PAGE TABLE TIME STAMP @V408246 00136100
PAGACT DS H COUNT OF ACTIVE STE'S FOR THIS @V408246 00136200
* SEG. 00136300
PAGTOT DS H COUNT OF TOTAL STE'S FOR THIS @V408246 00136400
* SEG. 00136500
PAGSHR DS 1F POINTER TO NAME TABLE (SHRTABLE) 00137100
PAGSWP DS 1F POINTER TO SWPTABLE 00138000
PAGCORE DS 1H REAL PAGE ADDRESS 00139000
SPACE 1 00140000
* BITS DEFINED IN PAGCORE+1 00141000
PAGINVAL EQU X'08' PAGTABLE ENTRY INVALID 00142000
PAGREF EQU X'01' PAGE HAS BEEN REFERENCED 00143000
SPACE 00143100
* EQUATES USED IN AP SUPPORT FOR SHARED SEGMENTS @V407511 00143200
PAGTSWP EQU (PAGCORE-PAGSTMP+16*L'PAGCORE) LENGTH OF A @V407511 00143300
* FULL 16 ENTRY PAGE TABLE @V407511 00143400
PAGBMP EQU (PAGTSWP+(SWPFLAG-SWPVM)+16*(SWPCODE-SWPFLAG+1)+8) @V407511 00143500
* LENGTH OF A CONTIGUOUS PAGE AND @V407511 00143600
* SWAP TABLE @V407511 00143700
EJECT 00144000
POP PRINT 00145000
SPACE 00146000