ibm:vm370-lib:cp:dmkpgs.assemble_src
Table of Contents
DMKPGS Source
References
- Fixes Applied : 11
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC013DK]
Source Listing
- DMKPGS.ASSEMBLE.txt
- PGS TITLE 'DMKPGS (CP) VM/370 - RELEASE 6' 00001000
- PUNCH 'SPB' START ON PAGE BOUNDARY @VM03171 00002000
- ISEQ 73,80 VALIDATE INPUT SERIALIZATION @V200820 00003000
- COPY OPTIONS 00004000
- COPY LOCAL OPTIONS 00005000
- EJECT 00006000
- DMKPGS CSECT 00007000
- SPACE 3 00008000
- EXTRN DMKPGTPR,DMKPGTSP @VA04554 00009000
- EXTRN DMKPTRFT 00010000
- EXTRN DMKCVTAB @V408246 00011000
- EXTRN DMKDSPNP 00012000
- EXTRN DMKPTRSC @VA03412 00013000
- EXTRN DMKPTRRC 00014000
- EXTRN DMKSTKCP @VA03145 00015000
- EXTRN DMKPTRUL UNLOCK 'LOCKED' PAGE @V408246 00016000
- EXTRN DMKBLDRT,DMKBLDRL @V304635 00017000
- EXTRN DMKDSPCH @VA03145 00018000
- EXTRN DMKVMASH @V60BC11 00019000
- EXTRN DMKPAGQ,DMKPTRFQ @V408246 00020000
- EXTRN DMKPTRRS @V408246 00021000
- EXTRN DMKSYSOW @VA04554 00022000
- EXTRN DMKDSPRQ @V400141 00023000
- EXTRN DMKPTRPW @VA08037 00023100
- AIF (NOT &VIRREAL).NOVR1 00024000
- EXTRN DMKSLC 00025000
- .NOVR1 ANOP 00026000
- SPACE 3 00027000
- USING PSA,R0 00028000
- USING VMBLOK,R11 00029000
- USING SAVEAREA,R13 00030000
- EJECT 00031000
- *. 00032000
- * MODULE NAME - 00033000
- * 00034000
- * DMKPGS 00035000
- * 00036000
- * FUNCTION - 00037000
- * 00038000
- * 1. TO RELEASE THE PAGES OF A USER'S VIRTUAL STORAGE SPACE 00039000
- * BOTH FROM REAL MAIN STORAGE AND FROM TEMPORARY SLOTS ON 00040000
- * THE DASD PAGE STORAGE AREA. 00041000
- * 2. TO LOCATE A NAMED SYSTEM WHICH RESIDES IN THE USER'S 00042000
- * VIRTUAL STORAGE. 00043000
- * 3. TO RELEASE A NAMED SYSTEM WHICH RESIDES IN THE USER'S 00044000
- * VIRTUAL STORAGE. 00045000
- * 00046000
- * ATTRIBUTES - 00047000
- * 00048000
- * REENTRANT,PAGEABLE, CALLED VIA SVC 00049000
- * 00050000
- * ENTRY POINTS - 00051000
- * 00052000
- * DMKPGSPO - RELEASE THE USER'S ENTIRE VIRTUAL SPACE 00053000
- * DMKPGSPP - RELEASE ONLY A SPECIFIED PART OF THE MEMORY 00054000
- * DMKPGSPR - RELEASE AND UNLOCK SPECIFIED USERS'S STORAGE 00055000
- * DMKPGSPS - RELEASE A NAMED SYSTEM FROM USER'S VIRTUAL STORAGE 00057000
- * DMKPGSSS - RELEASE VIRTUAL STORAGE BUT BYPASS ANY VIRTUAL 00058000
- * STORAGE WHICH CONTAINS A NAMED SYSTEM 00059000
- * 00061000
- * ENTRY CONDITIONS - 00062000
- * 00063000
- * 00066000
- * FOR DMKPGSPO - 00067000
- * GPR2 = PARM NOCLEAR IF STORAGE NOT TO BE RELEASED 00068000
- * GPR11 = ADDRESS OF VMBLOK OF VIRTUAL MEMORY'S OWNER 00069000
- * GPR12 = ADDRESS OF ENTRY POINT 00070000
- * GPR13 = ADDRESS OF SAVEAREA 00071000
- * 00072000
- * FOR DMKPGSPP, DMKPGSSS AND DMKPGSPR 00073000
- * GPR1 = ADDRESS OF 1'ST PAGE TO RELEASE 00074000
- * GPR2 = ADDRESS OF LAST PAGE TO RELEASE 00075000
- * 00076000
- * FOR DMKPGSPS - 00080000
- * GPR 1-2 = NAME OF THE NAMED SYSTEM TO RELEASE 00081000
- * (GPR 1 = 0 MEANS THAT NO SHRTABLE EXISTS) 00082000
- * 00083000
- * EXIT CONDITIONS - 00084000
- * 00085000
- * NONE 00086000
- * 00087000
- * CALLS TO OTHER ROUTINES - 00088000
- * 00089000
- * DMKPTRAN - TO ENQUEUE ON IN-TRANSIT PAGES 00090000
- * DMKPTRFT - TO RETURN PAGES TO THE FREE PAGE LIST 00091000
- * DMKPTRUL UNLOCK A PAGE 00092000
- * DMKVMASH CHECK FOR CHANGED SHARED PAGE 00093000
- * DMKVMAPS UNSHARE A CHANGED SHARED PAGE 00094000
- * DMKPTRRS CORE RESET FUNCTION 00095000
- * DMKPGTPR - TO RELEASE A DASD PAGE SLOT 00096000
- * DMKPGTSP - TO RELEASE A DASD PAGE ASSIGNED TO SYSTEM 00097000
- * DMKFREE - TO GET STORAGE FOR NON-SHARED PAGE AND SWAP TABLES 00098000
- * DMKFRET - TO RELEASE SHARED SYSTEM CONTROL TABLES WHEN USER 00099000
- * COUNT IS ZERO 00100000
- * DMKBLDRT - BUILD NEW SWAP/PAGE AND SEGMENT TABLES 00101000
- * DMKBLDRL - RELEASE OLD SWAP/PAGE AND SEGMENT TABLES 00102000
- * 00103000
- * DMKSTKCP - TO STACK DEFERRED REQUESTS FOR EXECUTION 00104000
- * DMKDSPCH - TO RETURN TO DISPATCHER 00105000
- * EXTERNAL REFERENCES - 00106000
- * 00107000
- * DMKDSPNP - NUMBER OF DYNAMICALLY ASSIGNABLE PAGE FRAMES 00108000
- * DMKPTRRC - NUMBER OF REIDENT, RESERVED PAGES 00109000
- * DMKVMAS1 - ANCHOR FOR SHARED SYSTEMS (SHRTABLE POINTER) 00110000
- * DMKVMAS2 - ANCHOR FOR NAMED SYSTEMS (SHRTABLE POINTER) 00111000
- * DMKPTRSC - NUMBER OF RESIDENT SHARED PAGES @VA03412 00112000
- * 00113000
- * 00114000
- * TABLES / WORKAREAS - 00115000
- * 00116000
- * CORTABLE, SWPTABLE, PAGTABLE, SEGTABLE, SHRTABLE 00117000
- * 00118000
- * REGISTER USAGE - 00119000
- * 00120000
- * GPR0 = SCRATCH 00121000
- * GPR1 = VIRTUAL ADDRESS OF PAGE TO RELEASE 00122000
- * GPR2 = REAL ADDRESS OF PAGE TO RELEASE 00123000
- * GPR3 = SEGMENT ENTRY BASE 00124000
- * GPR4 = PAGE TABLE ENTRY CLEARING REG 00125000
- * GPR5 = SWPTABLE ENTRY BASE 00126000
- * GPR6 = USED TO CLEAR CORSWPNT FIELD IN CORTABLE ENTRY 00127000
- * GPR7 = CORTABLE ENTRY BASE 00128000
- * GPR8 = NUMBER OF PAGES TO RELEASE 00129000
- * GPR9 = PAGTABLE ENTRY BASE 00130000
- * GPR10 - NOT USED 00131000
- * GPR11 = VMBLOK BASE 00132000
- * GPR12 = DMKPGS BASE 00133000
- * GPR13 = SAVEAREA BASE 00134000
- * GPR14 = EXTERNAL LINKAGE 00135000
- * GPR15 = EXTERNAL LINKAGE 00136000
- * 00137000
- * NOTES - 00138000
- * NONE 00139000
- * 00140000
- EJECT 00141000
- * THE NAMED SYSTEM WHICH IS CONTAINED IN GPR 1-2 IS RELEASED 00272000
- * FROM THE USER'S VIRTUAL STORAGE SPACE. RETURN IS THEN MADED 00273000
- * TO THE CALLER WITH CC = 0. 00274000
- * IF THE NAMED SYSTEM DOES NOT RESIDE IN THE USER'S VIRTUAL 00275000
- * STORAGE, RETURN IS MADE TO THE CALLER WITH CC = 1. 00276000
- SPACE 2 00277000
- DC CL8'DMKPGS ' MODULE NAME @VA12777 00277100
- DMKPGSPS RELOC @V304635 00278000
- USING SEGTABLE,R3 @VA11919 00278100
- USING SWPFLAG,R5 @VA11919 00278200
- USING CORTABLE,R7 @VA11919 00278300
- USING PAGCORE,R9 @VA11919 00278400
- USING SHRTABLE,R10 @VA11919 00278500
- XC SAVEWRK1,SAVEWRK1 CLEAR FLAG BYTE @V304635 00279000
- LTR R1,R1 IS SYSTEM NAME 0? @VA05638 00280000
- BZ PURCONT YES, NO SHRTABLE EXISTS @VA05638 00281000
- * BECAUSE PAGING ERROR ABORTED PROCESSING 00282000
- MVI SAVEWRK1,PURGE PURGE NAMED SYSTEM PASSES IN @V304635 00283000
- * R1-R2 00284000
- SLR R1,R1 START LOOKING FOR NAMED SYSTEM @V304635 00285000
- * HERE 00286000
- SLR R2,R2 CLEAR FOR LAST ADDRESS @V304635 00287000
- IC R2,VMSEG GET NUMBER OF SEGMENT TABLES @V304635 00288000
- LA R2,1(,R2) ORIGIN TO BASE OF 1 @V304635 00289000
- SLL R2,20 GET ADDR +1 PAGE OF LAST PAGE @V304635 00290000
- BCTR R2,0 ENDING ADDRESS TO PURGE @V304635 00291000
- B PGOUT1 JOIN COMMON CODE. @V407511 00292000
- PURFINSH TM SAVEWRK1,PURGE PURGING A NAMED SYSTEM ? @V304635 00293000
- BZ PURCONT NO - JUST RELEASING STORAGE @V304635 00294000
- TM SAVEWRK1,SYSFND WAS NAMED SYSTEM FOUND ? @V304635 00295000
- BZ SETCC1 NO - SET CONDITION CODE FOR @V304635 00296000
- * CALLER 00297000
- TM SAVEWRK1,SYSFRET SHOULD WE FRET THE SHRTABLE @V304635 00298000
- BZ PURCONT NO - IN USE BY OTHER USERS @V304635 00299000
- LM R0,R1,SAVEWRK7 GET LENGTH/ADDRESS OF SHRTABLE @V304635 00300000
- CALL DMKFRET NOW FRET IT. @V304635 00301000
- PURCONT L R3,VMSEG GET ADDRESS OF SEGTABLE @V304635 00302000
- LA R3,0(,R3) 24 BIT ADDRESSING @V304635 00303000
- ST R3,SAVEWRK2 SAVE BEGINING ADDRESS OF SEGTABLE@V304635 00304000
- XC SAVEWRK3,SAVEWRK3 CLEAR HIGH SEGTABLE ADDRESS @V304635 00305000
- SLR R4,R4 CLEAR FOR BCT LOOP @V304635 00306000
- IC R4,VMSEG GET NUMBER OF 1 MEG SEGMENTS @V304635 00307000
- LA R4,1(,R4) RAISE TO BASE OF 1 @V304635 00308000
- SLL R4,4 TIMES 16 FOR NUM. SEG ENTRIES @V304635 00309000
- * PER 1 MEG 00310000
- ST R4,SAVEWRK4 SAVE IT. @V304635 00311000
- L R3,SAVEWRK2 GET BEGINING OF SEGTABLE @V304635 00312000
- LR R1,R3 SAVE IT @V304635 00313000
- LR R2,R3 ALSO SAVE IT HERE @V304635 00314000
- L R4,SAVEWRK4 GET NUMBER OF ENTRIES IN TABLE @V304635 00315000
- HICORE DS 0H @V408246 00316000
- CLI SEGPAGE+3,SEGINV UNDEFINED SEGMENT? @V408246 00317000
- BNE B1 NO @V408246 00318000
- ICM R15,B'0110',SEGPAGE+1 VALID PNTR? @V408246 00319000
- BZ INVSEG YES, SKIP IT @V408246 00320000
- B1 EQU * @V408246 00321000
- ST R3,SAVEWRK3 SAVE THE ADDR. OF LAST VALID ONE @V304635 00322000
- INVSEG LA R3,4(,R3) POINT TO NEXT SEGTABLE ENTRY @V304635 00323000
- BCT R4,HICORE PROCESS ALL TABLE ENTRIES @V304635 00324000
- SPACE 1 00325000
- L R3,SAVEWRK3 GET ADDRESS OF HIGHEST VALID SEG.@V304635 00326000
- LR R1,R3 NEEDED FOR CALCULATION @V304635 00327000
- SLR R1,R2 R1 = NUMBER OF SEGMENTS @V304635 00328000
- SLL R1,2 TIMES 16 PAGES FOR EACH SEGMENT @V304635 00329000
- * ENTRY 00330000
- IC R2,0(,R3) GET NUMBER PAGES IN LAST @V304635 00331000
- * SEGMENT ENTRY 00332000
- SRL R2,4 NUMBER PAGES TO LOW ORDER @V304635 00333000
- N R2,F15 CLEAR OUT ALL BUT PAGE NUMBER @V304635 00334000
- OR R1,R2 ADD IT TO R1 FOR CALL TO 'DMKBLD'@V304635 00335000
- L R2,VMSTOR MINIMUM STORE SIZE @V408246 00336000
- SRL R2,12 NO. OF PAGES @V408246 00337000
- BCTR R2,0 NO. OF PAGES (BASE 0) @V408246 00338000
- CR R1,R2 NEW SIZE AT LEAST MINIMUM? @V408246 00339000
- BNL *+6 YES @V408246 00340000
- LR R1,R2 NO, RESET TO MINIMUM @V408246 00341000
- CALL DMKBLDRT,PARM=KEEPSEGS+OLDVMSEG COMPRESS @V304635 00342000
- * SEGTABLE 00343000
- SLL R1,12 ADD IN DISPLACEMENT @V304635 00344000
- AL R1,F4096 PLUS 1 MORE PAGE FOR 'VMSIZE' @V304635 00345000
- ST R1,VMSIZE NEW VIRTUAL MACHINE STORAGE SIZE @V304635 00346000
- B EXIT @V408246 00347000
- SETCC1 MVI SAVEWRK1+1,CC1 SET CC=1 FOR CALLER @V407511 00348000
- B EXIT RETURN TO CALLER @V304635 00349000
- EJECT 00350000
- *. 00351000
- * 00352000
- * C. OPERATION OF DMKPGSPP - 00353000
- * 00354000
- * 1. IF THE USER IS IN PAGE WAIT, STACK A CPEXBLOK AND EXIT. 00355000
- * OTHERWISE, BYPASS SHARED SEGMENT PROCESSING, JOINING 00356000
- * PAGE-CLEAR CODE AT LABEL PGOUT1 BELOW (STEP 7). 00357000
- * 00358000
- * D. OPERATION OF DMKPGSSS - 00359000
- * 00360000
- * 1. RELEASE THE ADDRESS RANGE CONTAINED IN THE CALLERS GPR 1-2 00361000
- * BUT BYPASS ANY NAMED SYSTEMS THAT MAY ALSO RESIDE IN 00362000
- * THE ADDRESS RANGE TO BE RELEASED. 00363000
- * THEN JOIN PAGE-CLEAR CODE AT LABEL (PGOUT1). 00364000
- * 00365000
- * E. OPERATION OF DMKPGSPR - 00366000
- * 00367000
- * 1. CALL DMKPTRPW TO INSURE THE USER IS NOT IN PAGE WAIT. 00368000
- * THEN RELEASE THE ADDRESS RANGE CONTAINED IN REG1 THUR REG2. 00369000
- * ALSO, UNLOCK ANY PAGES THAT MIGHT HAVE BEEN LOCKED. 00370000
- * 00371000
- * 00372000
- *. 00373000
- SPACE 00374000
- DMKPGSPP RELOC 00375000
- XC SAVEWRK1,SAVEWRK1 CLEAR FLAG BYTES @V304635 00376000
- B RELEASE JOIN COMMON CODE @V304635 00377000
- SPACE 2 00378000
- DMKPGSPR RELOC @VA04764 00379000
- XC SAVEWRK1,SAVEWRK1 CLEAR FLAG BYTES @VA04764 00380000
- CALL DMKPTRPW @VA08037 00381100
- OI SAVEWRK1,UNLOCK UNLOCK ANY LOCKED PAGES. @VA04764 00382000
- B RELEASE JOIN WITH COMMON CODE @VA04764 00383000
- SPACE 1 00384000
- DMKPGSSS RELOC @V304635 00385000
- XC SAVEWRK1,SAVEWRK1 CLEAR FLAG BYTES @V304635 00386000
- MVI SAVEWRK1,PARTIAL DON'T RELEASE NAMED SEGS @VA05039 00387000
- SPACE 2 00388000
- RELEASE SLR R3,R3 CLEAR @V304635 00389000
- L R1,SAVER1 RESTORE CALLERS REGISTER @V304635 00390000
- L R2,SAVER2 ALSO THIS ONE... @V304635 00391000
- IC R3,VMSEG GET NUMBER OF SEGMENT TABLES @V304635 00392000
- LA R3,1(,R3) CHANGE TO BASE 1. @V304635 00393000
- SLL R3,20 ADDR. RANGE OF SEGTABLE. @V304635 00394000
- BCTR R3,R0 ADDR. RANGE OF MEMORY @V304635 00395000
- CLR R1,R3 RELEASING ABOVE MEMORY RANGE ? @V304635 00396000
- BH EXIT YES - RETURN TO CALLER. @V304635 00397000
- CLR R2,R3 LAST ADDR. GREATER THAN MEMORY @V304635 00398000
- * SIZE ? 00399000
- BNH *+6 NO - ITS O.K. TO USE IT. @V304635 00400000
- LR R2,R3 LIMIT TO TOP OF MEMORY. @V304635 00401000
- TM SAVEWRK1,PARTIAL WAS ENTRY FOR DMKPGSSS @V304635 00402000
- BO PGOUT1 YES - RELEASE THE STORAGE RANGE @V407511 00403000
- LR R4,R2 GET ENDING ADDRESS @V304635 00404000
- SLR R4,R1 CALCULATE RANGE OF ADDRESSES @V304635 00405000
- SRL R4,12 DROP DISPLACEMENT @V304635 00406000
- SLR R5,R5 CLEAR @V304635 00407000
- SRDL R4,4 SHIFT OUT THE PAGE NUMBER @V304635 00408000
- LTR R5,R5 WAS IT PAGE 0 @V304635 00409000
- BZ *+8 IF YES - SEGMENT COUNT IS OK @V304635 00410000
- LA R4,1(,R4) ADD ONE TO SEGMENT COUNT @V304635 00411000
- LTR R4,R4 MUST BE MIN. OF 1 SEGMENT @V304635 00412000
- BNZ *+8 OK. IF ONE OR MORE @V304635 00413000
- LA R4,1 SET SEGMENT TABLE COUNT FOR 1 @V304635 00414000
- L R3,VMSEG GET ADDRESS OF SEGTABLE @V304635 00415000
- LR R5,R1 FIRST ADDRESS TO RELEASE @V304635 00416000
- SRL R5,16 LEAVE ONLY SEGMENT NUMBER @V304635 00417000
- SLL R5,2 TIMES 4 FOR 4 BYTE ENTRIES @V304635 00418000
- LA R3,0(R3,R5) POINT TO FIRST SEGTABLE ENTRY @V304635 00419000
- PROCSHR DS 0H @V408246 00420000
- ICM R10,B'0110',SEGPAGE+1 ANY PTE POINTER? @V408246 00421000
- BZ PROCNEXT NO, SKIP @V408246 00422000
- IC R10,SEGPAGE+3 GET REST OF PTE POINTER @V408246 00423000
- N R10,CLCNTINV CLEAR UNWANTED BITS @V408211 00424000
- SL R10,F8 POINT TO PAGE HEADER @V304635 00425000
- L R10,0(,R10) GET POINTER TO (SHRTABLE) @V304635 00426000
- LTR R10,R10 IS THERE ONE THERE ? @V304635 00427000
- BZ PROCNEXT IF NOT - GET THE SEGTABLE ENTRY @V304635 00428000
- CLC SHRSEGCT,F0 SHARED SEGMENT??? @V408246 00429000
- BE PROCNEXT NOPE,BYPASS @V408246 00430000
- LM R1,R2,SHRNAME GET NAME OF THIS SHRTABLE @V304635 00431000
- CALL DMKPGSPS PURGE THE NAMED SYSTEM @V304635 00432000
- B RELEASE CHECK OUT ALL SEGTABLE ENTRIES @V304635 00433000
- SPACE 1 00434000
- PROCNEXT LA R3,4(,R3) POINT TO NEXT SEGTABLE ENTRY @V304635 00435000
- BCT R4,PROCSHR CONTINUE UNTIL COUNT EXHAUSHED @V304635 00436000
- B PGOUT1 PROCESS MAINLINE ROUTINE @V407511 00437000
- SPACE 1 00438000
- EJECT 00439000
- *. 00440000
- * F. OPERATION OF DMKPGSPO 00441000
- * 00442000
- * 1. (SKIP PAGE WAIT CHECK..ENQUEUE INSTEAD) 00443000
- * IF THE USER IS NOT USING A SHARED SEGMENT SYSTEM, SKIP TO 00444000
- * STEP 6 BELOW; OTHERWISE, CONTINUE 00445000
- * 2. DECREMENT AND TEST THE USE COUNT FOR THE SHARED SYSTEM; IF 00446000
- * IT IS NOT ZERO, SKIP TO STEP 4 BELOW; OTHERWISE, CONTINUE 00447000
- * 3. IF THE USE COUNT IS ZERO, UNCHAIN THE SHRTABLE FROM THE 00448000
- * ACTIVE LIST AND FLAG THE SWPTABLE ENTRIES FOR ALL SHARED 00449000
- * SEGMENTS AS NON-SHARED PAGES; FRET THE SHRTABLE AND 00450000
- * SKIP TO STEP 5 00451000
- * 4. IF USE COUNT IS NON-ZERO, INITIALIZE THE SEGMENT 00452000
- * TABLE ENTRIES TO "NOT AVAILABLE" 00453000
- * 5. DECREMENT COUNT OF SHARED SYSTEMS IN VMBLOK 00454000
- * AND RETURN TO PGOUT2. 00455000
- * 00456000
- *. 00457000
- SPACE 3 00458000
- DMKPGSPO RELOC 00459000
- XC SAVEWRK1,SAVEWRK1 CLEAR FLAG BYTES @V304635 00460000
- MVI SAVEWRK1,CALLPO FLAG ENTRY TO DMKPGSPO @V304635 00461000
- TM SAVER2+3,NOCLEAR WAS NOCLEAR SPECIFIED ? @V304635 00462000
- BZ *+8 NO @V304635 00463000
- OI SAVEWRK1,NOCLEAR YES - SET FLAG BYTE @V304635 00464000
- TM SAVER2+3,UNLOCK DID CALLER SPECIFY 'UNLOCK' @V304735 00465000
- BZ *+8 NO @V304735 00466000
- OI SAVEWRK1,UNLOCK UNLOCK ANY LOCKED PAGES @V304735 00467000
- SPACE 1 00468000
- TM SAVEWRK1,NOCLEAR WAS 'NOCLEAR' SPECIFIED @VM03225 00469000
- BZ PGSPO1 IF NOT RELEASE ALL OF STORAGE @VM03225 00470000
- TM VMOSTAT,VMSHR ANY SHARED NAMED SEGMENTS @VM03225 00471000
- BO NEXTNAME IF YES - RELEASE THEM @VM03225 00472000
- TM VMPSTAT,VMNSHR ANY NON-SHARED NAMED SEGMENTS @VM03225 00473000
- BZ EXIT IF NOT, JUST RETURN TO CALLER @VM03225 00474000
- SPACE 1 00475000
- NEXTNAME SLR R2,R2 COUNT OF SEGTABLE ENTRIES @VM03225 00476000
- L R3,VMSEG GET ADDRESS OF SEGTABLE @VM03225 00477000
- SLDL R2,8 NUMBER OF SEGMENTS INTO R2 @VM03225 00478000
- SRL R3,8 ADJUST TO 24 BIT ADDRESSING @VM03225 00479000
- LA R2,1(,R2) CHANGE TO BASE OF 1 @VM03225 00480000
- SLL R2,4 TIMES 16 ENTRIES PER SEGTABLE @VM03225 00481000
- * LENGTH 00482000
- NEWADDR DS 0H @V408246 00483000
- ICM R9,B'0110',SEGPAGE+1 ANY PTE POINTER? @V408246 00484000
- BZ NEXTADDR+6 NO, SKIP @V408246 00485000
- IC R9,SEGPAGE+3 GET REST OF PTE POINTER @V408246 00486000
- N R9,CLCNTINV CLEAR UNWANTED BITS @V408211 00487000
- SL R9,F8 BACK-UP TO SHRTABLE POINTER @VM03225 00488000
- L R10,0(,R9) GET POINTER TO SHRTABLE IF ANY @VM03225 00489000
- LTR R10,R10 IS THIS A NAMED SEGMENT @VM03225 00490000
- BZ NEXTADDR IF NOT - KEEP LOOKING @VM03225 00491000
- CLC SHRSEGCT(L'SHRSEGCT),F0 SHARED SEGMENT ? @VA04403 00492000
- BE NEXTADDR NO - PROCESS NEXT SEGMENT @VA04403 00493000
- IC R2,VMSEG GET NUMBER OF SEGMENTS @VA07849 00493100
- LA R2,1(R2) ADD ONE TO GET END OF STOR @VA07849 00493200
- SLL R2,20 NOW MAKE IT AN ADDRESS @VA07849 00493300
- BCTR R2,0 SUBTRACT ONE FOR END OF STOR @VA07849 00493400
- BAL R14,GOTSHTBL RELEASE SHARED SYSTEM @VA04403 00494000
- B NEXTNAME CHECK FOR MORE SHARED SYSTEMS @VA04403 00495000
- SPACE 1 00496000
- NEXTADDR XC 0(4,R9),0(R9) CLEAR POINTER TO SHRTABLE(MAYBE) @VA04403 00497000
- LA R3,4(,R3) POINT TO NEXT SEGTABLE ENTRY @VA04403 00498000
- BCT R2,NEWADDR PROCESS ALL SEGTABLE ENTRIES @VM03225 00499000
- NI VMPSTAT,X'FF'-VMNSHR RESET NON-SHARE INDICATOR @VM03225 00500000
- B EXIT @V408246 00501000
- SPACE 2 00502000
- EJECT 00503000
- SPACE 00504000
- * FOR PREVIOUS SHARED SYSTEM IPL--MUST CLEAN UP 00505000
- SPACE 00506000
- USING SHRTABLE,R10 00507000
- GOTSHTBL DS 0H @VA08861 00508500
- STM R1,R4,SAVEWRK3 ... @V304635 00509000
- ST R14,SAVEWRK9 SAVE BRANCH RETURN REGISTER @V304635 00510000
- TM SAVEWRK1,PURGE PURGING A NAMED SHARED SYSTEM? @V408246 00511000
- BZ NOTPURGE NO @V408246 00512000
- CLC SHRNAME,SAVER1 DO THE NAMES MATCH? @V408246 00513000
- BNE GTRETURN NO, RETURN TO CALLER @V407511 00514000
- NOTPURGE DS 0H @V408246 00515000
- LR R14,R3 GET CURRENT SEGMENT TABLE ENTRY @V4M0191 00516000
- L R15,VMSEG LOAD SEGMENT TABLE ORIGIN @VA07241 00517100
- LA R15,0(,R15) CLEAR LENGTH BITS @VA07241 00517200
- SLR R14,R15 GET DISPLACEMENT OF ENTRY @VA07241 00517300
- SRL R14,2 GET CURRENT SEGMENT NUMBER @V4M0191 00518000
- CLM R14,B'0001',SHRSEGNM ALREADY PROCESSED THIS @V4M0191 00519000
- * NAMED SYSTEM @V4M0191 00520000
- BH GTRETURN YES, JUST RETURN TO MAINLINE @V4M0191 00521000
- NI SAVEWRK1+3,X'FF'-PGPROCIP-PGVMAFND-NPROTECT @V60B7AA 00522205
- * RESET INTERNAL SHARED CONTROL FLG@V60BC11 00522210
- C R11,LASTUSER ACTIVE? @V408246 00523000
- BNE NOTCHG NO NEED TO CHECK @V408246 00524000
- CALL DMKVMASH CHECK FOR CHANGED PAGE BEFORE @V408246 00525000
- * RELEASE 00526000
- BZ NOTCHG OK @V408246 00527000
- USING VMABLOK,R1 @VA08861 00529150
- ICM R1,B'1111',VMASSIST SEE IF THERE IS A VMABLOK? @VA08861 00529160
- BZ ANOTCHG1 NO, CONTINUE @VA08861 00529170
- ANOTCHG DS 0H @VA08861 00529180
- CLC VMANAME,SAVER1 IS THIS OURS? @VA08861 00529190
- BE NOTCHG YES,VMAPS DID NOT GET OURS 00529200
- L R1,VMAFPNT GET THE NEXT IF ANY @VA08861 00529210
- LTR R1,R1 IS THERE ANOTHER VMABLOK? @VA08861 00529220
- BNZ ANOTCHG YES,GO SEE IF WE CAN FIND OUR @VA08861 00529230
- * SHAREDNAME 00529240
- DROP R1 @VA08861 00529250
- ANOTCHG1 DS 0H @VA08861 00529260
- TM SAVEWRK1,PURGE IS THIS A PURGE REQUEST? @VA08861 00529270
- BNO GTRETURN NO,CONTINUE @VA08861 00529280
- LM R1,R4,SAVEWRK3 RESTORE REGS OVER CALL TO VMASH @VA08861 00529290
- NI SEGPAGE+3-SEGPAGE(R3),X'FF'-SEGINV RESET SEGINV @VA08555 00529600
- B TESTPUR VMA MUST OF GOT THE VMABLOK @VA08861 00529851
- NOTCHG DS 0H @V408246 00530000
- CALL DMKPTRPW @VA08037 00531100
- EJECT 00532000
- * 00533000
- * SEARCH FOR USER'S VMA BLOCK 00534000
- * 00535000
- GTVMABK DS 0H @V408246 00536000
- TM SHRFLAG,SHRNOPRT RUNNING UNPROTECTED @V60BC11 00536200
- BZ GTVMABK1 NO, SKIP SETTING INDICATOR @V60BC11 00536300
- OI SAVEWRK1+3,NPROTECT SET UNPROTECTED INDICATOR @V60BC11 00536400
- B NVMABK CONTINUE PROCESSING @V60BC11 00536500
- GTVMABK1 DS 0H @V60BC11 00536600
- LA R1,VMASSIST ANCHOR OF VMABLOKS @V408246 00537000
- USING VMABLOK,R1 @V408246 00538000
- CHKVMABK LR R15,R1 SAVE BACKWARD CHAIN POINTER @V408246 00539000
- ICM R1,B'1111',VMAFPNT GET NEXT VMABLOK ON CHAIN @V408246 00540000
- BZ GTRETURN NO MORE, DMKVMA MUST HAVE DONE IT@V407511 00541000
- CLC SHRNAME,VMANAME IS THIS THE NAMED SYSTEM @V408246 00542000
- BNE CHKVMABK IF NOT - GET THE NEXT ONE @V408246 00543000
- TM SAVEWRK1,PURGE+CALLPO PURGING NAMED SYSTEM OR @VA07849 00544100
- * ALL OF STORAGE 00544200
- BZ CHKVMAB1 NO @VA07849 00544300
- OI SAVEWRK1,SYSFND YES, INDICATE SYSTEM FOUND @V408246 00546000
- CHKVMAB1 DS 0H @VA07849 00546100
- L R14,VMAFPNT SAVE FORWARD CHAIN POINTER @V408246 00547000
- LH R6,VMSHRSYS IS THIS LAST VMABLOK @VA09427 00547100
- BCT R6,NOTLAST NO,WE ARE STILL SHARED SYSTEM @VA09427 00547300
- NI VMOSTAT,255-VMSHR TURN OFF VMSHR @VA09427 00547500
- NOTLAST DS 0H @VA09427 00547700
- ST R14,0(,R15) STORE IT IN BACKWARD CHAIN BLOK @V408246 00548000
- LA R0,VMASIZE GET SIZE OF ONE VMABLOK @V408246 00549000
- CALL DMKFRET RELEASE THIS VMABLOK @V408246 00550000
- NVMABK DS 0H @V60BC11 00550200
- TM SAVEWRK1,PURGE PURGING A NAMED SHARED SYSTEM? @V60BC11 00550400
- BZ *+8 NO @V60BC11 00550600
- OI SAVEWRK1,SYSFND YES, INDICATE SYSTEM FOUND @V60BC11 00550800
- DROP R1 @V408246 00551000
- TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 00552100
- BZ ATTPROC NO, LEAVE BIT TO INDICATE ATTACH @V407511 00553000
- OI SAVEWRK1+3,PGPROCIP INDICATE MAIN (IPL) PROC. @V60B7AA 00554100
- ATTPROC DS 0H @V407511 00555000
- OI SAVEWRK1+3,PGVMAFND INDICATE VMABLOK FOUND FOR @V407511 00556000
- * THIS NAMED SYSTEM @V407511 00557000
- EJECT 00558000
- * 00559000
- * SEARCH SEGMENT TABLE FOR MATCHING PAGE TABLE POINTERS 00560000
- * 00561000
- L R3,SHRSEGCT LOAD NUMBER OF SHARED SEGMENTS @V408246 00562000
- BCTR R3,0 -1 FOR ORIGIN 0 @V408246 00563000
- MVI SAVEWRK1+2,INITPASS INIT TO NO SEGMENTS FOUND @V408211 00564000
- SGFND DS 0H FIND SEGMENT BELONGING TO THIS @V408246 00565000
- * SHARED SYS 00566000
- SLR R9,R9 ZIP REG @V407511 00567000
- IC R9,SHRSEGNM(R3) INSERT SEGMENT NUMBER @V407511 00568000
- SLL R9,2 MULTIPLY BY 4 FOR INDEXING @V407511 00569000
- AL R9,VMSEG LOAD ADDR SEGTABLE ENTRY @V407511 00570000
- USING SEGTABLE,R9 @V407511 00571000
- L R5,SEGPAGE LOAD ADDRESS OF PTO @V407511 00572000
- N R5,CLINVBIT CLEAR INVALID BIT @V407511 00573000
- LA R5,0(,R5) CLEAR PTE COUNT @V407511 00574000
- EJECT 00575000
- * 00576000
- * FOUND STE WITH MATCHING PTO 00577000
- * 00578000
- SGFNDD DS 0H FOUND DESIRED SHARED SEGMENT @V408246 00579000
- CLI SAVEWRK1+2,NOTINUSE IS THIS THE 1ST ONE FOUND? @V407511 00580000
- BNH SGFNDE NO, AND SYSTEM NOT STILL IN USE @V408246 00581000
- OI VMESTAT,VMINVPAG RAISE PAGE RESET FLAG @V408246 00582000
- NI VMDSTAT,255-VMDSP ASSURE NO FAST REDSP @V408246 00583000
- LH R1,SHRUSECT FIRST ONE, CHECK SYSTEM USE COUNT@V408246 00584000
- BCT R1,GOTUSA STILL IN USE @V407511 00585000
- LM R1,R2,SHRFPNT COUNT IS ZERO, UNCHAIN THE SHR @V408246 00586000
- * TABLE 00587000
- STCM R1,B'0111',SHRFPNT+1-SHRTABLE(R2) FROM THE @V60BC11 00588000
- ST R2,SHRBPNT-SHRTABLE(,R1) ACTIVE LIST @V408246 00589000
- MVI SAVEWRK1+2,NOTINUSE FLAG SYSTEM NO LONGER IN USE@V407511 00590000
- SGFNDE DS 0H @V408246 00591000
- SL R5,F16 BACK-UP TO PAGE TABLE HEADER @V408246 00592000
- CLI SAVEWRK1+2,NOTINUSE SHARED SYSTEM STILL IN USE @V407511 00593000
- BL GOTUSAA YES @V407511 00594000
- L R4,PAGTSWP+SWPVM-SWPTABLE(,R5) SAVE OLD OWNER @V408211 00595000
- ST R11,PAGTSWP+SWPVM-SWPTABLE(,R5) PROUD NEW OWNER @V408211 00596000
- * OF THIS SEGMENT @V408211 00597000
- STCK PAGSTMP-PAGTABLE(R5) NEW TIME STAMP @V408246 00598000
- BC 12,CLOCKOK IS CLOCK FUNCTIONING? @V408246 00599000
- DOWNWEGO DS 0H CLOCK DAMAGED - ABEND CVT001 @V408246 00600000
- GOTO DMKCVTAB @V408246 00601000
- CLOCKOK DS 0H CONTINUE @V408246 00602000
- SR R0,R0 CLEAR @V408246 00603000
- ST R0,PAGACT-PAGTABLE(,R5) CLEAR COUNTS @V408246 00604000
- TM SAVEWRK1,PURGE+CALLPO PURGING NAMED SYSTEM OR @VA07849 00605100
- * ALL OF STORAGE 00605200
- BNZ SGFNDE1 YES, DON'T CLEAR SHRTABLE PTR @VA07849 00605300
- ST R0,PAGSHR-PAGTABLE(,R5) CLEAR NAMED PNTR. @V408246 00608000
- SGFNDE1 DS 0H @VA07849 00608100
- LA R8,PAGTSWP+SWPFLAG-SWPTABLE(,R5) 1ST SWAP TABLE @V408211 00609000
- * ENTRY @V408211 00610000
- B GOTUSAB JOIN CODE BELOW @V407511 00611000
- GOTUSA DS 0H SHARED SEGMENT STILL IN USE @V407511 00612000
- STH R1,SHRUSECT UPDATE COUNT OF TOTAL USERS @V408246 00613000
- MVI SAVEWRK1+2,INUSE FLAG SEGMENT FOUND AND SYSTEM @V407511 00614000
- * IN USE 00615000
- SL R5,F16 BACK-UP TO PAGE TABLE HEADER @V408246 00616000
- GOTUSAA DS 0H @V407511 00617000
- L R4,PAGTSWP+SWPVM-SWPTABLE(,R5) SAVE ORIG OWNER @V408211 00618000
- CR R11,R4 IS THIS THE OWNER OF THE SEGMENT?@V408246 00619000
- BNE *+10 NO @V408246 00620000
- MVC PAGTSWP+SWPVM-SWPTABLE(4,R5),ASYSVM YES, GIVE TO@V408211 00621000
- * SOMEONE ELSE @V408211 00622000
- GOTUSAB DS 0H @V407511 00623000
- SVC 20 GET ANOTHER SAVEAREA @VA07849 00623100
- SLR R0,R0 ZIP REG 0 @VA07849 00623200
- ST R0,SAVER12 ZERO BASE ADDR TO PREVENT SVC @VA07849 00623300
- * FROM UNLOCKING MODULE 00623400
- L R1,SAVER13 GET ADDR OF ORIGINAL SAVEAREA @VA07849 00623500
- MVC SAVEWRK1,SAVEWRK1-SAVEAREA(R1) COPY FLAGS @VA07849 00623600
- MVC SAVER1(8),SAVER1-SAVEAREA(R1) COPY SYSTEM NAME @VA07849 00623700
- * DETERMINE IF THERE ARE TWO SETS OF PAGE AND SWAP TABLES TO PROCESS. 00624000
- * THERE ARE TWO IF THE MP FEATURE IS INSTALLED AND THE SYSTEM IS 00624100
- TM SAVEWRK1+3,NPROTECT RUNNING UNPROTECTED @V60BC11 00624130
- BO GOTCOM1A YES, JOIN COMMON CODE @V60BC11 00624160
- * GENERATED FOR AP MODE. 00624200
- TM APSTAT1,MPFEAT IS THE MP FEATURE INSTALLED @V5BC0AB 00624300
- BNO GOTCOM1A NO, JOIN COMMON CODE @V5BC0AB 00624400
- L R14,PGSSYSAP EST. ADDRESSABILITY TO DMKSYSAP @V5BC0AB 00624500
- CLI 0(R14),YES IS SYSTEM GENED FOR AP? @V5BC0AB 00624600
- BNE GOTCOM1A NO, JOIN COMMON CODE @V5BC0AB 00624700
- LR R1,R5 LOAD ORIG PAGTABLE ADDR IN R1 @V407511 00628000
- TM SAVEWRK1+3,PGPROCIP START ON MAIN (IPL) PROC? @V60B7AA 00629100
- BZ GOTAPU NO, STARTED ON ATTACHED @V407511 00630000
- AL R1,DCPAGBMP YES, ADD TO GET ADDR OF ATTACHED @V407511 00631000
- * PAGTABLE @V407511 00632000
- B GOTCOM JOIN COMMON CODE @V407511 00633000
- GOTAPU DS 0H @V407511 00634000
- SL R1,DCPAGBMP SUBTRACT FOR ADDR. MAIN (IPL) PGT @V60B7AA 00635100
- GOTCOM DS 0H @V407511 00636000
- CLI SAVEWRK1+2,INUSE SYSTEM STILL IN USE @VA07849 00636200
- BE GOTCOMP YES, SKIP RESETING HEADER @VA07849 00636400
- USING PAGTABLE,R5 @V407511 00637000
- MVC PAGTSWP+SWPVM-SWPTABLE(4,R1),PAGTSWP+SWPVM-SWPTABLE(R5) 00638000
- * COPY THE VMBLOK ADDR OF OWNER @V4M0213 00639000
- MVC PAGSTMP-PAGTABLE(,R1),PAGSTMP COPY TIME STAMP @V407511 00640000
- MVC PAGACT-PAGTABLE(4,R1),PAGACT COPY COUNTER @V407511 00641000
- MVC PAGSHR-PAGTABLE(,R1),PAGSHR COPY SHRTABLE PTR @VA07849 00642100
- GOTCOMP DS 0H @V407511 00643000
- LR R5,R1 PROCESS OTHER SET FIRST @VA07849 00643200
- AL R1,F16 GET ADDRESS OF PTO @VA07849 00643400
- STCM R1,B'0111',1(R9) UPDATE STE @VA07849 00643600
- BAL R14,PROCPAGE GO PROCESS PAGTABLE @V407511 00644000
- STM R3,R10,SAVER3 SAVE REGS R3 - R10 @VA07849 00644200
- ST R2,SAVEWRK5 SAVE REG R2 @VA07849 00644400
- L R1,0(,R9) LOAD ADDR PTR JUST PROCESSED @V407511 00645000
- ST R1,SAVEWRK6 SAVE ORIGINAL STE @VA07849 00645200
- LA R1,0(,R1) CLEAR PTE COUNT @VA07282 00645500
- TM SAVEWRK1,NOCLEAR CALLER SPECIFY NOCLEAR OPT @VA07849 00645510
- BZ GOTCOMPA NO, RELEASE THE PAGTABLE @VA07849 00645520
- CLI SAVEWRK1+2,NOTINUSE LAST USER OF SYSTEM @VA07849 00645530
- BNE GOTCOMP1 NO, SKIP RESETING PAGTABLE @VA07849 00645540
- GOTCOMPA DS 0H @VA07849 00645550
- LR R3,R9 ADDR OF STE TO REG 3 @VA07849 00645560
- LR R9,R1 ADDR OF PTO TO REG 9 @VA07849 00645570
- LR R5,R1 GET ADDR OF PTO @VA07849 00645580
- SL R5,F16 BACKUP TO HEADER @VA07849 00645590
- LA R5,PAGTSWP(,R5) GET ADDR OF SWPTABLE @VA07849 00645600
- LA R5,SWPFLAG-SWPTABLE(,R5) ADDR FIRST SWPTABLE ENT@VA07849 00645610
- L R1,SAVER13 GET ADDR ORIGINAL SAVEAREA @VA07849 00645620
- L R2,SAVEWRK4-SAVEAREA(,R1) GET ENDING ADDRESS @VA07849 00645630
- LR R1,R3 GET ADDR CURRENT STE @VA07849 00645640
- LA R1,0(,R1) CLEAR PTE COUNT @VA07849 00645650
- L R14,VMSEG GET ADDR START OF SEGTABLE @VA07849 00645660
- LA R14,0(,R14) CLEAR SEGTABLE SIZE @VA07849 00645670
- SR R1,R14 GET SEGMENT NUMBER * 4 @VA07849 00645680
- SRL R1,2 GET SEGMENT NUMBER @VA07849 00645690
- SLL R1,16 FORM VIRTUAL STARTING ADDRESS @VA07849 00645700
- BAL R14,RELAPAGE RELEASE THE PAGTABLE @VA07849 00645710
- LM R3,R10,SAVER3 RESTORE REGS R3 - R10 @VA07849 00645720
- L R2,SAVEWRK5 RESTORE REG R2 @VA07849 00645730
- L R1,SAVEWRK6 GET ORIGINAL STE VALUE @VA07849 00645740
- ST R1,0(,R9) RESTORE STE @VA07849 00645750
- LA R1,0(,R1) CLEAR PTE COUNT @VA07849 00645760
- GOTCOMP1 DS 0H @VA07849 00645770
- TM SAVEWRK1+3,PGPROCIP START ON MAIN (IPL) PROC? @V60B7AA 00646100
- BZ GOTAPU1 NO, STARTED ON ATTACHED PROC @V407511 00647000
- SL R1,DCPAGBMP BACK UP TO IPL PROC (1ST) PAGTABLE @V60B7AA 00648300
- B GOTCOM1 CONTINUE PROCESSING @V407511 00649000
- GOTAPU1 DS 0H @V407511 00650000
- AL R1,DCPAGBMP BUMP TO ATTACHED PAGTABLE @VA07849 00651200
- GOTCOM1 DS 0H @V407511 00652000
- STCM R1,B'0111',SEGPAGE+1-SEGTABLE(R9) HOOK STE - PTO@VA07282 00653500
- LR R5,R1 PTO ADDR TO R5 @V407511 00654000
- LA R5,0(,R5) CLEAR COUNT @V407511 00655000
- SL R5,F16 BACKUP TO HEADER @V407511 00656000
- GOTCOM1A DS 0H @V407511 00657000
- BAL R14,PROCPAGE PROCESS A PAGTABLE @V407511 00658000
- TM SAVEWRK1,NOCLEAR CALLER SPECIFY NOCLEAR OPT @VA07849 00658010
- BO GOTCOM4 YES, SKIP RELEASING PAGTABLE @VA07849 00658020
- STM R3,R10,SAVER3 SAVE REGS R3 - R10 @VA07849 00658030
- ST R2,SAVEWRK5 SAVE REG R2 @VA07849 00658040
- L R1,0(,R9) GET ORIGIN STE VALUE @VA07849 00658050
- ST R1,SAVEWRK6 SAVE ORIGINAL STE @VA07849 00658060
- LR R3,R9 ADDR OF STE TO R3 @VA07849 00658070
- LR R9,R1 ADDR OF PTO TO R9 @VA07849 00658080
- LR R5,R1 GET ADDR OF PTO @VA07849 00658090
- SL R5,F16 BACKUP TO HEADER @VA07849 00658100
- LA R5,PAGTSWP(,R5) GET ADDR OF SWPTABLE @VA07849 00658110
- LA R5,SWPFLAG-SWPTABLE(,R5) ADDR FIRST SWPTABLE ENT@VA07849 00658120
- L R1,SAVER13 GET ADDR ORIGINAL SAVEAREA @VA07849 00658130
- L R2,SAVEWRK4-SAVEAREA(,R1) GET ENDING ADDRESS @VA07849 00658140
- LR R1,R3 GET ADDR CURRENT STE @VA07849 00658150
- LA R1,0(,R1) CLEAR PTE COUNT @VA07849 00658160
- L R14,VMSEG GET STARTING ADDR SEGTABLE @VA07849 00658170
- LA R14,0(,R14) CLEAR SEGTABLE SIZE @VA07849 00658180
- SR R1,R14 GET SEGMENT NUMBER * 4 @VA07849 00658190
- SRL R1,2 GET SEGMENT NUMBER @VA07849 00658200
- SLL R1,16 FORM VIRTUAL STARTING ADDRESS @VA07849 00658210
- BAL R14,RELAPAGE RELEASE THE PAGTABLE @VA07849 00658220
- LM R3,R10,SAVER3 RESTORE REGS R3 - R10 @VA07849 00658230
- L R2,SAVEWRK5 RESTORE REG R2 @VA07849 00658240
- CLC 0(4,R9),F1 WAS PAGTABLE RELEASED @VA07849 00658250
- BE GOTCOM4 YES, DON'T HAVE TO RESET STE @VA07849 00658260
- L R1,SAVEWRK6 GET STE ENTRY @VA07849 00658270
- ST R1,0(,R9) RESTORE STE VALUE @VA07849 00658280
- EJECT 00673000
- * 00674000
- * DONE PROCESSING PAGE ENTRIES FOR THIS SEGMENT 00675000
- * 00676000
- GOTCOM4 DS 0H @V407511 00677000
- SVC 16 RETURN ADDITIONAL SAVEAREA @VA07849 00677200
- CLI SAVEWRK1+2,NOTINUSE SHARED SEGMENT STILL IN USE?@V407511 00678000
- BNE GOTCOM4A YES, RESET HEADER @VA07849 00679100
- TM SAVEWRK1,NOCLEAR WAS NOCLEAR OPT SPECIFIED @VA07849 00679200
- BZ GOTUSE NO, ALL DONE WITH PAGTABLE @VA07849 00679300
- SLR R1,R1 YES, ZERO REG @VA07849 00679400
- ST R1,PAGSHR ZERO POINTER TO SHRTABLE @VA07849 00679500
- B GOTUSE CONTINUE PROCESSING NEXT PAGTABLE@VA07849 00679600
- GOTCOM4A DS 0H @VA07849 00679700
- LA R9,0(,R9) CLEAR COUNT FIELD @V408246 00680000
- TM 3(R9),SEGINV VALID STE? @V408246 00681000
- BO GOTUSD NO @V407511 00682000
- STCK TEMPR2 GET CURRENT TIME @V407511 00683000
- BC 3,DOWNWEGO ABEND CVT001 @V407511 00684000
- L R7,TEMPR2 LOAD NEW TIME STAMP @V407511 00685000
- ST R7,PAGSTMP TIME-STAMP SEGMENT @V407511 00686000
- L R1,PAGACT LOAD CURRENT ACTIVE COUNT @V407511 00687000
- TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V407511 00688000
- BO CSLOOP1 YES, USE COMPARE & SWAP LOGIC @V407511 00689000
- S R1,UPDTACT NO, DECREMENT ACTIVE COUNT @V407511 00690000
- ST R1,PAGACT STORE UPDATED COUNTER @V407511 00691000
- B GOTUSD BRANCH AROUND ATTACHED CODE @V407511 00692000
- CSLOOP1 DS 0H @V407511 00693000
- LR R7,R1 LOAD FOR COMPARE & SWAP @V407511 00694000
- S R7,UPDTACT DECREMENT ACTIVE COUNT @V407511 00695000
- CS R1,R7,PAGACT UPDATE THE ACTIVE COUNTER @V407511 00696000
- BNZ CSLOOP1 SOMEBODY BEAT ME TO IT, TRY AGAIN@V407511 00697000
- GOTUSD DS 0H @V407511 00698000
- LH R7,PAGTOT DECREMENT @V407511 00699000
- BCTR R7,0 TOTAL SEGMENT USE COUNT @V408246 00700000
- STH R7,PAGTOT @V407511 00701000
- TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V407511 00702000
- BZ GOTUSD1 NO, SKIP SECOND UPDATE @V407511 00703000
- TM SAVEWRK1+3,NPROTECT RUNNING UNPROTECTED @V60BC11 00703500
- BO GOTUSD1 YES, SKIP SECOND UPDATE @V60BC11 00703510
- TM SAVEWRK1+3,PGPROCIP START ON MAIN (IPL) PROC? @V60B7AA 00704100
- BO DECRATT YES- PROCESS AP COPY NOW @V4M0125 00705000
- SL R5,DCPAGBMP BACK TO HDR OF IPL PROC (1ST) PGT@V60B7AA 00706100
- STH R7,PAGTOT SAVE NEW TOTAL COUNT @V4M0125 00707000
- LA R5,PAGBMP(R5) RESTORE REGISTER @V4M0125 00708000
- B GOTUSD1 @V4M0125 00709000
- DECRATT DS 0H DECREMENT AP COUNT NOW @V4M0125 00710000
- STH R7,PAGBMP+PAGTOT-PAGTABLE(,R5) UPDATE ATTACHED @V407511 00711000
- * PROC TOTAL COUNTER (2ND SET OF TABLES) 00712100
- GOTUSD1 DS 0H @V407511 00713000
- LA R7,SEGINV INVALID FLAG @V408246 00714000
- ST R7,0(,R9) INVALIDATE STE @V408246 00715000
- EJECT 00716000
- * 00717000
- * CHECK FOR MORE PAGE TABLES IN SHARED, NAMED SYSTEM 00718000
- * 00719000
- GOTUSE DS 0H @V407511 00720000
- S R3,F1 DECREMENT SEGMENT NUMBER INDEX @V4M0179 00721000
- BNM SGFND IF MORE, KEEP LOOKING @V408246 00722000
- SPACE 3 00723000
- * 00724000
- * ALL PTO'S HANDLED 00725000
- * 00726000
- CLI SAVEWRK1+2,NOTINUSE SHARED SYSTEM RESET? @V407511 00727000
- BH GTRETURN NO SEGMENTS FOUND @V407511 00728000
- BL DECVMSHR YES, DONE PROCESSING @V408246 00729000
- LR R1,R10 GET ADDRESS @V408246 00730000
- LH R0,SHRTSIZE AND SIZE OF SHRTABLE @V408246 00731000
- TM SAVEWRK1,PURGE PURGING A NAMED SYSTEM ? @V408246 00732000
- BZ FRETSHR NO - RELEASE THE SHRTABLE @V408246 00733000
- STM R0,R1,SAVEWRK7 SAVE LENGTH/ADDRESS OF SHRTABLE @V408246 00734000
- OI SAVEWRK1,SYSFND+SYSFRET FOUND BUT NOT FRETTED @V408246 00735000
- B DECVMSHR DECREMENT USER SHARED COUNT @V408246 00736000
- FRETSHR CALL DMKFRET FRET THE SHRTABLE @V408246 00737000
- EJECT 00738000
- * 00739000
- * PROCESSESING FINISHED, DECREMENT COUNT 00740000
- * 00741000
- DECVMSHR LH R1,VMSHRSYS GET COUNT OF SHARED SYSTEMS @V408246 00742000
- BCT R1,STVMSHR DECREMENT AND TEST @V408246 00743000
- NI VMOSTAT,255-VMSHR IF ZERO, TURN OFF SHARED @V408246 00744000
- STVMSHR STH R1,VMSHRSYS STORE NEW COUNT @V408246 00745000
- GTRETURN DS 0H @V407511 00746000
- LM R1,R4,SAVEWRK3 RESTORE REGISTERS @V407511 00747000
- L R14,SAVEWRK9 RETURN ADDRESS FOR CALLER @V408246 00749000
- BR R14 RETURN TO CALLER @V408246 00750000
- DROP R10 @V408246 00751000
- EJECT 00752000
- PROCPAGE DS 0H @V407511 00753000
- ST R14,SAVEWRK2 SAVE RETURN ADDRESS @V407511 00754000
- PROUSAB1 DS 0H @V407511 00755000
- TM 3(R9),SEGINV SEGMENT VALID? @V408246 00756000
- BZ PROUSAC YES @V407511 00757000
- NI 3(R9),255-SEGINV NO, VALIDATE IT @V408246 00758000
- CLI SAVEWRK1+2,NOTINUSE LAST USER? @V407511 00759000
- BE PROUSAC YES, BYPASS ACTIVE COUNTER @VA07282 00760500
- L R0,PAGACT LOAD ACTIVE COUNTER @V407511 00761000
- TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V407511 00762000
- BO CSLOOP2 YES, USE COMPARE & SWAP LOGIC @V407511 00763000
- AL R0,UPDTACT NO, INCREMENT ACTIVE COUNT @V407511 00764000
- ST R0,PAGACT STORE UPDATED COUNTER @V407511 00765000
- B PROUSAC BRANCH AROUND ATTACHED CODE @V407511 00766000
- CSLOOP2 DS 0H @V407511 00767000
- LR R1,R0 LOAD FOR COMPARE & SWAP @V407511 00768000
- AL R1,UPDTACT INCREMENT ACTIVE COUNT @V407511 00769000
- CS R0,R1,PAGACT UPDATE ACTIVE COUNTER @V407511 00770000
- BNZ CSLOOP2 SOMEBODY BEAT ME, TRY AGAIN @V407511 00771000
- PROUSAC DS 0H @V407511 00772000
- LR R1,R9 @V407511 00773000
- L R2,VMSEG ADDRESS OF 1ST STE @V408246 00774000
- LA R2,0(,R2) CLEAR COUNT FIELD @V408246 00775000
- SR R1,R2 @V407511 00776000
- SLL R1,14 ADDRESS OF 1ST PAGE IN SEGMENT @V407511 00777000
- SR R7,R7 CLEAR @V408246 00778000
- IC R7,0(,R9) (PTE COUNT * 16) - 16 @V408246 00779000
- LA R7,16(,R7) PTE COUNT * 16 @V408246 00780000
- SRL R7,4 PTE COUNT @V408246 00781000
- LA R8,PAGTSWP+SWPFLAG-SWPTABLE(,R5) POINT TO 1ST @V408211 00782000
- * SWPTABLE ENTRY @V408211 00783000
- USING SWPFLAG,R8 @V408246 00784000
- EJECT 00785000
- * 00786000
- * PROCESS INDIVIDUAL TABLE ENTRIES FOR EACH PAGE IN THIS 00787000
- * SEGMENT 00788000
- * 00789000
- PROUSB DS 0H @V407511 00790000
- C R4,PAGTSWP+SWPVM-SWPTABLE(,R5) WAS SEGMENT @V408211 00792000
- * OWNER SWITCHED? @V408211 00793000
- BE PROUSBA NO, BYPASS BACKING COUNT RESET @V407511 00794000
- CLI SAVEWRK1+2,NOTINUSE SHARED SEGMENT STILL IN USE?@V407511 00795000
- BNE *+8 YES @V408246 00796000
- NI SWPFLAG,X'FF'-SWPSHR NO, RESET SHARED FLAG @V408246 00797000
- TM SWPFLAG,SWPRECMP BACKING STORE ALLOCATED? @V408246 00798000
- BO PROUSBA @V407511 00799000
- SR R2,R2 CLEAR @V408246 00800000
- IC R2,SWPCODE GET VOLUME INDEX CODE @V408246 00801000
- SLL R2,3 GET VOLUME INDEX CODE @V408246 00802000
- AL R2,=A(DMKSYSOW) POINT TO OWNED LIST ENTRY @V408246 00803000
- LH R2,OWNDRDEV-OWNDLIST(,R2) GET RDEVBLOK INDEX @V408246 00804000
- SLL R2,3 CONVERT TO BYTE INDEX @V408246 00805000
- AL R2,ARIODV POINT TO RDEVBLOK @V408246 00806000
- USING RDEVBLOK,R2 @V408246 00807000
- LA R15,VMPDRUM-VMBLOK ASSUME DRUM @V408246 00808000
- CLI RDEVTYPE,TYP2305 CORRECT? @V408246 00809000
- BE *+8 YES @V408246 00810000
- LA R15,VMPDISK-VMBLOK NO, RESET TO DISK COUNTER @V408246 00811000
- LH R0,0(R15,R4) DECREMENT @V408246 00812000
- S R0,F1 ORIGINAL OWNER'S COUNT @V408246 00813000
- BM *+8 ERROR, BYPASS STORE @V408246 00814000
- STH R0,0(R15,R4) @V408246 00815000
- LH R0,0(R15,R11) INCREMENT @V408246 00816000
- A R0,F1 NEW OWNER'S COUNT @V408246 00817000
- STH R0,0(R15,R11) @V408246 00818000
- DROP R2 @V408246 00819000
- EJECT 00820000
- PROUSBA DS 0H PROCESS PAGE'S PAGE TABLE ENTRY @V407511 00821000
- TRANS 2,1,OPT=(DEFER) MAKE SURE PAGE ISNT INTRANSIT @VA12777 00822500
- BNZ PROUSC PAGE NOT AVAILABLE @V407511 00823000
- SRL R2,12 REAL PAGE NUMBER @V408246 00824000
- SLL R2,4 PAGE NUMBER * 16 @V408246 00825000
- A R2,ACORETBL CORE TABLE ENTRY FOR THIS PAGE @V408246 00826000
- DROP R7 @V408246 00827000
- USING CORTABLE,R2 @V408246 00828000
- CLI SAVEWRK1+2,NOTINUSE SHARED SEGMENT STILL IN USE?@V407511 00829000
- BNE PROUSBB YES @V407511 00830000
- NI CORFLAG,255-CORSHARE NO, UNSHARE PAGE @V408246 00831000
- L R14,=A(DMKPTRSC) POINTER TO SHARED PAGE COUNTER @V408246 00832000
- L R15,0(,R14) DECREMENT @V408246 00833000
- BCTR R15,0 COUNT OF SHARED PAGES @V408246 00834000
- ST R15,0(,R14) @V408246 00835000
- L R14,CORFPNT CURRENT OWNER OF PAGE @V408246 00836000
- TM CORFLAG,CORCFLCK FRAME LOCKED ?? @VA07798 00836200
- BO PROUSBA1 YES, SKIP UPDATE OF FRAME COUNT @VA07798 00836400
- LH R15,VMPAGES-VMBLOK(,R14) DECREMENT @V408246 00837000
- BCTR R15,0 OLD OWNER'S COUNT @V408246 00838000
- LTR R15,R15 VMPAGES TO GO NEGATIVE ? @VA07224 00838100
- BM PGS1 YES - TERMINATE CP @VA07224 00838200
- STH R15,VMPAGES-VMBLOK(,R14) @V408246 00839000
- PROUSBA1 DS 0H @VA07798 00839200
- LR R14,R11 NEW OWNER OF PAGE @V408246 00840000
- TM CORFLAG,CORCFLCK FRAME LOCKED? @VA09446 00840100
- BO PROUSBD YES, SKIP UPDATE OF FRAME COUNT @VA09446 00840200
- B PROUSBC @V407511 00841000
- PROUSBB DS 0H @V407511 00842000
- CL R11,CORFPNT THIS PAGE BELONG HERE? @V408246 00843000
- BNE PROUSC @V407511 00844000
- L R14,PAGTSWP+SWPVM-SWPTABLE(,R5) NEW OWNER @VA09446 00844100
- TM CORFLAG,CORCFLCK FRAME LOCKED ?? @VA07798 00844200
- BO PROUSBD YES, SKIP UPDATE OF FRAME COUNT @VA09446 00844450
- LH R15,VMPAGES DECREMENT @V408246 00845000
- S R15,F1 IN-CORE PAGE COUNT @V408246 00846000
- BM PGS1 VMPAGES NEGATIVE - TERMINATE CP @VA07224 00846100
- STH R15,VMPAGES @V408246 00847000
- PROUSBC DS 0H @V407511 00849000
- LA R15,1 INCREMENT @V408246 00850000
- AH R15,VMPAGES-VMBLOK(,R14) IN-CORE PAGE COUNT @V408246 00851000
- STH R15,VMPAGES-VMBLOK(,R14) @V408246 00852000
- PROUSBD DS 0H @VA09446 00852500
- ST R14,CORFPNT UPDATE FRAME OWNERSHIP @VA09446 00853100
- TM CORFLAG,CORRSV RESERVED PAGE? @V408246 00854000
- BZ PROUSC NO @V407511 00855000
- NI CORFLAG,255-CORRSV YES, RESET @V408246 00856000
- L R14,=A(DMKDSPNP) POINTER TO PAGE COUNT @V408246 00857000
- L R15,0(,R14) INCREMENT @V408246 00858000
- AL R15,F1 PAGEABLE PAGE COUNT @V408246 00859000
- ST R15,0(,R14) @V408246 00860000
- L R14,=A(DMKPTRRC) POINTER TO RESERVE COUNT @V408246 00861000
- L R15,0(,R14) DECREMENT @V408246 00862000
- SL R15,F1 RESERVED PAGE COUNT @V408246 00863000
- ST R15,0(,R14) @V408246 00864000
- PROUSC DS 0H @V407511 00865000
- LA R8,8(,R8) NEXT SWAPTABLE ENTRY @V408246 00866000
- A R1,F4096 NEXT VIRTUAL PAGE ADDRESS IN @V408246 00867000
- * THIS SEG. 00868000
- BCT R7,PROUSB PROCESS REST OF SEGMENT @V407511 00869000
- DROP R2,R8 @V408246 00870000
- USING CORTABLE,R7 @V408246 00871000
- L R14,SAVEWRK2 RESTORE RETURN ADDRESS @V407511 00872000
- BR R14 @V407511 00873000
- EJECT 00874000
- *. 00875000
- * 6. SET UP TO RELEASE SHARED SYSTEMS AND 00876000
- * TO RELEASE ALL (IF NOCLEAR NOT SPECIFIED) 00877000
- * PAGES OF THE USER'S VIRTUAL STORAGE SPACE 00878000
- * (ALSO RESET ANY INSTRUCTIONS MODIFIED BY TRACE OR ADSTOP). 00879000
- * 7. SAVE THE ADDR OF LAST PAGE TO RELEASE 00880000
- * IN R2. (PAGOUT CODE IS 00881000
- * JOINED BY PARTIAL PAGE-OUT HERE). 00882000
- * 8. LOCATE THE PAGTABLE AND SWPTABLE FOR THE SEGMENT TO BE 00883000
- * RELEASED; INDEX TO THE CORRECT ENTRY FOR THE 1ST PAGE 00884000
- * 8A IF ENTRY WAS DMKPGSPO, SKIP TO STEP 8C 00885000
- * 8B IF SHRTABLE POINTER NON-ZERO, GO TO STEP 2 00886000
- * 8C IF NOCLEAR SPECIFIED SKIP TO STEP 10 00887000
- * 9. ENQUEUE ON THE PAGE VIA A CALL TO DMKPTRAN; WHEN PAGING 00888000
- * ACTIVITY HAS STOPPED, CONTINUE 00889000
- * 10. IF THE PAGE IS NOT RESIDENT, SKIP TO STEP 11; OTHERWISE, 00890000
- * DECREMENT THE RESIDENT PAGE COUNT, UNCHAIN THE CORTABLE 00891000
- * ENTRY FROM THE USER PAGE LIST, AND CALL DMKPTRFT TO PLACE 00892000
- * THE PAGE ON THE FREE PAGE LIST 00893000
- * 11. IF THE DASD PAGE SLOT IS MARKED READ-ONLY, SKIP TO STEP 12; 00894000
- * OTHERWISE, CALL DMKPGTPR OR DMKPGTSP TO RELEASE THE SLOT 00895000
- * 12. LOOP THROUGH THE REQUESTED NUMBER OF PAGES, AND WHEN 00896000
- * FINISHED, EXIT TO THE CALLER 00897000
- *. 00898000
- PGSPO1 EQU * @V304635 00899000
- NI SAVEWRK1,X'FF'-NOCLEAR CLEAR ALL (CLEAN UP ) @V304735 00900000
- SPACE 2 00901000
- AIF (NOT &TRACE(6)).NOTRA1 00902000
- L R1,VMTREXT ANY TREXT BLOCK THERE ? 00903000
- LTR R1,R1 ... 00904000
- BZ PGOUTA NOPE, NO PROBLEM CHECK FOR ADSTOP@V407511 00905000
- USING TREXT,R1 00906000
- MVC TREXIN1(8),FFS YES, FF'S TO TREXIN1, TREXIN2, AND 00907000
- MVC TREXANSI(4),FFS TREXANSI TO "CLEAR" ANY MODIFIED INSTR. 00908000
- MVI TREXNSI,00 ALSO CLEAR 1ST BYTE OF "TREXNSI" 00909000
- DROP R1 00910000
- .NOTRA1 ANOP 00911000
- PGOUTA DS 0H @V407511 00912000
- L R1,VMADSTOP GET ADDR PREVIOUS ADSTOP BLOCK @V407511 00913000
- LTR R1,R1 DOES ONE EXIST ? 00914000
- BZ PGOUTB NOPE - GO LOAD R2 (NOTE R1=0). @V407511 00915000
- LA R0,2 R0 = SIZE OF ADSTOP DSECT 00916000
- CALL DMKFRET GIVE IT BACK TO FREE STORAGE 00917000
- SLR R1,R1 CLEAR VMADSTOP 00918000
- ST R1,VMADSTOP (AND LEAVE R1=0) 00919000
- PGOUTB DS 0H R1=0 FOR PAGE ZERO 1ST PAGE REL @V407511 00920000
- ST R1,VMTIMER ZERO OUT VIRTUAL INTERVAL TIMER 00921000
- AIF (NOT &VIRREAL).NOVR2 00922000
- C R11,AVMREAL DOES USER OWN VIRT=REAL AREA 00923000
- BNE PGOUTC NO, BRANCH @V407511 00924000
- L R2,F4096 START CLEARING STORAGE AT PAGE 1 00925000
- L R3,=A(DMKSLC-4096) TOTAL NUM. BYTES TO CLEAR 00926000
- SLR R4,R4 ZERO R4 00927000
- SLR R5,R5 ZERO R5 00928000
- MVCL R2,R4 CLEAR ENTIRE AREA 00929000
- B EXIT RETURN TO CALLER @V304635 00930000
- PGOUTC DS 0H CONNECTOR @V407511 00931000
- .NOVR2 ANOP 00932000
- SR R2,R2 CLEAR @V304635 00933000
- IC R2,VMSEG GET NUMBER OF SEGMENT TABLES @V304635 00934000
- LA R2,1(,R2) NOW TO ORIGIN 1 @V304635 00935000
- SLL R2,20 GET ADDR +1 PAGE OF LAST PAGE @V304635 00936000
- BCTR R2,0 ADDRESS OF LAST PAGE 00937000
- SPACE 3 00938000
- USING SWPFLAG,R5 00939000
- USING CORTABLE,R7 00940000
- USING PAGCORE,R9 00941000
- USING SEGTABLE,R3 @V304635 00942000
- SPACE 3 00943000
- PGOUT1 DS 0H @V407511 00944000
- CL R11,AVMREAL DOES USER OWN V=R AREA @V304635 00945000
- BE EXIT IF YES - JUST EXIT @V304635 00946000
- L R3,VMSEG GET SEGMENT TABLE ORIGIN 00947000
- LR R14,R1 GET 1ST PAGE TO RELEASE 00948000
- SRL R14,16 ISOLATE SEGMENT NUMBER @V408246 00949000
- SLL R14,2 GET SEGMENT NUMBER X4 00950000
- LA R3,0(R14,R3) GET SEGMENT TABLE ENTRY 00951000
- SPACE 2 00952000
- PGOUT2 DS 0H RLEASE A SEGMENT @V407511 00953000
- ICM R4,B'0110',SEGPAGE+1 VALID PNTR? @V408246 00954000
- BNZ B2 YES @V408246 00955000
- CLI SEGPAGE+3,SEGINV INVALID STE(NOT BUILT)? @V408246 00956000
- BE NEXTSEG YES, NOTHING TO RELEASE @V408246 00957000
- B2 TM SEGPAGE+3,SEGINV VALID ADDRESS WITH INVALID @V408246 00958000
- * FLAG? 00959000
- BZ PGOUT2A NO @V408246 00960000
- LR R4,R2 SAVE LAST ADDRESS @V408246 00961000
- TRANS 7,1,OPT=(DEFER) ENQUEUE ON SEGMENT @V408246 00962000
- * WILL CLEAR INVALID BIT 00963000
- * AND WAIT FOR ANY MIGRATION TO STOP 00964000
- LR R2,R4 RESTORE LAST ADDRESS @V408246 00965000
- BC 2,NEXTSEG ADDR EXCEP, NOTHING TO RELEASE @V408246 00966000
- TM SAVEWRK1,CALLPO FULL CORE RESET? @V408246 00967000
- BNO PGOUT2 NO, JUST NORMAL PRECAUTIONS @V407511 00968000
- OI SAVEWRK1+3,REPEAT RAISE REPEAT FLAG @V408211 00969000
- B PGOUT2 AND CONTINUE FOR NOW @V407511 00970000
- PGOUT2A DS 0H @V408246 00971000
- SR R10,R10 CLEAR @V304635 00972000
- TM SAVEWRK1,PARTIAL FLAG TO SKIP SHARED SYSTEMS @V304635 00973000
- BO FINSHTBL PROCESSING? YES, THEN SKIP IT @V304635 00974000
- * 00975000
- * CHECK IF THIS SEGMENT IS PART OF A SHARED SYSTEM 00976000
- * IF SO, GOTSHTBL WILL CLEAN UP 00977000
- * 00978000
- L R10,0(R3) GET PAGETABLE ORIGIN @V304635 00979000
- LA R10,0(R10) STRIP LENGTH @V304635 00980000
- S R10,F8 BACKUP TO SHRTABLE POINTER @V304635 00981000
- LR 4,R10 SAVE POINTER TO PAGE TABLE HEADER@V304635 00982000
- L R10,0(R10) GET SHRTABLE POINTER(IF ANY) @V304635 00983000
- LTR R10,R10 IS THIS A NAMED SYSTEM. @V304635 00984000
- BZ FINSHTBL NO - @V304635 00985000
- CLC SHRSEGCT-SHRTABLE(4,R10),F0 IS THIS A SHARED @V304635 00986000
- * NAMED SYSTEM ? 00987000
- BE TESTPUR NO - TEST FOR PURGESYS FUNCTION @V304635 00989000
- TM SAVEWRK1,PURGE RELEASING A NAMED SYSTEM ? @V304635 00990000
- LA R14,FINSHTBL RETURN ADDR FOR NAMED SYSTEM @VA07849 00990100
- BZ GOTSHTBL NO - RELEASING ALL STORAGE @V304635 00991000
- CLC SHRNAME-SHRTABLE(8,R10),SAVER1 DO NAMES MATCH ? @V304635 00992000
- BNE FINSHTBL IF NOT - CONTINUE @V304635 00993000
- TM SAVEWRK1+3,PGVMAFND ALREADY PURGED THIS SYSTEM @V4M0191 00994000
- BO FINSHTBL YES, CONTINUE SCAN @V4M0191 00995000
- B GOTSHTBL RELEASE THIS NAMED SYSTEM @VA07849 00996100
- TESTPUR DS 0H @V4M0214 00998000
- NI SAVEWRK1+3,X'FF'-PGPROCIP-PGVMAFND-NPROTECT @VA13580 00999050
- TM SAVEWRK1,PURGE PURGING A NAMED SYSTEM ? @VA13580 00999250
- BZ CLRSHARE NO, CLEAR SHARE TABLE POINTER @VA13580 00999450
- CLC SHRNAME-SHRTABLE(8,R10),SAVER1 DO NAMES MATCH @VA13580 00999650
- BNE NEXTSEG NO, GET NEXT SEGMENT @VA13580 00999850
- MVI SAVEWRK1+2,NOTINUSE PTE NO LONGER IN USE @VA13580 01000050
- B FINSHTBL CONTINUE RESET OF SHARE SYS IND. @VA13580 01000250
- CLRSHARE EQU * 01000450
- XC 0(4,R4),0(R4) CLEAR SHARE TABLE POINTER @VA13580 01000650
- FINSHTBL EQU * @V304635 01003000
- TM SEGPAGE+3,SEGINV VALID STE? @V408246 01004000
- BO NEXTSEG IF YES - PROCEED TO NEXT @V304635 01005000
- * SEGTABLE ENTRY 01006000
- L R15,SEGPAGE GET PTO @V408246 01007000
- LR R14,R1 GET VIRTUAL ADDRESS @V408246 01008000
- SRL R14,12 . . VIRTUAL PAGE NO. @V408246 01009000
- N R14,F15 (WITHOUT SEGMENT NO.) @V408246 01010000
- ALR R14,R14 PAGE NO. * 2 -> PTE INDEX @V408246 01011000
- LA R9,0(R14,R15) STARTING PTE @V408246 01012000
- SLL R14,2 PAGE NO. * 8 -> SWAPTABLE ENTRY @V408246 01013000
- * INDEX 01014000
- LA R5,16*2+8(R14,R15) STARTING SWAPTABLE ENTRY @V408246 01015000
- TM SAVEWRK1,PURGE RELEASING A NAMED SYSTEM @V304635 01016000
- BZ PGOUT3 NO - RELEASE THIS PAGE (IF @V407511 01017000
- * POSSIBLE) 01018000
- LTR R10,R10 DOES PAGE TABLE BELONG TO NAMED @V304635 01019000
- * SYSTEM ? 01020000
- BZ NEXTSEG NO - PROCESS NEXT SEGTABLE ENTRY @V304635 01021000
- CLC SHRNAME-SHRTABLE(8,R10),SAVER1 DO NAMES MATCH ? @V304635 01022000
- BNE NEXTSEG IF NOT - GET NEXT SEGTABLE ENTRY @V304635 01023000
- OI SAVEWRK1,SYSFND REMEMBER NAMED SYSTEM FOUND. @V304635 01024000
- EJECT 01025000
- PGOUT3 DS 0H RELEASE A PAGE @V407511 01026000
- TM SAVEWRK1,NOCLEAR WAS NOCLEAR SPECIFIED @V304635 01027000
- BO NEXTSEG IF SO, SKIP PAGE RELEASE @V304635 01028000
- BAL R14,RELAPAGE RELEASE THE PAGTABLE IF POSSIBLE @V407511 01029000
- * DETERMINE IF THERE ARE TWO SETS OF PAGE AND SWAP TABLES TO PROCESS. 01029100
- * THERE ARE TWO IF THE MP FEATURE IS INSTALLED AND THE SYSTEM IS 01029200
- * GENERATED FOR AP MODE. 01029300
- TM APSTAT1,MPFEAT IS THE MP FEATURE INSTALLED? @V5BC0AB 01029400
- BNO NEXTSEG NO, DON'T HAVE PGT OF PROCESSOR @V5BC0AB 01029500
- TM SAVEWRK1+3,NPROTECT RUNNING UNPROTECTED @V60BC11 01029530
- BO NEXTSEG YES, DON'T HAVE PAGTABLE TO PROC @V60BC11 01029560
- L R14,PGSSYSAP EST. ADDRESSABILITY TO DMKSYSAP @V5BC0AB 01029600
- CLI 0(R14),YES IS SYSTEM GENED FOR AP? @V5BC0AB 01029700
- BNE NEXTSEG NO, DONT HAVE PGT OF PROCESSOR @V5BC0AB 01029800
- TM SAVEWRK1,PURGE+CALLPO PURGING SYSTEM OR ALL STOR@VA07282 01030500
- BZ NEXTSEG NO, GO PROCESS NEXT SEGMENT @V407511 01031000
- TM SAVEWRK1+3,PGVMAFND RELEASING A SHARED SYSTEM @V407511 01032000
- BZ NEXTSEG NO, GO PROCESS NEXT SEGMENT @V407511 01033000
- STCM R4,B'1000',SEGPAGE RESET PAGTABLE LENGTH @VA07556 01034200
- LA R4,0(,R4) STRIP OFF LENGTH @VA07556 01034400
- TM SAVEWRK1+3,PGPROCIP OLD PGTABLE FOR IPL PROC? @V60B7AA 01038100
- BZ PGOUT3A NO, SET UP FOR IPL PROC @V60B7AA 01039100
- AL R4,DCPAGBMP ADD DISP TO ATTACHED PAGTABLE @V407511 01040000
- B PGOUT3B CONTINUE PROCESSING @V407511 01041000
- PGOUT3A DS 0H @V407511 01042000
- SL R4,DCPAGBMP SUBTRACT DISP TO IPL PROC PGTABLE@V60B7AA 01043100
- PGOUT3B DS 0H @V407511 01044000
- STCM R4,B'0111',SEGPAGE+1 STORE ADDR OTHER PAGTABLE @VA07556 01045200
- LR R5,R4 @V407511 01046000
- SL R5,F16 @V407511 01047000
- LA R5,PAGTSWP+SWPFLAG-SWPTABLE(,R5) @V407511 01048000
- N R1,=X'00FF0000' RESET R1 TO START OF SEGMENT @V407511 01049000
- LR R9,R4 RESET R9 FOR OTHER PAGTABLE @V4M0140 01050000
- BAL R14,RELAPAGE PROCESS OTHER PAGTABLE @V407511 01051000
- NEXTSEG DS 0H @V407511 01052000
- NI SAVEWRK1+3,X'FF'-PGPROCIP-PGVMAFND RESET SHR FLG@V60B7AA 01052300
- LA R3,SEGPAGE+4 POINT TO NEXT STE @V408611 01053000
- N R1,=X'00FF0000' SAVE SEGMENT NUMBER @V304635 01054000
- A R1,=X'00010000' BUMP SEGMENT BY 1 @V304635 01055000
- CR R1,R2 ARE WE WITHIN RANGE OF PAGES @V304635 01056000
- BNH PGOUT2 YES - RELEASE NEXT PAGE @V407511 01057000
- TM SAVEWRK1,PURGE+CALLPO RELEASING SHR-SYSTEM ? @V304635 01058000
- BZ EXIT NO - RETURN TO CALLER @V304635 01059000
- B PURFINSH FINISH WITH PURGESYS FUNCTION @V304635 01060000
- EJECT @V407511 01061000
- RELAPAGE DS 0H @V407511 01062000
- ST R14,SAVEWRK9 SAVE THE RETURN ADDRESS @V407511 01063000
- RELLOOP DS 0H @V407511 01064000
- TM SWPFLAG,SWPSHR IS THIS A SHARED PAGE 01065000
- BO NEXTPAGE YES -- DO NOT RELEASE IT 01066000
- LR R4,R2 SAVE R2 @V304635 01067000
- LA R10,SWPTRANS+SWPALLOC ENQUEUING FLAGS @V408246 01068000
- SLL R10,24 POSITION @V408246 01069000
- N R10,SWPFLAG SAVE ENQUEUE FLAGS @V408246 01070000
- TRANS 7,1,OPT=(DEFER) ENQUEUE ON PAGE @V304635 01071000
- LR R2,R4 RESTORE REG @V304635 01072000
- BC 4,CKRELSE IF PAGE IS NOT RESIDENT, TEST FOR RELEASE 01073000
- BC 2,NEXTPAGE NON EXISTENT - TRY NEXT ONE @V304635 01074000
- LTR R10,R10 WERE ANY ENQUEUING FLAGS PRESENT?@V408246 01075000
- BZ PGRES NO, CONTINUE @V407511 01076000
- CLI SAVEWRK1,CALLPO FULL CORE RESET? @V408246 01077000
- BNE PGRES NO, NO NEED TO SYNCRONIZE @V407511 01078000
- * CALL TO DMKPTR RESULTED IN A DEFER . . . NEED TO SYNCRONIZE 01079000
- * VIRTUAL MEMORY REFERENCES, ESPECIALLY IF THIS CALL IS 01080000
- * FROM LOGOUT 01081000
- PGDFR DS 0H @V407511 01082000
- NI SAVEWRK1+3,X'FF'-REPEAT CLEAR REPEAT FLAG @V408211 01083000
- LA R0,CPEXSIZE GET CORE FOR CPREQUEST BLOCK @V408246 01084000
- CALL DMKFREE @V408246 01085000
- USING CPEXBLOK,R1 @V408246 01086000
- STM R0,R15,CPEXR0 SAVE ALL REGS @V408246 01087000
- LA R0,PGSPO1 RESTART ADDRESS @V408246 01088000
- ST R0,CPEXADD RETURN ADDRESS @V408246 01089000
- CALL DMKSTKCP STACK REQUEST @V408246 01090000
- GOTO DMKDSPCH . . SYNCRONIZE @V408246 01091000
- DROP R1 @V408246 01092000
- EJECT 01093000
- * PAGE IS RESIDENT 01094000
- PGRES DS 0H @V407511 01095000
- SRL R7,8 GET PAGE NUMBER X16 01096000
- A R7,ACORETBL POINT TO CORTABLE ENTRY FOR REAL PAGE 01097000
- TM CORFLAG,CORFREE IS PAGE ALREADY FREE? @VA07076 01097100
- BO NEXTPAGE YES,GO TO NEXT PAGE. @VA07076 01097200
- TM CORFLAG,CORCFLCK PAGE LOCKED BY 'LOCK' COMMAND? @V408246 01098000
- BZ CKRSV NO, CHECK FOR RESERVED @V408246 01099000
- TM SAVEWRK1,UNLOCK DID CALLER SPECIFY 'UNLOCK' @V408246 01100000
- BO UNLCK YES, UNLOCK @V408246 01101000
- TM VMRSTAT,VMLOGOFF IS THE USER LOGGING OFF ? @V408246 01102000
- BO UNLCK YES, UNLOCK ANYWAY @V408246 01103000
- CLI SAVEWRK1+2,NOTINUSE SHARED SEGMENT STILL IN USE?@VMI0075 01103100
- BE UNLCK NO, UNLOCK PAGE SINCE IT'S NOW @VMI0075 01103300
- * NON-SHARED 01103500
- * NO, JUST ZERO PAGE AND LEAVE AS IS 01104000
- * JUST ZERO PAGE AND LEAVE AS IS 01104100
- LR R14,R7 GET ADDRESS OF CORTABLE ENTRY @V408246 01105000
- SL R14,ACORETBL LEAVE ONLY INDEX PORTION @V408246 01106000
- SLL R14,8 FORM FULL PAGE ADDRESS @V408246 01107000
- L R15,F4096 BYTE LENGTH FOR 1 FULL PAGE @V408246 01108000
- ST R1,TEMPR1 SAVE VIRTUAL ADDRESS @V408246 01109000
- SLR R1,R1 COUNT NOT NEEDED FOR 2'ND ADDR. @V408246 01110000
- MVCL R14,R0 BLANK PAGE TO BINARY ZEROES @V408246 01111000
- L R1,TEMPR1 RESTORE VIRTUAL ADDRESS @V408246 01112000
- B CKRELSE CHECK FOR DASD RELEASE @V408246 01113000
- UNLCK DS 0H @V408246 01114000
- LR R4,R2 SAVE R2 @V408246 01115000
- LH R2,PAGCORE PTE @V408246 01116000
- SLL R2,8 DEVELOP REAL PAGE ADDRESS @VA09280 01117100
- N R2,XPAGNUM CLEAR UNWANTED BITS @VA09280 01117600
- CALL DMKPTRUL @V408246 01120000
- LR R2,R4 RESTORE R2 @V408246 01121000
- NI CORFLAG,255-CORCFLCK REMOVE 'LOCK' COMMAND FLAG @V408246 01122000
- C R11,ASYSVM SYSTEM? @V408246 01123000
- BNE *+8 NO @V408246 01124000
- ST R11,CORFPNT YES, MAKE SURE CORRECT @V408246 01125000
- L R14,CORFPNT PAGE'S OWNER @V408246 01126000
- LA R10,1 INCREMENT @V408246 01127000
- AH R10,VMPAGES-VMBLOK(,R14) IN-CORE PAGE COUNT @V408246 01128000
- STH R10,VMPAGES-VMBLOK(,R14) @V408246 01129000
- TM CORFLAG,CORRSV IF RESERVED, ALREADY @V408246 01130000
- * DECREMENTED ONCE 01131000
- BZ UNLKPNP . . INCREMENT DYNAMIC PAGE COUNT @V408246 01132000
- CKRSV DS 0H @V408246 01133000
- TM CORFLAG,CORRSV RESERVED PAGE? @V408246 01134000
- BZ PGOUT4 NO -- @V407511 01135000
- L R14,=A(DMKPTRRC) @V408246 01136000
- L R10,0(,R14) DECREMENT @V408246 01137000
- BCTR R10,0 RESERVED PAGE COUNT @V408246 01138000
- ST R10,0(,R14) @V408246 01139000
- UNLKPNP DS 0H @V408246 01140000
- L R14,=A(DMKDSPNP) @V408246 01141000
- LA R10,1 INCREMENT @V408246 01142000
- A R10,0(,R14) DYNAMIC PAGE COUNT (PAGEABLE @V408246 01143000
- * PAGES) 01144000
- ST R10,0(,R14) @V408246 01145000
- PGOUT4 DS 0H @V407511 01146000
- TM CORFLAG,CORSHARE IS THIS A SHARED PAGE? @V407511 01147000
- BZ PGOUTU NO @V407511 01148000
- L R15,=A(DMKPTRSC) POINTER TO SHARED PAGE COUNTER @V408246 01149000
- L R10,0(,R15) DECREMENT @V408246 01150000
- BCTR R10,0 RESIDENT SHARED PAGE COUNT @V408246 01151000
- ST R10,0(,R15) @V408246 01152000
- PGOUTU DS 0H @V407511 01153000
- L R14,CORFPNT OWNER OF PAGE @V408246 01154000
- TM CORFLAG,CORCFLCK FRAME LOCKED ?? @VA07798 01154200
- BO PGOUTU1 YES, SKIP UPDATE OF FRAME COUNT @VA07798 01154400
- LH R15,VMPAGES-VMBLOK(,R14) DECREMENT @V408246 01155000
- S R15,F1 DECREMENT @V408246 01156000
- BM PGS1 VMPAGES NEGATIVE - TERMINATE CP @VA07224 01156100
- STH R15,VMPAGES-VMBLOK(,R14) @V408246 01157000
- PGOUTU1 DS 0H @VA07798 01157200
- OI VMESTAT-VMBLOK(R14),VMINVPAG FLAG DELAYED PTLB @V408246 01158000
- OI APSTAT2,CPPTLBR INDICATE PTLB REQUIRED @V407511 01159000
- L R10,PREFIXB LOAD PREFIX OF OTHER PROCESSOR @V407511 01160000
- OI APSTAT2-PSA(R10),CPPTLBR PTLB NEED ON OTHER PROC@V407511 01161000
- OI VMESTAT,VMINVPAG NO, INVALIDATE HIM ALSO @V408246 01162000
- B3 XC CORPGPNT(4),CORPGPNT CLEAR POINTER TO PTE @V408246 01163000
- MVC PAGCORE,F8+2 AND INVALIDATE PTE @V408246 01164000
- TM CORFLAG,CORIOLCK PAGE LOCKED FOR I/O? @V408246 01165000
- BZ PGFRET NO, PLACE ON FREE LIST @V407511 01166000
- SR R0,R0 CLEAR @V408246 01167000
- STCM R0,B'0111',CORSWPNT+1 ZERO SWAP TABLE PNTR @V408246 01168000
- NI CORFLAG,255-CORSHARE-CORRSV MAKE SURE CLEAN @V408246 01169000
- B CKRELSE CHECK FOR DASD RELEASE @V408246 01170000
- SPACE 1 01170100
- ABEND 1 VMPAGES TO GO NEGATIVE - TERM CP @VA07224 01170200
- SPACE 1 01170300
- PGFRET DS 0H @V407511 01171000
- CALL DMKPTRFT AND RETURN PAGE TO FREE LIST 01172000
- CKRELSE CL R11,ASYSVM RELEASING SYSTEM STORAGE ? @VM08746 01173000
- BE NEXTPAGE YES - DON'T RELEASE THE DASD @VM08746 01174000
- * SPACE 01175000
- TM SAVEWRK1,PURGE PURGING A NAMED SYSTEM ? @V304635 01176000
- BZ CALLPGS NO - RELEASE THE DASD PAGE @V304635 01177000
- L R10,0(,R3) GET PAGE TABLE @V304635 01178000
- LA R10,0(,R10) LEAVE ONLY 24 BITS FOR ADDRESSING@V304635 01179000
- SL R10,F8 BACK UP TO SHRTABLE POINTER @V304635 01180000
- L R10,0(,R10) GET POINTER TO SHRTABLE POINTER @V304635 01181000
- LTR R10,R10 NAMED SYSTEM ? @V304635 01182000
- BZ NEXTPAGE NO - DON'T RELEASE IT @V304635 01183000
- CLC SHRNAME-SHRTABLE(8,R10),SAVER1 NAMES MATCH ? @V304635 01184000
- BNE NEXTPAGE NO - DON'T RELEASE IT @V304635 01185000
- CALLPGS TM SWPFLAG,SWPRECMP CAN DASD PAGE BE RELEASED ? @V304635 01186000
- BO ZEROSWAP NO - CLEAR SWAPTABLE ENTRY @V304635 01187000
- SPACE 01188000
- L R15,=A(DMKPGTPR) ASSUME NOT FOR SYSTEM VMBLOK @VA04554 01189000
- TM SAVEWRK1,PGTSP IS THE OWNER THE 'SYSTEM' ? @VA04554 01190000
- BZ CALLPGT IF NOT - RELEASE USER PAGE @VA04554 01191000
- L R15,=A(DMKPGTSP) OTHERWISE RELEASE SYSTEM PAGE @VA04554 01192000
- CALLPGT BALR R14,R15 NOW - RELEASE THE DASD PAGE @VA04554 01193000
- SPACE 01194000
- ZEROSWAP EQU * SET CONTENTS AND STORAGE KEYS OF VIRTUAL PAGE = 0 01195000
- TM SAVEWRK1,PARTIAL+PURGE PARTIAL PAGE OUT OR @V304635 01196000
- * PURGE ? 01197000
- BNZ *+10 IF YES - DON'T RESET THE KEYS @V304635 01198000
- XC SWPKEY1(2),SWPKEY1 CLEAR KEYS @V304635 01199000
- XC SWPCYL(4),SWPCYL AND DASD ADDRESS @V304635 01200000
- OI SWPFLAG,SWPRECMP CCPD IS NO GOOD @VA09774 01200500
- NI PAGCORE+1,255-PAGREF RESET REF FLAG @V408246 01201000
- SPACE 01202000
- NEXTPAGE CR R1,R2 ANY PAGES LEFT TO RELEASE @V304635 01203000
- BL CKSEG YES, THEN CHECK FOR END OF SEG @V304635 01204000
- B RELEXIT NO, RETURN TO MAINLINE @VA07849 01204200
- EXIT DS 0H @V408246 01205000
- TM SAVEWRK1+3,REPEAT REPEAT FLAG ON?? @V408211 01206000
- BO PGDFR YES, START AGAIN @V407511 01207000
- TM VMDSTAT,VMINQ IN-Q? @V408246 01208000
- BO EXITA YES, BYPASS CORE RESET @V408246 01209000
- CALL DMKPTRRS CORE RESET FUNCTION @VA07241 01210100
- EXITA DS 0H @V408246 01212000
- CLI SAVEWRK1+1,CC0 SET CC FOR CALLER @V408211 01213000
- EXIT @V408246 01214000
- EJECT 01215000
- CKSEG EQU * HERE TO TEST FOR END OF SEGMENT 01216000
- CLM R1,B'0010',SEGPAGE TEST FOR LAST PAGE @V408246 01217000
- BNL CKNAMSEG YES - NOW TEST FOR NAMED SEGMENT @V304635 01218000
- A R1,F4096 BUMP VIRTUAL PAGE ADDRESS @V304635 01219000
- LA R9,2(,R9) POINT TO NEXT PTE 01220000
- LA R5,8(,R5) POINT TO NEXT SWPTABLE ENTRY 01221000
- B RELLOOP AND CONTINUE CLEARING THIS SEG @V407511 01222000
- SPACE 2 01223000
- CKNAMSEG DS 0H @VA07556 01224200
- TM SAVEWRK1,SYSFND PURGING A SHARED SYSTEM @VA07556 01224400
- BZ RELEXIT1 IF NOT - CONTINUE @V407511 01225000
- CLI SAVEWRK1+2,NOTINUSE PAGTABLE STILL IN USE @VA07849 01225200
- BNE RELEXIT1 YES, CANNOT RELEASE PAGTABLE @VA07849 01225400
- L R14,SEGPAGE-SEGPAGE(,R3) GET PAGE TABLE @V304635 01226000
- N R14,CLCNTINV CLEAR ANY UNWANTED BITS @V408211 01227000
- SL R14,F8 POINT TO PAGE HEADER @V304635 01228000
- L R10,0(,R14) GET POINTER TO SHRTABLE @V304635 01229000
- LTR R10,R10 IS THERE ONE ? @V304635 01230000
- BZ RELEXIT1 NO, RETURN @VA07849 01231100
- XC 0(4,R14),0(R14) CLEAR SHRTBL PTR IN PAGE TABLE @VA13580 01231200
- STM R1,R2,SAVEWRK3 SAVE FOR LATER @V408246 01235000
- LA R14,SEGINV INVALID FLAG @V408246 01236000
- L R1,SEGPAGE-SEGPAGE(,R3) GET STE @V408246 01237000
- ST R14,SEGPAGE-SEGPAGE(,R3) INVALID STE @V408246 01238000
- N R1,CLINVBIT CLEAR INVALID BIT @V408211 01239000
- LR R4,R1 SAVE ORIGINAL PAGTABLE ADDR @V407511 01240000
- CALL DMKBLDRL,PARM=PAGTONLY @V408246 01241000
- LM R1,R2,SAVEWRK3 RESTORE @V408246 01242000
- RELEXIT DS 0H @V407511 01243000
- L R14,SAVEWRK9 RESTORE RETURN ADDRESS @V407511 01244000
- BR R14 RETURN TO CALLER @V407511 01245000
- RELEXIT1 DS 0H @V407511 01246000
- SLR R4,R4 INDICATE TO SKIP TO NEXT SEGMENT @V407511 01247000
- B RELEXIT RETURN TO CALLER @V407511 01248000
- SPACE 2 01249000
- SPACE 3 01250000
- DS 0F 01251000
- SPACE 1 01252000
- * PARMS USED IN SAVEWRK1 01253000
- PARTIAL EQU X'80' DO NOT RELEASE SHARED SEGMENTS @V304635 01254000
- NOCLEAR EQU X'40' DO NOT CLEAR STORAGE @V304635 01255000
- PURGE EQU X'20' PURGE THE NAMED SYSTEM PASS IN @V304635 01256000
- * R1-R2 01257000
- SYSFND EQU X'10' NAMED SYSTEM WAS FOUND @V304635 01258000
- CALLPO EQU X'08' ENTERED BY CALL TO DMKPGSPO @V304635 01259000
- SYSFRET EQU X'04' FRET THE SHRTABLE @V304635 01260000
- UNLOCK EQU X'02' UNLOCK 'LOCKED' PAGES @V304735 01261000
- PGTSP EQU X'01' OWNER = SYSTEM; CALL DMKPGTSP @VA04554 01262000
- SPACE 1 @V407511 01263000
- * CONDITION CODE SETTING FOR SAVEWRK1+1 @V407511 01264000
- CC1 EQU X'01' CONDITION CODE ONE - ERROR @V407511 01265000
- CC0 EQU X'00' CONDITION CODE ZERO - NORMAL @V407511 01266000
- SPACE 1 @V407511 01267000
- * FLAGS USED IN SAVEWRK1+2 01268000
- INUSE EQU X'00' SHARED SYSTEM IS STILL IN USE @V407511 01269000
- NOTINUSE EQU X'01' SHARED SYSTEM NO LONGER IN USE @V407511 01270000
- INITPASS EQU X'02' INITIAL PASS VALUE @V407511 01271000
- SPACE 1 @V407511 01272000
- * FLAGS USED IN SAVEWRK1+3 @V407511 01273000
- REPEAT EQU X'80' REPEAT PROCESSING @V407511 01274000
- PGPROCIP EQU X'40' ENTERED ON THE IPL PROCESSOR @V60B7AA 01275100
- PGVMAFND EQU X'20' VMABLOK FOUND FOR NAMED SYSTEM @V407511 01276000
- NPROTECT EQU X'10' RUNNING UNPROTECTED SYSTEM @V60BC11 01276100
- SPACE 1 @V407511 01277000
- YES EQU C'Y' @V5BC0AB 01277100
- * MODULE DECLARES @V407511 01278000
- DCPAGBMP DC A(PAGBMP) DISPLACEMENT FOR SHARED PAGTABLES @V407511 01279000
- * 01280000
- UPDTACT DC X'00010000' MASK USED FOR INCREMENTING AND @V407511 01281000
- * DECREMENTING PAGACT COUNTER @V407511 01282000
- CLCNTINV DC X'00FFFFFE' CLEAR COUNT AND INVALID BITS @V407511 01283000
- * IN SEGMENT TABLE ENTRIES @V407511 01284000
- CLINVBIT DC X'FFFFFFFE' CLEAR INVALID BIT @V407511 01285000
- DS 0F 01285010
- PGSSYSAP DC V(DMKSYSAP) PTR TO AP= VALUE FROM SYSCOR @V5BC0AB 01285110
- SPACE 01286000
- LTORG 01287000
- EJECT 01288000
- COPY SHRTABLE 01289000
- COPY IOBLOKS 01290000
- COPY SYSTBL 01291000
- COPY RBLOKS 01292000
- COPY DEVTYPES @VA04554 01293000
- COPY ALLOC @VA04554 01294000
- COPY CORE 01295000
- COPY VMBLOK 01296000
- COPY MICBLOK @V3M5014 01297000
- COPY TREXT 01298000
- COPY SAVE 01299000
- PSA 01300000
- COPY EQU 01301000
- END DMKPGS @V200820 01302000
ibm/vm370-lib/cp/dmkpgs.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator