ATS TITLE 'DMKATS (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
*. 00003000
* MODULE NAME - 00004000
* 00005000
* DMKATS 00006000
* 00007000
* FUNCTION - 00008000
* 00009000
* 00010000
* ATTRIBUTES - 00011000
* REENTRANT, PAGEABLE, CALLED VIA SVC 00012000
* 00013000
* ENTRY POINTS - 00014000
* 00015000
* DMKATSCF - CALLED VIA SVC IF A SHARED PAGE IS GOING TO BE 00016000
* CHANGED. 00017000
* CALLED BY DMKTRC FOR (TRACE) COMMAND. 00018000
* CALLED BY DMKCDS FOR VIRTUAL (STORE) COMMAND. 00019000
* CALLED BY DMKCDS FOR (STCP) COMMAND. 00020000
* CALLED BY DMKCFD FOR (ADSTOP) COMMAND. 00021000
* 00022000
* ENTRY CONDITIONS - 00023000
* 00024000
* DMKATSCF 00025000
* GPR 2 = VITURAL PAGE ADDRESS @VA12533 00026500
* GPR 11 = ADDRESS OF USER'S VMBLOK 00027000
* GPR 12 = ENTRY POINT 00028000
* GPR 13 = ADDRESS OF STANDARD SAVE AREA 00029000
* 00030000
* EXIT CONDITIONS - 00031000
* NORMAL - 00032000
* CONDITION CODE IT SET TO ZERO 00033000
* ERROR - 00034000
* CONDITION CODE IS SET TO NON-ZERO. 00035000
* 00036000
* THE CURRENT RUNUSER 00037000
* IS SENT AN ERROR MESSAGE AND THE SHARED NAMED SYSTEM 00038000
* THAT HE CHANGED IS RELEASE FOR RUNUSER. ALL OTHER 00039000
* USER'S ARE UNAFFECTED BY THE ALTERATION OF THE SHARED 00040000
* SYSTEM. 00041000
* 00042000
* CALLS TO OTHER ROUTINES - 00043000
* DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL. 00044000
* DMKFREE - TO OBTAIN FREE STORAGE 00045000
* DMKFRET - TO RETURN STORAGE GOTTEN BY CALL TO DMKFREE 00046000
* DMKPTRAN - TO BRING IN A USERS VIRTUAL PAGE 00047000
* DMKSTKCP - STACK A CPEXBLOK 00048000
* DMKCVTBH - CONVERT BINARY TO HEX 00049000
* DMKCFMBK - TO PUT USER IN CONSOLE FUNCTION MODE 00050000
* DMKDSPCH - DISPATCHER 00051000
* DMKPTRLK - TO LOCK A PAGE IN STORAGE 00052000
* DMKPTRUL - TO UNLOCK A PAGE IN STORAGE 00053000
* DMKPTRFT - RELEASE A REAL STORAGE FRAME 00054000
* DMKSCNVS - LOCATE A RDEVBLOK FOR VOLSER 00055000
* DMKCVTAB - ABEND SYSTEM AFTER CLOCK FAILURE 00056000
* DMKPGTPR - RELEASE A DASDI SLOT 00057000
* DMKPTRPW - WAIT FOR PAGING ACTIVITY TO END 00058000
* DMKVMASH - CHECK FOR CHANGED SHARED PAGES 00059000
* 00060000
* TABLES/WORKAREAS - 00061000
* CORTABLE 00062000
* VMABLOK 00063000
* SHRTABLE 00064000
* VMBLOK 00065000
* PAGTABLE 00066000
* SEGTABLE 00067000
* SWPTABLE 00068000
* DMKSYSOW 00069000
* DMKPTRUC 00070000
* DMKSNTBL 00071000
* DMKPTRSC 00072000
* DMKPTRRC 00073000
* DMKDSPNP 00074000
* 00075000
* REGISTER USAGE - 00076000
* GPR0 - PREFIX STORAGE AREA 00077000
* GPR5 - ADDRESS OF SWPTABLE 00078000
* GPR6 - ADDRESS OF PAGCORE 00079000
* GPR7 - ADDRESS OF CORTABLE 00080000
* GPR8 - ADDRESS OF SEGTABLE 00081000
* GPR9 - ADDRESS OF VMABLOK 00082000
* GPR10- ADDRESS OF SHRTABLE 00083000
* GPR11- ADDRESS OF VMBLOK 00084000
* GPR12- BASE REGISTER FOR THIS MODULE 00085000
* GPR13- ADDRESS OF STANDARD SAVE AREA 00086000
* GPR14- LINKAGE REGISTER 00087000
* GPR15- LINKAGE REGISTER 00088000
* 00089000
* NOTES - 00090000
* NONE 00091000
* 00092000
* OPERATION - 00093000
* 00094000
* DMKATSCF IS CALLED BY THE COMMAND PROCESSORS WHEN IT IS 00095000
* DETERMINED THAT THE EXECUTION OF THE COMMAND IS GOING TO 00096000
* CHANGE A SHARED PAGE. THE VIRTUAL MACHINE ISSUING THE COMMAND 00097000
* IS NOTIFIED THAT THE COMMAND HAS CAUSED THE RELEASE OF THE 00098000
* SHARED SYSTEM. THE USER WILL CONTINUE TO RUN WITHOUT A SHARED 00099000
* COPY OF THE NAMED SYSTEM. 00100000
* 00101000
*. 00102000
EJECT 00103000
COPY OPTIONS @V60BC11 00104000
COPY LOCAL @V60BC11 00105000
DMKATS CSECT @V60BC11 00106000
EXTRN DMKPTRSC @V60BC11 00107000
EXTRN DMKPTRRC @V60BC11 00108000
EXTRN DMKDSPNP @V60BC11 00109000
EXTRN DMKCVTAB @V60BC11 00110000
EXTRN DMKCVTBH @V60BC11 00111000
EXTRN DMKCFMBK @V60BC11 00112000
EXTRN DMKSTKCP @V60BC11 00113000
EXTRN DMKERMSG @V60BC11 00114000
EXTRN DMKSCHDL @V60BC11 00115000
EXTRN DMKSYSOW @V60BC11 00116000
EXTRN DMKSNTBL,DMKSCNVS,DMKPTRUL,DMKPGTPR,DMKPTRFT @V60BC11 00117000
EXTRN DMKPTRPW @V60BC11 00118000
EXTRN DMKPTRAN @V60BC11 00119000
EXTRN DMKPTRUC @V60BC11 00120000
EXTRN DMKVMASH @V60BC11 00121000
EXTRN DMKSYSAP @VMI0016 00122000
SPACE 00123000
USING PSA,R0 @V60BC11 00124000
USING SWPTABLE,R5 @V60BC11 00125000
USING PAGCORE,R6 @V60BC11 00126000
USING CORTABLE,R7 @V60BC11 00127000
USING SEGTABLE,R8 @V60BC11 00128000
USING VMABLOK,R9 @V60BC11 00129000
USING SHRTABLE,R10 @V60BC11 00130000
USING VMBLOK,R11 @V60BC11 00131000
USING DMKATS,R12 @V60BC11 00132000
USING SAVEAREA,R13 @V60BC11 00133000
EJECT 00134000
DC C'DMKATS ' MODULE IDENTIFIER 00135000
DMKATSCF RELOC HANDLE (TRACE,STORE,ADSTOP) COMMAND @V60BC11 00136000
XC SAVEWRK1,SAVEWRK1 CLEAR FLAG BYTE & WORKAREA @V60BC11 00137000
XC SAVEWRK2(SAVEWRK9-SAVEWRK2+4),SAVEWRK2 CLEAR @V60BC11 00138000
CL R11,LASTUSER IS LASTUSER THE SAME AS THIS USER@V60BC11 00139000
BNE NOCHG NO, OK TO UNSHARE THIS USER @V60BC11 00140000
CALL DMKVMASH YES, CHECK FOR CHANGED PAGES @V60BC11 00141000
BZ NOCHG NO CHANGES, OK TO UNSHARE @V60BC11 00142000
MVI SAVEWRK1,HEXFF SET FIELD FOR NON-ZERO CC @V60BC11 00143000
CFEXIT DS 0H @V60BC11 00144000
SLR R0,R0 ZIP REG @V60BC11 00145000
C R0,SAVEWRK6 WAS DMKSNT BROUGHT IN @V60BC11 00146000
BE CFEXIT1 NO, SKIP RELEASING FRAME @V60BC11 00147000
L R2,SAVEWRK6 GET ADDRESS OF FRAME @V60BC11 00148000
CALL DMKPTRUL UNLOCK THE FRAME @V60BC11 00149000
CFEXIT1 DS 0H @V60BC11 00150000
TM SAVEWRK1,HEX00 SET THE CONDITION CODE @V60BC11 00151000
EXIT RETURN TO CALLER @V60BC11 00152000
SPACE 2 00153000
NOCHG DS 0H @V60BC11 00154000
CALL DMKPTRPW,AFFINITY WAIT FOR PAGING TO COMPLETE @V60BC11 00155000
LR R1,R2 SET R1 FOR TRANS @VA12533 00155500
TRANS 2,1,OPT=(BRING,DEFER) @VA12533 00155600
BAL R3,GETSHRNM GET PTRS TO (SHRTABLE/VMABLOK) @V60BC11 00156000
MVC SAVEWRK2(L'SHRNAME),SHRNAME SAVE THE NAME OF @V60BC11 00157000
* THE SHARED SYSTEM 00158000
LA R0,CPEXSIZE GET SIZE OF CPEXBLOK @VA12771 00159500
CALL DMKFREE GET A CPEXBLOK @VA12771 00160000
USING CPEXBLOK,R1 @VA12771 00160500
LM R2,R3,SAVEWRK2 SAVE THE SHARED SYS NAME @VA12771 00161000
STM R0,R15,CPEXREGS SAVE ALL THE REGISTERS @VA12771 00161500
LA R15,ERR181 GET ADDRESS OF MESSAGE ROUTINE @VA12771 00162000
ST R15,CPEXADD STORE RETURN ADDRESS @VA12771 00162500
CALL DMKSTKCP STACK THE CPEXBLOK @VA12771 00163000
DROP R1 @VA12771 00163500
XC SAVEWRK2(SAVEWRK3-SAVEWRK2+4),SAVEWRK2 ZERO NAME@V60BC11 00165000
BAL R14,UNSHARE UNSHARE USER FROM THIS SYSTEM @V60BC11 00166000
OI APSTAT2,CPPTLBR INDICATE PTLB NEEDED @V60BC11 00167000
CFSETCC DS 0H @V60BC11 00168000
MVI SAVEWRK1,HEX00 SET FIELD FOR ZERO CC @V60BC11 00169000
B CFEXIT RETURN @V60BC11 00170000
ERR181 DS 0H @VA12771 00170050
USING EMSGBLOK,R1 @VA12771 00170100
LA R0,EMSGSIZE GET SIZE OF AREA FOR MESSAGE @VA12771 00170150
CALL DMKFREE GET ADDRESS OF AREA FOR MESSAGE @VA12771 00170200
XC EMSGAREA,EMSGAREA CLEAR MESSAGE AREA @VA12771 00170250
STM R2,R3,EMSGNAME MOVE IN SHARED SYS NAME @VA12771 00170300
DROP R1 @VA12771 00170350
LA R0,L'SHRNAME LENGTH OF THE NAME FOR MESSAGE @VA12771 00170400
ICM R0,B'1110',=C'ATS' MODULE IDENT. @VA12771 00170450
LA R2,EMSG181 LOAD ERROR CODE @VA12771 00170500
ICM R2,B'1000',=X'80' FLAGS TO RETURN TO CALLER @VA12771 00170550
CALL DMKERMSG CALL THE MESSAGE WRITTER @VA12771 00170600
LA R0,EMSGSIZE SIZE OF EMSGBLOK IN DW'S @VA12771 00170650
CALL DMKFRET FRET THE EMSGBLOK @VA12771 00170700
GOTO DMKDSPCH GO TO THE DISPATCHER @VA12771 00170750
EJECT 00171000
* 00172000
* THIS SECTION OF CODE WILL UNSHARE THE USER FROM THE NAMED 00173000
* SYSTEM. INPUT TO THIS ROUTINE IS THE ADDRESS 00174000
* OF THE VMABLOK IN R10. 00175000
* 00176000
UNSHARE DS 0H @V60BC11 00177000
ST R14,SAVEWRK8 SAVE RETURN ADDRESS @V60BC11 00178000
CLC SHRUSECT,F1+2 IS THIS THE LAST USER? @V60BC11 00179000
BE LSTSUSER YES, GO USE SHARED PAGTABLES @V60BC11 00180000
L R2,SHRSEGCT LOAD NUMBER OF SHARED SEGMENTS @V60BC11 00181000
BCTR R2,0 DECREMENT FOR INDEXING @V60BC11 00182000
NAMELOOP DS 0H @V60BC11 00183000
SLR R8,R8 ZERO REG @V60BC11 00184000
IC R8,SHRSEGNM(R2) GET SHARED SEGMENT NUMBER @V60BC11 00185000
SLL R8,2 TIMES FOUR FOR INDEXING @V60BC11 00186000
AL R8,VMSEG LOAD ADDRESS OF SEGTABLE ENTRY @V60BC11 00187000
L R6,SEGPAGE LOAD ADDRESS OF PTO @V60BC11 00188000
TM SEGPAGE+3,SEGINV SEGMENT VALID @V60BC11 00189000
BZ B1 YES, SKIP SETTING OF FLAG @V60BC11 00190000
OI SAVEWRK1,INVLSEG SET FLAG FOR UPDATING COUNTERS @V60BC11 00191000
B1 N R6,CLCNTINV CLEAR UNWANTED BITS @V60BC11 00192000
LR R0,R6 LOAD R0 WITH ADDRESS OF PTO @V60BC11 00193000
SL R0,F16 BACKUP TO PAGTABLE @V60BC11 00194000
ST R0,SAVEWRK2 SAVE FOR LATER USE @V60BC11 00195000
L R3,SEGPAGE LOAD R3 WITH STE @V60BC11 00196000
SRL R3,28 SHIFT TO OBTAIN NUMBER OF PTES @V60BC11 00197000
LA R3,1(R3) PLUS ONE FOR LOOP CONTROL @V60BC11 00198000
B OBTABLES GO GET NEW PAGTABLE @V60BC11 00199000
DECOUNT DS 0H @V60BC11 00200000
NI SAVEWRK1,X'FF'-(INVLSEG+PTOBTAIN) RESET INVALID @V60BC11 00201000
* SEGMENT & PAGTABLE OBTAINED FLAGS@V60BC11 00202000
S R2,F1 ANYMORE SEGMENTS @V60BC11 00203000
BNM NAMELOOP YES, GO PROCESS THEM @V60BC11 00204000
ICM R4,7,SAVEWRK1+1 LOAD ADDR PREVIOUS VMABLOK @V60BC11 00205000
TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00206000
BO SKRST2 YES, SKIP VMABLOK FRET'ING @V60BC11 00207000
LR R1,R9 LOAD ADDR VMABLOK FOR FRET @V60BC11 00208000
L R9,VMAFPNT LOAD ADDR NEXT VMABLOK @V60BC11 00209000
ST R9,VMAFPNT-VMABLOK(,R4) DEQUEUE CURRENT VMABLOK @V60BC11 00210000
LA R0,VMASIZE GET NUMBER DOUBLEWORDS @V60BC11 00211000
CALL DMKFRET RETURN THE VMABLOK @V60BC11 00212000
SKRST2 DS 0H @V60BC11 00213000
LH R1,VMSHRSYS LOAD USERS SHARED SYSTEM COUNT @V60BC11 00214000
BCT R1,SKRST1 DECREMENT FOR ONE UNSHARED @V60BC11 00215000
NI VMOSTAT,X'FF'-VMSHR GONE TO ZERO,RESET SHARE BIT@V60BC11 00216000
SKRST1 DS 0H @V60BC11 00217000
STH R1,VMSHRSYS STORE UPDATED COUNT @V60BC11 00218000
LH R1,SHRUSECT LOAD SHARED SYSTEM USER COUNT @V60BC11 00219000
BCTR R1,0 DECREMENT FOR USER UNSHARED @V60BC11 00220000
STH R1,SHRUSECT STORE UPDATED COUNT @V60BC11 00221000
MVC SAVEWRK2(L'SHRNAME),SHRNAME SAVE NAME OF SYSTEM @V60BC11 00222000
* ACROSS TRANS @V60BC11 00223000
EJECT 00224000
* 00225000
* THIS SECTION OF CODE WILL RECONSTRUCT THE SWAP 00226000
* TABLE ENTRIES. IT WILL BRING IN DMKSNTBL AND FILL IN ALL THE 00227000
* SWPTABLE ENTRIES FOR THE UNSHARED SEGMENTS WITH THE ORIGINAL 00228000
* CCPD OF THE SYSOWNED VOLUME CONTAINING THE SHARED SYSTEM. 00229000
* 00230000
SLR R0,R0 ZERO REG @V60BC11 00231000
C R0,SAVEWRK6 NAME TABLE ALREADY IN @V60BC11 00232000
BNE SKIPTRAN YES, SKIP TRANS @V60BC11 00233000
L R1,=A(DMKSNTBL) LOAD ADDRESS OF NAME TABLE @V60BC11 00234000
TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM),AFFINITY @V60BC11 00235000
ST R2,SAVEWRK6 SAVE ADDRESS FOR FUTURE USE @V60BC11 00236000
SKIPTRAN L R4,SAVEWRK6 LOAD ADDR OF DMKSNTBL @V60BC11 00237000
CKNAME DS 0H @V60BC11 00238000
USING SYSTBL,R4 @V60BC11 00239000
CLC SYSNAME,SAVEWRK2 COMPARE NAMES @V60BC11 00240000
BE FOUNDNAM BRANCH WHEN FOUND @V60BC11 00241000
L R3,SYSPNT LOAD DISPLACEMENT TO NEXT ENTRY @V60BC11 00242000
AR R4,R3 BUMP TO NEXT ENTRY @V60BC11 00243000
LTR R3,R3 REACHED END OF TABLE @V60BC11 00244000
BNZ CKNAME NO, CONTINUE SEARCHING @V60BC11 00245000
B ERROR3 YES, SOMTHINGS REALLY WRONG @V60BC11 00246000
FOUNDNAM DS 0H @V60BC11 00247000
LA R1,SYSVOL LOAD ADDR OF VOLSER FOR SYSVOL @V60BC11 00248000
LA R0,L'SYSVOL SERIAL LENGTH @V60BC11 00249000
CALL DMKSCNVS LOCATE RDEVBLOK FOR SYSVOL @V60BC11 00250000
BNZ ERROR4 COUDN'T FIND SYSVOL @V60BC11 00251000
L R5,SYSSTART GET STARTING CCPD @V60BC11 00252000
USING RDEVBLOK,R1 @V60BC11 00253000
IC R5,RDEVCODE+1 INSERT INDEX INTO OWNED LIST @V60BC11 00254000
LA R0,PAGE3330 MAXIMUM PAGES/CYL ON 3330 @V60BC11 00255000
TM RDEVTYPE,TYP3330 IS THIS A 3330 @V60BC11 00256000
BO SAVMAXPG YES ----- @V60BC11 00257000
LA R0,PAGE2314 MAXIMUM PAGES/CYL ON 2314 @V60BC11 00258000
TM RDEVTYPE,TYP2314 IS THIS A 2314 @V60BC11 00259000
BO SAVMAXPG YES ----- @V60BC11 00260000
LA R0,PAGE3350 MAXIMUM PAGES/CYL ON 3350 @V60BC11 00261000
TM RDEVTYPE,TYP3350 IS THIS A 3350 @V60BC11 00262000
BO SAVMAXPG YES ----- @V60BC11 00263000
LA R0,PAGE3375 Maximum pages/cyl on 3375 HRC106DK 00263100
TM RDEVTYPE,TYP3375 Is this a 3375 HRC106DK 00263200
BO SAVMAXPG Yes ----- HRC106DK 00263300
LA R0,PAGE3380 Maximum pages/cyl on 3380 HRC106DK 00263400
TM RDEVTYPE,TYP3380 Is this a 3380 HRC106DK 00263500
BO SAVMAXPG Yes ----- HRC106DK 00263600
LA R0,PAGE2305 PAGES/CYL FOR 2305 AND 3340 @V60BC11 00264000
DROP R1 @V60BC11 00265000
SAVMAXPG DS 0H @V60BC11 00266000
SLL R0,8 SETUP FOR LATER COMPARE @V60BC11 00267000
ST R0,SAVEWRK2 STORE IT AWAY FOR LATER USE @V60BC11 00268000
SLR R3,R3 ZERO REG FOR INDEXING @V60BC11 00269000
L R6,F256 INCREMENT CONSTANT FOR CCPD'S @V60BC11 00270000
LH R7,SYSPAGLN NUMBER OF ENTRIES IN SYSPAGNM @V60BC11 00271000
ST R9,SAVEWRK3 SAVE ADDR VMABLOK @V60BC11 00272000
NXTRANGE DS 0H @V60BC11 00273000
L R8,SYSPAGNM(R3) LOAD RANGE OF PAGES @V60BC11 00274000
SRDL R8,16 START PAGE TO LOW ORDER OF R8 @V60BC11 00275000
SRL R9,16 END PAGE TO LOW ORDER OF R9 @V60BC11 00276000
SLL R8,12 FORM START PAGE ADDRESS @V60BC11 00277000
SLL R9,12 FORM END PAGE ADDRESS @V60BC11 00278000
NXTSLOT DS 0H @V60BC11 00279000
AR R5,R6 BUMP TO NEXT CCPD @V60BC11 00280000
LR R1,R5 CCPD TO R1 @V60BC11 00281000
N R1,CLRSEGNM SAVE ONLY PAGE NUMBER @V60BC11 00282000
CL R1,SAVEWRK2 NEED TO BUMP TO NEXT CYLINDER @V60BC11 00283000
BNH SWAPCONT NOT YET @V60BC11 00284000
A R5,BUMPLOW ADD ONE TO CYLINDER NUMBER @V60BC11 00285000
ICM R5,B'0010',F1+3 RESET PAGE NUMBER TO ONE @V60BC11 00286000
SWAPCONT DS 0H @V60BC11 00287000
LR R2,R8 START ADDRESS TO R2 @V60BC11 00288000
SRL R2,16 SEGMENT NO. ONLY @V60BC11 00289000
SLL R2,2 SEGMENT NO. * 4 FOR INDEX @V60BC11 00290000
AL R2,VMSEG LOAD ADDR OF SEGTABLE ENTRY @V60BC11 00291000
L R2,0(R2) LOAD ADDR OF PTO @V60BC11 00292000
N R2,CLCNTINV CLEAR UNWANTED BITS @V60BC11 00293000
S R2,F16 BACKUP TO HEADER @V60BC11 00294000
LA R2,PAGTSWP+8(,R2) LOAD ADDR 1ST SWPTABLE ENTRY @V60BC11 00295000
LR R1,R8 VIRTUAL ADDRESS @V60BC11 00296000
SRL R1,12 PAGE NUMBER @V60BC11 00297000
N R1,F15 PAGE NO. WITHIN SEGMENT @V60BC11 00298000
SLL R1,3 PAGE NO. *8 FOR SWPTABLE @V60BC11 00299000
* ENTRY INDEX @V60BC11 00300000
AR R2,R1 GET ADDR SWPTABLE ENTRY @V60BC11 00301000
USING SWPFLAG,R2 @V60BC11 00302000
TM SWPFLAG,SWPALLOC UNCHANGED PAGE @VMI0064 00303000
BZ NXTRPAGE NO, SKIP RESETTING CCPD @VMI0064 00304000
ST R5,SWPCYL STORE ORIGINAL CCPD @V60BC11 00305000
NI SWPFLAG,X'FF'-SWPALLOC RESET ALLOCATE BIT @VMI0064 00306000
NXTRPAGE A R8,F4096 BUMP TO NEXT VIRTUAL PAGE ADDR @V60BC11 00307000
CR R8,R9 REACHED END OF RANGE @V60BC11 00308000
BNH NXTSLOT NO, CONTINUE UPDATES @V60BC11 00309000
A R3,F4 BUMP SYSPAGNM INDEX @V60BC11 00310000
BCT R7,NXTRANGE IF MORE ENTRIES, KEEP LOOPING @V60BC11 00311000
* THIS NEXT SECTION WILL LOOP THROUGH THE RANGES AGAIN TO ENSURE 00312000
* WE RESET ALL THE PAGES WITHIN THE SEGMENT(S). THIS WILL RESET 00313000
* THE ENTRIES SKIPPED BY THE RANGE OF PAGE NUMBERS IN DMKSNT. 00314000
* 00315000
SLR R3,R3 ZIP REGISTER @VMI0064 00316000
ST R3,TEMPR0 INITIALIZE RANGE FIELD @VMI0064 00317000
LH R7,SYSPAGLN GET NUMBER ENTRIES IN SYSPAGNM @VMI0064 00318000
REBRANGE DS 0H @VMI0064 00319000
L R8,SYSPAGNM(R3) LOAD RANGE OF PAGES @VMI0064 00320000
SRDL R8,16 START PAGE TO LOW ORDER OF R8 @VMI0064 00321000
SRL R9,16 END PAGE TO LOW ORDER OF R9 @VMI0064 00322000
SLL R8,12 FORM START PAGE ADDRESS @VMI0064 00323000
SLL R9,12 FORM END PAGE ADDRESS @VMI0064 00324000
CL R8,TEMPR0 START WITH RANGE ALREADY DONE @VMI0064 00325000
BH REBPAGE NO, PROCESS RANGE @VMI0064 00326000
CL R9,TEMPR0 END WITHIN RANGE ALREADY DONE @VMI0064 00327000
BL REBTEST YES, GET NEXT RANGE @VMI0064 00328000
REBPAGE DS 0H @VMI0064 00329000
N R8,FORCEPG0 FORCE START TO PAGE 0 OF SEGMENT @VMI0064 00330000
O R9,FORCEPGF FORCE END TO END OF SEGMENT @VMI0064 00331000
ST R9,TEMPR0 SAVE END ADDRESS IN RANGE @VMI0064 00332000
REBSWAP DS 0H @VMI0064 00333000
LR R2,R8 START ADDRESS TO R2 @VMI0064 00334000
SRL R2,16 SEGMENT NUMBER ONLY @VMI0064 00335000
SLL R2,2 SEGMENT NO. * 4 FOR INDEXING @VMI0064 00336000
AL R2,VMSEG LOAD ADDR OF SEGMENT ENTRY @VMI0064 00337000
L R2,0(,R2) LOAD ADDR OF PTO @VMI0064 00338000
N R2,CLCNTINV CLEAR UNWANTED BITS @VMI0064 00339000
S R2,F16 BACKUP TO HEADER @VMI0064 00340000
LA R2,PAGTSWP+8(,R2) LOAD ADDR 1ST SWPTABLE ENTRY @VMI0064 00341000
LR R1,R8 VIRTUAL ADDRESS TO R1 @VMI0064 00342000
N R1,FORCEPGF GET PAGE NUMBER @VMI0064 00343000
SRL R1,9 PAGE NUMBER * 8 @VMI0064 00344000
AR R2,R1 GET ADDR SWPTABLE ENTRY @VMI0064 00345000
TM SWPFLAG,SWPALLOC UNCHANGED PAGE @VMI0064 00346000
BZ REBTEST NO, SKIP RESETTING @VMI0064 00347000
NI SWPFLAG,X'FF'-SWPALLOC YES, RESET ALLOCATE BIT @VMI0064 00348000
REBTEST DS 0H @VMI0064 00349000
A R8,F4096 BUMP TO NEXT VIRTUAL PAGE ADDR @VMI0064 00350000
CR R8,R9 REACHED END OF RANGE @VMI0064 00351000
BNH REBSWAP NO, KEEP PROCESSING @VMI0064 00352000
A R3,F4 YES, BUMP TO NEXT SYSPAGNM ENTRY @VMI0064 00353000
BCT R7,REBRANGE BRANCH IF MORE ENTRIES TO PROCESS@VMI0064 00354000
UNSHEXIT DS 0H @V60BC11 00355000
L R14,SAVEWRK8 RESTORE RETURN ADDRESS @V60BC11 00356000
BR R14 RETURN TO CALLER @V60BC11 00357000
DROP R2 @V60BC11 00358000
EJECT 00359000
* 00360000
* THIS SECTION OF CODE WILL OBTAIN THE NEW PAGE AND SWAP TABLES. 00361000
* 00362000
OBTABLES DS 0H @V60BC11 00363000
L R6,SAVEWRK2 LOAD ADDRESS PAGTABLE HEADER @V60BC11 00364000
BAL R14,BLPAGSWP BUILD PAGE AND SWAP TABLES @V60BC11 00365000
ST R5,SAVEWRK3 SAVE ADDR OF NEW PAGTABLE @V60BC11 00366000
OI SAVEWRK1,PTOBTAIN INDICATE PAGTABLE BUILT @V60BC11 00367000
USING PAGTABLE,R6 00368000
SPACE 2 00369000
L R6,SAVEWRK2 LOAD PAGTABLE HEADER ADDRESS @V60BC11 00370000
TM SAVEWRK1,INVLSEG WAS THE SEGMENT INVALID @V60BC11 00371000
BZ UPDTBTH2 NO, UPDATE BOTH PAGACT + PAGTOT @V60BC11 00372000
LH R0,PAGTOT LOAD TOTAL USER COUNT @V60BC11 00373000
BCTR R0,0 DECREMENT FOR THIS USER @V60BC11 00374000
STH R0,PAGTOT STORE UPDATED COUNTER @V60BC11 00375000
TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V60BC11 00376000
BZ BLUNCHNG NO,CONTINUE PROCESSING @V60BC11 00377000
TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00378000
BO BLUNCHNG YES, ONLY SINGLE COPY @V60BC11 00379000
TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 00380100
BZ B2 NO, ADJUST FOR ATTACHED PAGTABLE @V60BC11 00381000
STH R0,PAGBMP+PAGTOT UPDATE THE ATTACHED TOTAL COUNT@V60BC11 00382000
B BLUNCHNG GO BUILD PAGTABLE @V60BC11 00383000
B2 LA R14,PAGBMP LOAD INCREMENT VALUE @V60BC11 00384000
SLR R6,R14 BACKUP TO MAIN PAGTABLE @V60BC11 00385000
STH R0,PAGTOT UPDATE THE MAIN TOTAL COUNT @V60BC11 00386000
ALR R6,R14 RESET PAGTABLE POINTER @V60BC11 00387000
B BLUNCHNG BUILD PAGTABLE BECAUSE PREVCHNG @V60BC11 00388000
UPDTBTH2 DS 0H @V60BC11 00389000
L R0,PAGACT LOAD PAGACT + PAGTOT COUNTERS @V60BC11 00390000
TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V60BC11 00391000
BO CSLOOP2 YES, USE COMPARE & SWAP LOGIC @V60BC11 00392000
S R0,ACTTOT DECREMENT BOTH COUNTERS @V60BC11 00393000
ST R0,PAGACT STORE UPDATED COUNTERS @V60BC11 00394000
B BLUNCHNG BRANCH AROUND ATTACHED CODE @V60BC11 00395000
CSLOOP2 DS 0H @V60BC11 00396000
LR R14,R0 COUNTERS TO REG 14 @V60BC11 00397000
SL R14,ACTTOT DECREMENT BOTH COUNTERS @V60BC11 00398000
CS R0,R14,PAGACT UPDATE COUNTERS @V60BC11 00399000
BNZ CSLOOP2 TRY AGAIN, SOMEBODY CHANGED ONE @V60BC11 00400000
TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00401000
BO BLUNCHNG YES, ONLY SINGLE SET @V60BC11 00402000
TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 00403100
BZ B2A NO, ADJUST TO MAIN PAGTABLE @V60BC11 00404000
L R0,PAGBMP+PAGACT LOAD ATTACHED ACTIVE COUNT @V60BC11 00405000
LA R6,PAGBMP(,R6) BUMP TO ATTACHED PAGTABLE @V60BC11 00406000
B CSLOOP3 GO UPDATE ATTACHED ACTIVE COUNT @V60BC11 00407000
B2A LA R14,PAGBMP LOAD INCREMENT VALUE @V60BC11 00408000
SLR R6,R14 BACKUP TO MAIN PAGTABLE @V60BC11 00409000
L R0,PAGACT LOAD MAIN ACTIVE COUNT @V60BC11 00410000
CSLOOP3 DS 0H @V60BC11 00411000
LR R14,R0 LOAD REG FOR COMPARE @V60BC11 00412000
SL R14,ACTTOT DECREMENT COUNTERS BY ONE @V60BC11 00413000
CS R0,R14,PAGACT UPDATED ACTIVE & TOTAL COUNTERS @V60BC11 00414000
BNZ CSLOOP3 TRY AGAIN @V60BC11 00415000
LA R14,PAGBMP LOAD INCREMENT VALUE @V60BC11 00416000
TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 00417100
BZ B2B NO, RESET FOR ATTACHED PROCESSOR @V60BC11 00418000
SLR R6,R14 RESET TO MAIN PROCESSOR @V60BC11 00419000
B BLUNCHNG GO BUILD PAGTABLE @V60BC11 00420000
B2B ALR R6,R14 RESET TO ATTACHED PROCESSOR @V60BC11 00421000
BLUNCHNG DS 0H @V60BC11 00422000
TM SAVEWRK1,PTOBTAIN PAGTABLE ALREADY OBTAINED @V60BC11 00423000
BZ B2C NO, GO OBTAIN TABLES @V60BC11 00424000
NI SAVEWRK1,X'FF'-PTOBTAIN RESET OBTAINED FLAG @V60BC11 00425000
B DECOUNT GO DECREMENT SEGMENT COUNT @V60BC11 00426000
B2C DS 0H @V60BC11 00427000
BAL R14,BLPAGSWP BUILD PAG-&SWPTABLE FOR CHG SYS @V60BC11 00428000
B DECOUNT GO DECREMENT SEG COUNT @V60BC11 00429000
DROP R6 @V60BC11 00430000
USING PAGCORE,R6 @V60BC11 00431000
EJECT 00432000
* 00433000
* THIS SECTION OF CODE PROCESSES THE USER WHEN HE IS THE LAST 00434000
* USER OF A SHARED SYSTEM. IT WILL RESET THE CORSHARE BIT IN ALL 00435000
* CORTABLE ENTRIES AND IF WE ARE RUNNING IN ATTACHED PROCESSOR 00436000
* MODE, RELEASE ALL BACKING STORAGE SLOTS, CORTABLE ENTRIES AND 00437000
* FREE STORAGE ASSOCIATED WITH THE PAGE AND SWAP TABLES OF THE 00438000
* OTHER PROCESSOR. 00439000
* 00440000
LSTSUSER DS 0H @V60BC11 00441000
L R15,=A(DMKSYSAP) @VMI0016 00442000
CLI 0(R15),YES SYSTEM GENERATED FOR AP? @VMI0016 00443000
BNE LSTAPU NO, ONLY ONE SET OF PAGTABLES @VMI0016 00444000
TM APSTAT1,MPFEAT SYSTEM HAS MP FEATURE? @VMI0016 00445000
BZ LSTAPU NO, ONLY ONE SET OF PAGTABLES @V60BC11 00446000
CLC VMSHRPRC,LPUADDR+1 LAST SERVICED ON THIS PROC @V60BC11 00447000
BNE LSTOTHER NO, UNSHARING FOR OTHER PROCESSOR@V60BC11 00448000
TM APSTAT1,PROCIPL IS THIS THE MAIN (IPL) PROC? @V60B7AA 00449100
BO LSTCPU YES, SETUP FOR CPU @V60BC11 00450000
LA R4,0 NO, LOAD CPU FRET INDEX @V60BC11 00451000
B SAVEVMA JOIN COMMON CODE @V60BC11 00452000
LSTCPU DS 0H @V60BC11 00453000
LA R4,PAGBMP LOAD APU FRET INDEX @V60BC11 00454000
B SAVEVMA JOIN COMMON CODE @V60BC11 00455000
LSTOTHER DS 0H @V60BC11 00456000
TM APSTAT1,PROCIPL IS THIS THE MAIN (IPL) PROC? @V60B7AA 00457100
BO LSTAPU YES, SET UP FOR CPU @VMI0016 00458000
LA R4,PAGBMP YES, LOAD APU FRET INDEX @V60BC11 00459000
B SAVEVMA JOIN COMMON CODE @V60BC11 00460000
LSTAPU DS 0H @V60BC11 00461000
LA R4,0 LOAD CPU FRET INDEX @V60BC11 00462000
SAVEVMA DS 0H @V60BC11 00463000
ST R4,SAVEWRK4 SAVE INDEX FOR FRETSHR @V60BC11 00464000
TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00465000
BO SAVEVMA1 YES, NO VMABLOK TO FRET @V60BC11 00466000
ICM R15,B'0111',SAVEWRK1+1 LOAD ADDR PREV VMABLOK @V60BC11 00467000
LR R1,R9 LOAD ADDR VMABLOK FOR FRET @V60BC11 00468000
L R9,VMAFPNT LOAD ADDR NEXT VMABLOK @V60BC11 00469000
ST R9,VMAFPNT-VMABLOK(,R15) DEQUEUE CURRENT VMABLOK@V60BC11 00470000
LA R0,VMASIZE LOAD NUMBER DOUBLEWORDS @V60BC11 00471000
CALL DMKFRET RETURN THE VMABLOK @V60BC11 00472000
SAVEVMA1 DS 0H @V60BC11 00473000
LH R0,VMSHRSYS LOAD SHARED SYSTEM COUNT @V60BC11 00474000
BCT R0,SAVEVMA2 DECREMENT COUNTER @V60BC11 00475000
NI VMOSTAT,X'FF'-VMSHR GONE TO ZERO,RESET SHARE BIT@V60BC11 00476000
SAVEVMA2 DS 0H @V60BC11 00477000
STH R0,VMSHRSYS STORE UPDATED COUNTER @V60BC11 00478000
LM R1,R2,SHRFPNT UNCHAIN THE SHRTABLE@V60BC11 00479000
STCM R1,B'0111',SHRFPNT+1-SHRTABLE(R2) FROM SHARED @VMI0085 00480000
ST R2,SHRBPNT-SHRTABLE(,R1) SYSTEM QUEUE @V60BC11 00481000
L R15,=A(DMKSYSAP) @VMI0016 00482000
CLI 0(R15),YES SYSTEM GENERATED FOR AP? @VMI0016 00483000
BNE MAKEPRVT NO, JUST MAKE TABLES PRIVATE @VMI0016 00484000
TM APSTAT1,MPFEAT SYSTEM HAS MP FEATURE? @VMI0016 00485000
BZ MAKEPRVT NO, JUST MAKE TABLES PRIVATE @V60BC11 00486000
TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00487000
BO MAKEPRVT YES, ONLY SINGLE SET @V60BC11 00488000
BAL R14,FRETSHR YES, RETURN OTHER PAGTABLE @V60BC11 00489000
MAKEPRVT DS 0H @V60BC11 00490000
L R2,SHRSEGCT LOAD SHARED SEGMENT COUNT @V60BC11 00491000
BCTR R2,0 DECREMENT FOR INDEXING @V60BC11 00492000
LASTLOOP DS 0H @V60BC11 00493000
SLR R8,R8 ZIP REG @V60BC11 00494000
IC R8,SHRSEGNM(R2) INSERT SEGMENT NUMBER @V60BC11 00495000
SLL R8,2 TIMES 4 FOR INDEXING @V60BC11 00496000
AL R8,VMSEG LOAD ADDR SEGTABLE ENTRY @V60BC11 00497000
L R6,SEGPAGE LOAD ADDR PTO @V60BC11 00498000
N R6,CLCNTINV CLEAR UNWANTED BITS @V60BC11 00499000
S R6,F16 BACKUP TO HEADER @V60BC11 00500000
LA R5,PAGTSWP(,R6) LOAD ADDR SWPTABLE HEADER @V60BC11 00501000
L R15,SWPVM-SWPTABLE(,R5) SAVE OLD OWNER @V60BC11 00502000
ST R11,SWPVM-SWPTABLE(,R5) REASSIGN SLOT OWNER @V60BC11 00503000
NI SWPFLAG2-SWPTABLE(R5),X'FF'-SWPAPP SET FOR MAIN @V60BC11 00504000
LA R5,SWPFLAG-SWPTABLE(,R5) LOAD ADDR 1ST SWAP @V60BC11 00505000
* TABLE ENTRY @V60BC11 00506000
SLR R0,R0 ZIP REG @V60BC11 00507000
ST R0,PAGSHR-PAGTABLE(,R6) ZERO POINTER TO SHRTABLE@V60BC11 00508000
USING SWPFLAG,R5 @V60BC11 00509000
A R6,F16 RESET TO PTO @V60BC11 00510000
L R3,SEGPAGE LOAD STE @V60BC11 00511000
SRL R3,28 SHIFT FOR NUMBER OF PTES @V60BC11 00512000
LA R3,1(R3) PLUS ONE FOR LOOP CONTROL @V60BC11 00513000
LSTCKPTE DS 0H @V60BC11 00514000
LH R1,PAGCORE USE CORTABLE ENTRY FOR TEST @VA13426 00515000
N R1,REFMASK FORCE OFF REFERENCE BIT @VA13426 00515300
CH R1,INVLPTE FRAME BEEN ASSIGNED @VA13426 00515600
BE LSTNXPTE NO, SKIP TO NEXT PTE @V60BC11 00516000
LH R7,PAGCORE LOAD CORTABLE INDEX @V60BC11 00517000
N R7,RESMASK CLEAR UNWANTED BITS @V60BC11 00518000
A R7,ACORETBL LOAD ADDR CORTABLE ENTRY @V60BC11 00519000
TM PAGCORE+1,PAGINVAL CHANGED PAGE @V60BC11 00520000
BZ RSTSHARE NO, JUST RESET FROM SHARE @V60BC11 00521000
TM CORFLAG,CORFREE+CORFLUSH FREE/FLUSH LIST PAGE @V60BC11 00522000
BNZ LSTNXPTE YES, CHECK NEXT PTE @V60BC11 00523000
RSTSHARE DS 0H @V60BC11 00524000
NI CORFLAG,X'FF'-CORSHARE RESET SHARED FRAME BIT @V60BC11 00525000
L R14,=A(DMKPTRSC) LOAD ADDR OF SHARED FRAME CTR @V60BC11 00526000
L R1,0(R14) LOAD SHARED FRAME COUNT @V60BC11 00527000
BCTR R1,0 DECREMENT COUNT @V60BC11 00528000
ST R1,0(R14) STORE UPDATED COUNT @V60BC11 00529000
TM CORFLAG,CORCFLCK FRAME LOCKED ?? @V60BC11 00530000
BO RSTSHAR1 YES, SKIP UPDATE OF FRAME COUNT @V60BC11 00531000
L R14,CORVM ADDR OWNER'S VMBLOK @V60BC11 00532000
LH R1,VMPAGES-VMBLOK(,R14) LOAD OWNER'S FRAME COUNT@V60BC11 00533000
BCTR R1,0 DECREMENT FOR THIS FRAME @V60BC11 00534000
LTR R1,R1 WILL COUNT GO NEGATIVE ? @V60BC11 00535000
BM ERROR6 YES - ABEND @V60BC11 00536000
STH R1,VMPAGES-VMBLOK(,R14) STORE UPDATED COUNTER @V60BC11 00537000
RSTSHAR1 DS 0H @V60BC11 00538000
LH R1,VMPAGES LOAD USER'S FRAME COUNT @V60BC11 00539000
LA R1,1(R1) INCREMENT FOR THIS FRAME @V60BC11 00540000
STH R1,VMPAGES STORE UPDATED COUTNER @V60BC11 00541000
ST R11,CORVM UPDATE FRAME OWNERSHIP @V60BC11 00542000
LSTNXPTE DS 0H @V60BC11 00543000
TM SWPFLAG,SWPRECMP BACKING STORE ALLOCATED? @V60BC11 00544000
BO NOTALLO NO, SKIP UPDATING COUNTERS @V60BC11 00545000
SR R1,R1 CLEAR @V60BC11 00546000
IC R1,SWPCODE GET VOLUME INDEX CODE @V60BC11 00547000
SLL R1,3 CALCULATE OWNED ENTRY DISP @V60BC11 00548000
AL R1,=A(DMKSYSOW) OWNED LIST ENTRY @V60BC11 00549000
LH R1,OWNDRDEV-OWNDLIST(,R1) RDEVBLOK INDEX @V60BC11 00550000
SLL R1,3 RDEVBLOK DISPLACEMENT @V60BC11 00551000
AL R1,ARIODV RDEVBLOK POINTER @V60BC11 00552000
LA R14,VMPDRUM-VMBLOK ASSUME DRUM ALLOCATION @V60BC11 00553000
USING RDEVBLOK,R1 @V60BC11 00554000
CLI RDEVTYPE,TYP2305 IS IT A DRUM? @V60BC11 00555000
BE *+8 YES @V60BC11 00556000
DROP R1 @V60BC11 00557000
LA R14,VMPDISK-VMBLOK NO, RESET TO DISK COUNTER @V60BC11 00558000
LH R1,0(R14,R15) GET OLD OWNERS COUNT @V60BC11 00559000
BCTR R1,0 DECREMENT COUNT BY ONE @V60BC11 00560000
STH R1,0(R14,R15) STORE UPDATED COUNTER @V60BC11 00561000
LH R1,0(R14,R11) GET NEW OWNERS COUNT @V60BC11 00562000
LA R1,1(,R1) INCREMENT COUNT BY ONE @V60BC11 00563000
STH R1,0(R14,R11) STORE UPDATED COUNTER @V60BC11 00564000
NOTALLO DS 0H @V60BC11 00565000
LA R6,PAGCORE+2 BUMP TO NEXT PTE @V60BC11 00566000
NI SWPFLAG,X'FF'-SWPSHR RESET SHARED BIT @V60BC11 00567000
LA R5,8(R5) BUMP TO NEXT SWPTABLE ENTRY @V60BC11 00568000
BCT R3,LSTCKPTE IF MORE ENTRIES PROCESS THEM @V60BC11 00569000
S R2,F1 DECREMENT SEGMENT COUNT @V60BC11 00570000
BNM LASTLOOP MORE SEGMENT TO PROCESS @V60BC11 00571000
LH R0,SHRTSIZE LOAD NUMBER DOUBLEWORDS @V60BC11 00572000
LR R1,R10 LOAD ADDR SHARED SHRTABLE @V60BC11 00573000
CALL DMKFRET RETURN SHARED SEGMENT SHRTABLE @V60BC11 00574000
NI SAVEWRK1,X'FF'-INVLSEG RESET INVALID SEGMENT BIT@V60BC11 00575000
B UNSHEXIT EXIT @V60BC11 00576000
DROP R5 @V60BC11 00577000
USING SWPTABLE,R5 @V60BC11 00578000
EJECT @V60BC11 00579000
* 00580000
* THIS SUBROUTINE WILL OBTAIN A SINGLE SET OF PAGE AND SWAP TABLES 00581000
* FROM FREE STORAGE. INITIALIZE THEIR HEADERS, FLAG ALL PTES 00582000
* AS INVALID AND TURN ON THE SWPCHG1 AND SWPRECMP BITS 00583000
* IN EACH SWPTABLE ENTRY. IT WILL ALSO UPDATE THE USERS SEGMENT 00584000
* TABLE ENTRY TO POINT TO THIS NEW PAGE TABLE ORIGIN. THIS ROUTINE 00585000
* WILL ALSO SEARCH THE OLD PAGE TABLE(S) FOR ALL FRAMES 00586000
* ASSIGNED TO THIS USER, AND REASSIGN THEM TO ASYSVM. 00587000
* 00588000
BLPAGSWP DS 0H BUILD PAGE + SWAP TABLES @V60BC11 00589000
ST R14,SAVEWRK9 SAVE THE RETURN ADDRESS @V60BC11 00590000
LA R0,FULLPAGE LOAD NUMBER DOUBLEWORDS @V60BC11 00591000
L R15,=A(DMKSYSAP) -> DMKSYS AP setting HRC066DK 00591100
CLI 0(R15),C'Y' Is AP enabled? HRC066DK 00591200
BNE *+6 No HRC066DK 00591300
AR R0,R0 Double table size for APHRC066DK 00591400
CALL DMKFREE OBTAIN NEW PAGE + SWAP TABLES @V60BC11 00592000
XC 0(FULLPAGE*8,R1),0(R1) ZERO THE TABLES @V60BC11 00593000
LR R5,R1 SAVE ADDR IN REG @V60BC11 00594000
DROP R6 @V60BC11 00595000
USING PAGTABLE,R1 @V60BC11 00596000
STCK PAGSTMP TIMESTAMP NEW PAGTABLE @V60BC11 00597000
BC 12,CLOCKOK IS CLOCK FUNCTIONING @V60BC11 00598000
DOWNWEGO DS 0H CLOCK DAMAGED ABEND CVT001 @V60BC11 00599000
GOTO DMKCVTAB @V60BC11 00600000
CLOCKOK DS 0H @V60BC11 00601000
LA R0,1 @V60BC11 00602000
ST R0,PAGACT SET PAGACT = 0 PAGTOT = 1 @V60BC11 00603000
LA R14,PAGTSWP+8(,R1) LOAD ADDR 1ST SWPTABLE ENTRY @V60BC11 00604000
ST R14,PAGSWP STORE PTR SWPTABLE IN PAGTABLE @V60BC11 00605000
SL R14,F8 BACKUP TO SWPTABLE HEADER @V60BC11 00606000
DROP R5 @V60BC11 00607000
USING SWPTABLE,R14 @V60BC11 00608000
ST R11,SWPVM STORE PTR VMBLOK IN SWPTABLE @V60BC11 00609000
L R0,SEGPAGE LOAD STE @V60BC11 00610000
SRL R0,28 SHIFT FOR NUMBER PTE'S @V60BC11 00611000
A R0,F1 PLUS ONE FOR LOOP CONTROL @V60BC11 00612000
A R1,F16 LOAD ADDR PTO @V60BC11 00613000
STCM R1,B'0111',SEGPAGE+1 UPDATE SEGTABLE ENTRY @V60BC11 00614000
OI SEGPAGE+3,SEGINV MARK ENTRY AS INVALID @V60BC11 00615000
ST R1,SWPPAG STORE PTR PTO IN SWPTABLE @V60BC11 00616000
LA R14,SWPFLAG LOAD ADDR 1ST SWPTABLE ENTRY @V60BC11 00617000
LA R6,PAGTSWP(,R6) LOAD ADDR SHARED SWPTABLE HEADER@V60BC11 00618000
LA R6,SWPFLAG-SWPTABLE(,R6) LOAD ADDR 1ST @V60BC11 00619000
* SWPTABLE ENTRY @V60BC11 00620000
SLR R15,R15 ZIP REG FOR PAGE NUMBER COUNTER @V60BC11 00621000
DROP R1,R14 @V60BC11 00622000
USING PAGCORE,R1 @V60BC11 00623000
USING SWPFLAG,R14 @V60BC11 00624000
STM R2,R5,TEMPR2 SAVE REGISTERS FOR MAINLINE @V60BC11 00625000
L R2,SAVEWRK2 GET ADDR OF OLD PAGTABLE @V60BC11 00626000
AL R2,F16 BUMP TO PTO @V60BC11 00627000
NXTENTRY DS 0H @V60BC11 00628000
MVC PAGCORE,INVLPTE INVALIDATE PTE @V60BC11 00629000
TM PAGCORE+1-PAGCORE(R2),PAGINVAL OLD PTE VALID @V60BC11 00630000
BO NXTENT1 NO, CONTINUE CHECKING @V60BC11 00631000
BAL R5,CKOLDPTE YES, CHECK FRAME STATUS @V60BC11 00632000
NXTENT1 TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V60BC11 00633000
BZ NXTENT5 NO, CONTINUE BUILDING @V60BC11 00634000
TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00635000
BO NXTENT5 YES, ONLY SINGLE SET @V60BC11 00636000
LR R4,R2 SAVE CURRENT OLD PTE ADDR @V60BC11 00637000
TM APSTAT1,PROCIPL RUNNING ON THE MAIN (IPL) PROC? @V60B7AA 00638100
BZ NXTENT2 NO, GET MAIN PAGTABLE @V60BC11 00639000
AL R2,SWLENGTH GET ADDR ATTACHED PTE @V60BC11 00640000
B NXTENT3 CONTINUE CHECKING @V60BC11 00641000
NXTENT2 SL R2,SWLENGTH GET ADDR MAIN PTE @V60BC11 00642000
NXTENT3 TM PAGCORE+1-PAGCORE(R2),PAGINVAL PTE VALID @V60BC11 00643000
BO NXTENT4 NO, RESET POINTER @V60BC11 00644000
BAL R5,CKOLDPTE CHECK ON THIS FRAMES STATUS @V60BC11 00645000
NXTENT4 LR R2,R4 RESTORE ADDR OLD PTE @V60BC11 00646000
NXTENT5 DS 0H @V60BC11 00647000
STC R15,SWPFLAG+1 STORE PAGE NUMBER IN ENTRY @V60BC11 00648000
OI SWPFLAG,SWPALLOC+SWPCHG1+SWPRECMP FLAG NEW @VMI0064 00649000
* SWAP TABLE ENTRY @V60BC11 00650000
MVC SWPKEY1(4),SWPKEY1-SWPFLAG(R6) COPY KEYS @V60BC11 00651000
LA R1,PAGCORE+2 BUMP TO NEXT NEW PTE @V60BC11 00652000
LA R6,8(,R6) BUMP TO NEXT OLD SWPTABLE ENTRY @V60BC11 00653000
LA R14,8(,R14) BUMP TO NEXT NEW SWPTABLE ENTRY @V60BC11 00654000
LA R15,1(,R15) INCREMENT PAGE NUMBER @V60BC11 00655000
LA R2,2(,R2) BUMP TO NEXT OLD PTE @V60BC11 00656000
BCT R0,NXTENTRY IF MORE ENTRIES, PROCESS THEM @V60BC11 00657000
* INCREMENT TTSEGCNT 00658000
LA R2,1 INCREMENT VALUE @VMI0051 00659000
L R3,PREFIXA ADDRESS OF PSA @VMI0051 00660000
AL R2,TTSEGCNT-PSA(,R3) COUNT OF TOTAL PG/SWAP @VMI0051 00661000
* TABLES IN SYSTEM +1 00662000
ST R2,TTSEGCNT-PSA(,R3) SAVE UPDATED COUNT @VMI0051 00663000
LM R2,R5,TEMPR2 RESTORE MAINLINE REGISTERS @V60BC11 00664000
L R14,SAVEWRK9 RESTORE RETURN ADDRESS @V60BC11 00665000
BR R14 RETURN TO CALLER @V60BC11 00666000
DROP R1,R14 @V60BC11 00667000
USING PAGCORE,R6 @V60BC11 00668000
USING SWPTABLE,R5 @V60BC11 00669000
SPACE 2 @V60BC11 00670000
CKOLDPTE DS 0H @V60BC11 00671000
LH R3,PAGCORE-PAGCORE(,R2) GET CORTABLE INDEX @V60BC11 00672000
N R3,RESMASK CLEAR UNWANTED BITS @V60BC11 00673000
AL R3,ACORETBL GET ADDR OF CORTABLE ENTRY @V60BC11 00674000
CL R11,CORVM-CORTABLE(,R3) IS USER FRAME OWNER @V60BC11 00675000
BNE CKOLDEXT NO, RETURN TO CALLER @V60BC11 00676000
MVC CORVM-CORTABLE(4,R3),ASYSVM REASSIGN FRAME @V60BC11 00677000
TM CORFLAG-CORTABLE(R3),CORCFLCK FRAME LOCKED ?? @V60BC11 00678000
BO CKOLDPT1 YES, SKIP UPDATE OF FRAME COUNT @V60BC11 00679000
LH R3,VMPAGES GET USER'S FRAME COUNT @V60BC11 00680000
BCTR R3,0 DECREMENT USER'S FRAME COUNTER @V60BC11 00681000
LTR R3,R3 COUNT GONE NEGATIVE @V60BC11 00682000
BM ERROR6 YES, ABEND THE SYSTEM @V60BC11 00683000
STH R3,VMPAGES NO, STORE UPDATED COUNTER @V60BC11 00684000
CKOLDPT1 DS 0H @V60BC11 00685000
ST R11,TEMPR11 SAVE CURRENT USER @V60BC11 00686000
L R11,ASYSVM GET ADDR OF SYSTEM VMBLOK @V60BC11 00687000
LH R3,VMPAGES GET SYSTEM'S FRAME COUNTER @V60BC11 00688000
AL R3,F1 INCREMENT IT @V60BC11 00689000
STH R3,VMPAGES STORE UPDATED COUNTER @V60BC11 00690000
L R11,TEMPR11 RESTORE ADDR OF CURRENT USER @V60BC11 00691000
CKOLDEXT DS 0H @V60BC11 00692000
BR R5 RETURN TO CALLER @V60BC11 00693000
EJECT @V60BC11 00694000
* 00695000
* THIS SUBROUTINE IS CALLED TO ACTUALLY PERFORM THE RELEASE OF 00696000
* ALL BACKING STORAGE SLOTS, REAL FRAMES AND THE FREE STORAGE 00697000
* ASSOCIATED WITH A SHARED PAGE AND SWAP TABLE SET. 00698000
* 00699000
FRETSHR DS 0H RETURN A SHARED PAGE + SWPTABLE @V60BC11 00700000
ST R14,SAVEWRK9 SAVE THE RETURN ADDRESS @V60BC11 00701000
L R4,SHRSEGCT LOAD NUMBER OF SHARED SEGEMENTS @V60BC11 00702000
SLR R8,R8 ZIP REG FOR INDEXING @V60BC11 00703000
LR R3,R4 COUNT TO R3 @V60BC11 00704000
LA R3,3(,R3) BUMP TO FULLWORD @V60BC11 00705000
SRL R3,2 ADDRESS @V60BC11 00706000
SLL R3,2 ... @V60BC11 00707000
LA R3,SHRPAGE-4(R3) LOAD ADDR1ST SHRPAGE ENTRY @V60BC11 00708000
USING SHRPAGE,R3 @V60BC11 00709000
FSHRLOOP DS 0H @V60BC11 00710000
L R6,SHRPAGE(R8) LOAD ADDR PTO @V60BC11 00711000
LR R0,R6 STE TO REG 0 @V60BC11 00712000
LA R6,0(,R6) CLEAR PTE COUNTER @V60BC11 00713000
SRL R0,28 SHIFT TO OBTAIN NUMBER PTES @V60BC11 00714000
A R0,F1 PLUS 1 FOR LOOP CONTROL @V60BC11 00715000
A R6,SAVEWRK4 ADJUST TO PROPER SET @V60BC11 00716000
FSHRCFLP DS 0H @V60BC11 00717000
LR R5,R6 PTO ADDR TO R5 @V60BC11 00718000
S R5,F16 BACKUP TO PAGTABLE HEADER @V60BC11 00719000
ST R5,SAVEWRK5 SAVE ADDR OF PAGTABLE HEADER @V60BC11 00720000
LA R5,PAGTSWP(,R5) LOAD ADDRESS OF SWPTABLE @V60BC11 00721000
LA R5,SWPFLAG-SWPTABLE(,R5) LOAD ADDR 1ST SWPTABLE @V60BC11 00722000
* ENTRY @V60BC11 00723000
FSHPTELP DS 0H @V60BC11 00724000
USING SWPFLAG,R5 @V60BC11 00725000
TM SWPFLAG,SWPRECMP SLOT ASSIGNED @V60BC11 00726000
BO FCKINV NO, CHECK VALIDITY OF PTE @V60BC11 00727000
ST R11,SAVEWRK2 SAVE ADDR USER'S VMBLOK @V60BC11 00728000
L R1,SAVEWRK5 LOAD ADDR SWPTABLE HEADER @V60BC11 00729000
LA R1,PAGTSWP(,R1) LOAD ADDR OF SWPTABLE @V60BC11 00730000
L R11,SWPVM-SWPTABLE(,R1) LOAD VMBLOK ADDR OF OWNR@V60BC11 00731000
CALL DMKPGTPR RELEASE THE SLOT @V60BC11 00732000
L R11,SAVEWRK2 RESTORE PTR USER'S VMBLOK @V60BC11 00733000
FCKINV DS 0H @V60BC11 00734000
LH R7,PAGCORE LOAD CORTABLE INDEX @V60BC11 00735000
N R7,RESMASK CLEAR UNWANTED BITS @V60BC11 00736000
LTR R7,R7 FRAME BEEN ASSIGNED @V60BC11 00737000
BZ FUPDTCNT NO, UPDATE COUNTERS @V60BC11 00738000
A R7,ACORETBL LOAD ADDR CORTABLE ENTRY @V60BC11 00739000
TM CORFLAG,CORFREE IS THIS A FREELIST PAGE @V60BC11 00740000
BZ FCKFLUSH NO, CHECK FOR FLUSHLIST @V60BC11 00741000
SLR R15,R15 YES, ZIP REG @V60BC11 00742000
ST R15,CORPGPNT ZERO PAGTABLE POINTER @V60BC11 00743000
STCM R15,B'0111',CORSWPNT+1 ZERO SWPTABLE POINTER @V60BC11 00744000
B FUPDTCNT GO PROCESS NEXT PTE @V60BC11 00745000
FCKFLUSH DS 0H @V60BC11 00746000
TM CORFLAG,CORFLUSH IS THIS A FLUSHLIST PAGE @V60BC11 00747000
BZ FCKRSV NO, CHECK FOR LOCKED PAGE @V60BC11 00748000
L R14,=A(DMKPTRUC) FLUSHED PAGE COUNT @V60BC11 00749000
L R15,0(R14) LOAD COUNT @V60BC11 00750000
S R15,F1 MINUS ONE @V60BC11 00751000
BM ERROR7 CANNOT BE NEGATIVE @V60BC11 00752000
ST R15,0(R14) STORE NEW COUNT @V60BC11 00753000
LM R14,R15,CORFPNT YES, DEQUEUE THE ELEMENT @V60BC11 00754000
ST R14,CORFPNT-CORTABLE(,R15) FROM THE @V60BC11 00755000
ST R15,CORBPNT-CORTABLE(,R14) FLUSH LIST @V60BC11 00756000
B FPTRFT PUT FRAME ON FREELIST @V60BC11 00757000
FCKRSV DS 0H @V60BC11 00758000
TM CORFLAG,CORRSV FRAME RESERVED @V60BC11 00759000
BZ FUPTRSC NO, UPDATE SHARED COUNTER @V60BC11 00760000
L R14,=A(DMKPTRRC) LOAD ADDR RESERVED COUNTER @V60BC11 00761000
L R15,0(,R14) LOAD RESERVED COUNT @V60BC11 00762000
BCTR R15,0 DECREMENT COUNT @V60BC11 00763000
ST R15,0(R14) STORE UPDATED COUNTER @V60BC11 00764000
FUDSPNP DS 0H @V60BC11 00765000
L R14,=A(DMKDSPNP) LOAD ADDR AVAILABLE COUNTER @V60BC11 00766000
LA R15,1 LOAD INCREMENT VALUE @V60BC11 00767000
A R15,0(R14) INCREMENT COUNTER @V60BC11 00768000
ST R15,0(R14) STORE UPDATED COUNTER @V60BC11 00769000
FUPTRSC DS 0H @V60BC11 00770000
L R14,=A(DMKPTRSC) LOAD ADDR SHARED FRAME COUNT @V60BC11 00771000
L R15,0(R14) LOAD SHARED FRAME COUNT @V60BC11 00772000
BCTR R15,0 DECREMENT COUNT @V60BC11 00773000
ST R15,0(,R14) STORE UPDATED COUNT @V60BC11 00774000
FPTRFT DS 0H @V60BC11 00775000
SLR R15,R15 ZIP REG @V60BC11 00776000
ST R15,CORPGPNT ZERO PTO POINTER @V60BC11 00777000
STCM R15,B'0111',CORSWPNT+1 ZERO SWPTABLE POINTER @V60BC11 00778000
TM CORFLAG,CORIOLCK FRAME I/O LOCKED @V60BC11 00779000
BO ERROR5 YES, ABEND @V60BC11 00780000
CALL DMKPTRFT RELEASE THE FRAME @V60BC11 00781000
FUPDTCNT DS 0H @V60BC11 00782000
LA R6,PAGCORE+2 BUMP TO NEXT PTE @V60BC11 00783000
LA R5,8(,R5) BUMP TO NEXT SWPTABLE ENTRY @V60BC11 00784000
BCT R0,FSHPTELP IF MORE PTES, PROCESS THEM @V60BC11 00785000
LA R0,FULLPAGE LOAD NUMBER OF DOUBLEWORDS @V60BC11 00786000
* FOR PAGE AND SWAP TABLES @V60BC11 00787000
L R15,=A(DMKSYSAP) -> DMKSYS AP setting HRC066DK 00787100
CLI 0(R15),C'Y' Is AP enabled? HRC066DK 00787200
BNE *+6 No HRC066DK 00787300
AR R0,R0 Double table size for APHRC066DK 00787400
L R1,SAVEWRK5 LOAD ADDRESS OF PAGTABLE @V60BC11 00788000
N R1,CLCNTINV CLEAR UNWANTED BITS @V60BC11 00789000
CALL DMKFRET RETURN PAGE + SWAP TABLES @V60BC11 00790000
L R15,PREFIXA PREFIX VALUE TO ADDRESS PSA @VA13356 00790100
* AT ABSOLUTE 0 00790200
L R0,TTSEGCNT-PSA(,R15) NUM OF PG/SWP TBLS IN SYS @VA13356 00790300
BCTR R0,R0 DECREMENT PAG/SWP TABLE COUNT @VA13356 00790400
ST R0,TTSEGCNT-PSA(,R15) STORE IT BACK IN THE PSA @VA13356 00790500
FSHRBMP DS 0H @V60BC11 00791000
LA R8,L'SHRPAGE(,R8) BUMP SHRPAGE INDEX @V60BC11 00792000
BCT R4,FSHRLOOP IF MORE SEGMENT, PROCESS THEM @V60BC11 00793000
L R14,SAVEWRK9 RESTORE RETURN ADDRESS @V60BC11 00794000
BR R14 RETURN TO CALLER @V60BC11 00795000
DROP R3,R5 @V60BC11 00796000
USING SWPTABLE,R5 @V60BC11 00797000
EJECT 00798000
* 00799000
* THIS SUBROUTINE CONVERTS THE REAL ADDRESS OF A SHARED PAGE 00800000
* AND OBTAINS THE ADDRESS OF THE SHRTABLE ASSOCIATED WITH THE 00801000
* PAGE AND THE ADDRESS OF THE USERS VMABLOK ASSOCIATED WITH 00802000
* THIS SHRTABLE. 00803000
* 00804000
GETSHRNM LR R7,R2 ADDRESS OF REAL PAGE @V60BC11 00805000
N R7,XPAGNUM DROP DISPLACEMENT @V60BC11 00806000
SRL R7,8 INDEX INTO CORTABLE @V60BC11 00807000
AL R7,ACORETBL R7= ADDRESS OF CORTABLE ENTRY @V60BC11 00808000
L R5,CORSWPNT GET ADDRESS OF SWPTABLE @V60BC11 00809000
L R6,CORPGPNT GET ADDRESS OF PAGTABLE ENTRY @V60BC11 00810000
SLR R15,R15 CLEAR PAGE NUMBER @V60BC11 00811000
USING SWPFLAG,R5 TEMPORARY @V60BC11 00812000
IC R15,SWPVPAGE GET VIRTUAL PAGE NUMBER @V60BC11 00813000
USING SWPTABLE,R5 @V60BC11 00814000
SLL R15,1 DBL. FOR 2 BYTE PG TABLE ENTRIES @V60BC11 00815000
SLR R6,R15 R6= BEGINING OF PAGTABLE @V60BC11 00816000
SL R6,F16 BACK-UP TO PAGTABLE HEADER @V60BC11 00817000
USING PAGTABLE,R6 @V60BC11 00818000
L R10,PAGSHR GET POINTER TO SHRTABLE @V60BC11 00819000
LTR R10,R10 THERE BE BE ONE @V60BC11 00820000
BNP ERROR1 ERROR IF NO SHRTABLE @V60BC11 00821000
ST R10,SAVEWRK4 SAVE SHRTABLE POINTER @V60BC11 00822000
TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00823000
BO FNDVMABK YES, NO VMABLOK TO FIND @V60BC11 00824000
LA R9,VMASSIST LOAD ADDR VMABLOK ANCHOR @V60BC11 00825000
STCM R9,B'0111',SAVEWRK1+1 SAVE AS PREV VMABLOK PTR @V60BC11 00826000
L R9,VMASSIST GET POINTER TO VMABLOK @V60BC11 00827000
LTR R9,R9 BETTER FIND A VMABLOK @V60BC11 00828000
BNP ERROR2 CRASH IF NOT FOUND @V60BC11 00829000
GETVMABK CLC VMANAME,SHRNAME DO NAMES MATCH ? @V60BC11 00830000
BE FNDVMABK YES - @V60BC11 00831000
STCM R9,B'0111',SAVEWRK1+1 SAVE PTR PREV VMABLOK @V60BC11 00832000
L R9,VMAFPNT GET ADDRESS OF NEXT VMABLOK @V60BC11 00833000
LTR R9,R9 THERE MUST BE A VMABLOK @V60BC11 00834000
BNP ERROR2 ERROR IF NOT FOUND @V60BC11 00835000
B GETVMABK CHECK ALL VMABLOKS @V60BC11 00836000
FNDVMABK BR R3 RETURN TO CALLER @V60BC11 00837000
EJECT 00838000
SPACE 2 00839000
ERROR1 ABEND 1 SHRTABLE NOT FOUND @V60BC11 00840000
ERROR2 ABEND 2 VMABLOK NOT FOUND BY GETSHRNM RTN@V60BC11 00841000
ERROR3 ABEND 3 SYSTEM NAME NOT FOUND IN DMKSNTBL@V60BC11 00842000
* DURING UNSHARE PROCESSING @V60BC11 00843000
ERROR4 ABEND 4 SYSVOL COULD NOT BE FOUND DURING @V60BC11 00844000
* UNSHARE PROCESSING @V60BC11 00845000
ERROR5 ABEND 5 SHARED FRAME LOCKED FOR I/O @V60BC11 00846000
* DURING UNSHARE PROCESSING @V60BC11 00847000
ERROR6 ABEND 6 VMPAGES TO GO NEGATIVE @V60BC11 00848000
SPACE 1 00849000
ERROR7 ABEND 7 FLUSHED PAGE COUNT IS NEGATIVE @V60BC11 00850000
EJECT 00851000
RESMASK DC A(X'FFF0') MASK FOR PAGE RESIDENT @V60BC11 00852000
* 00853000
CLCNTINV DC X'00FFFFFC' CLEAR COUNT, INVALID & @V60BC11 00854000
* MIGRATED BIT MASK @V60BC11 00855000
CLRSEGNM DC X'0000FF00' CLEAR ALL BUT PAGE NUMBER @V60BC11 00856000
BUMPLOW DC X'00010000' INCREMENT/DECREMENT FOR PAGACT @V60BC11 00857000
ACTTOT DC X'00010001' MASK FOR INCREMENTING OR @V60BC11 00858000
* DECREMENT PAGACT AND PAGTOT @V60BC11 00859000
REFMASK DC X'0000FFFE' MASK TO FORCE REFERENCE BIT OFF @VA13426 00860000
INVLPTE DC X'0008' INVALID PTE BIT MASK @VA13426 00860500
SWLENGTH DC F'192' LENGTH OF SHARED PAGE & @V60BC11 00861000
* SWAP TABLES @V60BC11 00862000
FORCEPG0 DC X'00FF0000' MASK FOR SEGMENT & PAGE 0 @V60BC11 00863000
FORCEPGF DC X'0000F000' MASK FOR PAGE 'F' OF SEGMENT @V60BC11 00864000
* 00865000
HEX00 EQU X'00' VALUE OF X'00' @V60BC11 00866000
HEXFF EQU X'FF' VALUE OF X'FF' @V60BC11 00867000
* 00868000
EMSG181 EQU 181 ERROR MESSAGE NUMBER 181 @V60BC11 00869000
* 00870000
YES EQU C'Y' SYSTEM GENERATED FOR AP @VMI0016 00871000
SPACE 1 00872000
* BITS DEFINED FOR SAVEWRK1 FLAG BYTE @V60BC11 00873000
* 00874000
INVLSEG EQU X'80' STE ENTRY WAS ORIGINALLY INVALID @V60BC11 00875000
PTOBTAIN EQU X'40' PAGE & SWAP TABLES OBTAINED @V60BC11 00876000
* 00877000
FULLPAGE EQU X'C0'/8 NUMBER OF DOUBLEWORDS IN 16 ENTRY@V60BC11 00878000
* PAGE AND SWAP TABLE SET @V60BC11 00879000
PAGE2314 EQU 32 NUMBER OF PAGES PER CYLINDER @V60BC11 00880000
* (2314/2319) @V60BC11 00881000
PAGE3330 EQU 57 NUMBER OF PAGE PER CYLINDER @V60BC11 00882000
* (3330) @V60BC11 00883000
PAGE3350 EQU 120 NUMBER OF PAGES PER CYLINDER @V60BC11 00884000
* (3350) @V60BC11 00885000
PAGE3375 EQU 96 Number of pages per cylinder HRC106DK 00885100
* (3375) HRC106DK 00885200
PAGE3380 EQU 150 Number of pages per cylinder HRC106DK 00885300
* (3380) HRC106DK 00885400
PAGE2305 EQU 24 NUMBER OF PAGES PER CYLINDER @V60BC11 00886000
* (2305/3340) @V60BC11 00887000
SPACE 3 00888000
LTORG * @V60BC11 00889000
SPACE 3 00890000
EMSGBLOK DSECT @V60BC11 00891000
* DSECT FOR ERROR MESSAGE PARMS 00892000
EMSGAREA DS 0CL16 MESSAGE AREA @V60BC11 00893000
EMSGNAME DS CL8 AREA FOR NAME OF SHARED SYSTEM @V60BC11 00894000
DS 2X FILLER @V60BC11 00895000
EMSGADD1 DS CL2 FIRST PART OF ADDRESS @V60BC11 00896000
EMSGADD2 DS CL4 LAST PART OF ADDRESS @V60BC11 00897000
EMSGLEN EQU *-EMSGBLOK LENGTH OF BLOK IN BYTES @V60BC11 00898000
EMSGSIZE EQU (*-EMSGBLOK)/8 SIZE OF EMSGBLOK IN DW'S @V60BC11 00899000
SPACE 2 00900000
COPY EQU @V60BC11 00901000
COPY SAVE @V60BC11 00902000
COPY VMBLOK @V60BC11 00903000
COPY RBLOKS @V60BC11 00904000
COPY DEVTYPES @V60BC11 00905000
COPY ALLOC @V60BC11 00906000
COPY CORE @V60BC11 00907000
COPY SHRTABLE @V60BC11 00908000
COPY SYSTBL @V60BC11 00909000
PSA @V60BC11 00910000
END 00911000