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