CPP TITLE 'DMKCPP (CP) VM/370 - RELEASE 6' 00100000 PUNCH ' SPB' 00200000 ISEQ 73,80 00300000 SPACE 2 00400000 *. 00500000 * MODULE NAME - 00600000 * 00700000 * DMKCPP 00800000 * 00900000 * FUNCTION - 01000000 * 01100000 * 1. TO RELEASE ALL RESOURCES NECESSARY FOR AN AP 01200000 * ENVIRONMENT. 01300000 * 2. TO REVERT TO A UNIPROCESSOR ENVIRONMENT. 01400000 * 01500000 * ATTRIBUTES - 01600000 * 01700000 * REENTRANT, PAGEABLE, CALLED VIA SVC 01800000 * 01900000 * ENTRY POINTS - 02000000 * 02100000 * DMKCPPUP - TO CAUSE AN AP SYSTEM TO REVERT TO A UP SYSTEM. 02200000 * 02300000 * ENTRY CONDITIONS - 02400000 * 02500000 * GPR 11 = ADDRESS OF VMBLOK 02600000 * GPR 12 = ADDRESS OF ENTRY POINT 02700000 * GPR 13 = ADDRESS OF SAVEAREA 02800000 * 02900000 * EXIT CONDITIONS - 03000000 * 03100000 * 03200000 * NORMAL - 03300000 * GPR1 WILL CONTAIN ZEROES. 03400000 * 03500000 * ERROR - 03600000 * GPR1 WILL CONTAIN THE ERROR MESSAGE NUMBER. 03700000 * 03800000 * CALLS TO OTHER ROUTINES - 03900000 * 04000000 * DMKCVTBH - TO CONVERT BINARY TO PRINTABLE FORM 04100000 * DMKPTRFT - TO RETURN PAGES TO THE FREE PAGE LIST 04200000 * DMKPTRUL - TO UNLOCK THE SYSTEM NAME TABLE 04300000 * DMKVMASW - TO SWITCH SHARED SEGMENT POINTERS 04400000 * DMKPGTSP - TO RELEASE A DASD PAGE ASSIGNED TO SYSTEM 04500000 * DMKFREE - TO GET STORAGE FOR NON-SHARED PAGE AND SWAP TABLES 04600000 * DMKFRET - TO RELEASE STORAGE 04700000 * DMKPTRPW - TO WAIT UNTIL I/O IS COMPLETE FOR A VIRTUAL MACHINE 04800000 * DMKSTKCP - TO STACK A REQUEST 04900000 * DMKSCNVS - TO GET A DEVICE BLOCK 05000000 * DMKDSPCH - TO RETURN TO DISPATCHER 05100000 * 05200000 * EXTERNAL REFERENCES - 05300000 * 05400000 * DMKDSPNP - NUMBER OF DYNAMICALLY ASSIGNABLE PAGE FRAMES 05500000 * DMKPTRRC - NUMBER OF RESIDENT, RESERVED PAGES 05600000 * DMKVMAS1 - ANCHOR FOR SHARED SYSTEMS (SHRTABLE POINTER) 05700000 * DMKPTRSC - NUMBER OF RESIDENT SHARED PAGES 05800000 * DMKSYSOW - ADDRESS OF THE DEVICE OWNED LIST 05900000 * DMKMCTVM - ADDRESS OF USER TO BE TERMINATED BY DMKMCT 06000000 * DMKMCTPF - ADDRESS OF OTHER PROCESSOR'S PSA PAGE 06020000 * DMKMCTFL - DMKMCT'S FLAG BYTES 06040000 * DMKSCHTQ - POINTER TO TOD CLOCK COMPARATOR REQUEST QUEUE 06060000 * DMKSNTBL - POINTER TO THE SYSTEM NAME TABLE 06100000 * DMKFREAP - POINTER TO BACK POCKET FOR DMKFRE IN AP MODE 06200000 * DMKDMPMA - THE MAIN PROCESSOR'S ADDRESS 06300000 * DMKDMPAA - THE ATTACHED PROCESSOR'S ADDRESS 06400000 * DMKDMPSA - POINTER TO THE PSA ADDRESSES 06500000 * DMKSCHCA - SCHEDULER ATTACHED PROCESSOR WAIT VALUES 06600000 * DMKEXTST - ADDRESS OF THE STOPPED PROCESSOR 06700000 * DMKPAGWS - ATTACHED PROCESSOR PAGE WAIT SAVE VALUE 06800000 * DMKLOKSY - GLOBAL SYSTEM LOCKWORD 06900000 * DMKLOKDS - DSP QUEUES LOCKWORD 06920000 * DMKLOKTR - TRQ LOCKWORD 06940000 * DMKLOKRL - RUN LIST LOCKWORD 06960000 * DMKLOKFR - FREE STORAGE LOCKWORD 06980000 * DMKSCHCU - SCHEDULER MAIN PROCESSOR WAIT VALUE 07000000 * DMKDSPRQ - DISPATCHER'S QUEUE OF CPEXBLOKS 07100000 * 07200000 * OPERATION - 07300000 * 07400000 * SEE BELOW 07500000 * 07600000 * TABLES / WORKAREAS - 07700000 * 07800000 * CORTABLE, SWPTABLE, PAGTABLE, SEGTABLE, SHRTABLE 07900000 * 08000000 * REGISTER USAGE - 08100000 * 08200000 * GPR0-10 = SCRATCH 08300000 * GPR11 = VMBLOK BASE 08400000 * GPR12 = DMKCPP BASE 08500000 * GPR13 = SAVEAREA BASE 08600000 * GPR14 = EXTERNAL LINKAGE 08700000 * GPR15 = EXTERNAL LINKAGE 08800000 * 08900000 * NOTES - 09000000 * NONE 09100000 * 09200000 * MESSAGES - 09300000 * 09400000 * DMKCPP623I CHANNEL SET CONNECTED TO PROCESSOR NN 09500000 * 09600000 * WAIT STATES - 09700000 * CODE X'016' - THE CHANNEL SET SWITCHING FACILITY HAS FAILED 09800000 * CODE X'019' - THE OTHER PROCESSOR IS STILL RUNNING, AND 09900000 * CANNOT BE STOPPED TO ENTER UNIPROCESSOR MODE 09950000 * 10000000 * ABENDS - 10100000 * CPP001 - VMPAGES HAS JUST GONE NEGATIVE 10200000 * CPP002 - A NAMED SYSTEM WAS NOT FOUND IN DMKSNT 10300000 * 10400000 * 10500000 * 10600000 * 10700000 EJECT 10800000 COPY OPTIONS 10900000 COPY LOCAL OPTIONS 11000000 DMKCPP CSECT 11100000 EXTRN DMKSYSOW @V5BC0AB 11200000 EXTRN DMKLOKSY @V5BC0AB 11300000 EXTRN DMKLOKDS @VA12934 11320000 EXTRN DMKLOKTR @VA12934 11340000 EXTRN DMKLOKRL @VA12934 11360000 EXTRN DMKLOKFR @VA12934 11380000 EXTRN DMKSCHTQ @V5BC0AB 11400000 EXTRN DMKPTRFT @V5BC0AB 11500000 EXTRN DMKCVTBH @V5BC0AB 11600000 EXTRN DMKMCTVM @VA12934 11700000 EXTRN DMKMCTPF @VA12934 11720000 EXTRN DMKMCTFL @VA12934 11740000 EXTRN DMKPGTSP @VA12934 11760000 EXTRN DMKPTRSC @V5BC0AB 11800000 EXTRN DMKDSPNP @V5BC0AB 11900000 EXTRN DMKPTRPW @V5MH002 12000000 EXTRN DMKVMASW @V5BC0AB 12100000 EXTRN DMKPTRRC @V5BC0AB 12200000 EXTRN DMKSCHCU @VMV0008 12300000 EXTRN DMKSCHCA @VMH0008 12400000 EXTRN DMKPAGWS @VMV0007 12500000 EXTRN DMKFRET @V5BC0AB 12600000 EXTRN DMKFREE @V5BC0AB 12700000 EXTRN DMKDMPMA @V5BC0AB 12800000 EXTRN DMKDMPAA @V5BC0AB 12900000 EXTRN DMKDMPSA @V5BC0AB 13000000 EXTRN DMKFREAP @V5BC0AB 13100000 EXTRN DMKVMAS1 @V5BC0AB 13200000 EXTRN DMKSCNVS @V5BC0AB 13300000 EXTRN DMKSNTBL @V5BC0AB 13400000 EXTRN DMKPTRUL @V5BC0AB 13500000 EXTRN DMKDSPRQ @VA09324 13600000 EXTRN DMKSTKCP @VA09324 13700000 EXTRN DMKEXTST @VA10010 13800000 EJECT 13900000 MODID DC CL8'DMKCPP ' MODULE NAME @V5BC0AB 14000000 SPACE 2 14100000 USING PSA,R0 @V5BC0AB 14200000 SPACE 14300000 USING VMBLOK,R11 @V5BC0AB 14400000 SPACE 14500000 USING SAVEAREA,R13 @V5BC0AB 14600000 SPACE 14700000 EJECT 14800000 * SUBROUTINE NAME - 14900000 * 15000000 * DMKCPPUP 15100000 * 15200000 * FUNCTION - 15300000 * 15400000 * 1. TO RELEASE ALL RESOURCES NECESSARY FOR AN AP ENVIRONMENT. 15500000 * 2. TO REVERT TO THE UNIPROCESSOR ENVIRONMENT. 15600000 * 15700000 * ENTRY CONDITIONS - 15800000 * 15900000 * GPR11 = ADDRESS OF VMBLOK OF VIRTUAL MEMORY'S OWNER 16000000 * GPR12 = ADDRESS OF ENTRY POINT 16100000 * GPR13 = ADDRESS OF SAVEAREA 16200000 * 16300000 * OPERATION OF DMKCPPUP - 16400000 * 16500000 * 1. SET ALL CPEXBLOKS ON DMKDSPRQ FOR THE REMAINING 16600000 * PROCESSOR, THEN STACK A CPEXBLOK TO COME 16700000 * BACK TO DMKCPPOI. GO TO THE DISPATCHER. UPON RETURN, 16800000 * LOCK EACH VMBLOK AND CALL DMKVMASW TO SWITCH THE 16900000 * SHARED SEGMENT POINTERS. 17000000 * 2. SYNCHRONIZE VMTTIME FOR EACH VIRTUAL MACHINE. 17100000 * 3. CALL DMKFRET TO FREE EACH DEFERRED EXECUTION BLOCK, 17200000 * PROVIDED IT IS NOT STACKED. 17300000 * 4. FREE ALL THE REMAINING AP RELATED CONTROL BLOCKS. 17400000 * 5. SET THE CLOCK COMPARATOR VALUE TO THAT OF THE FIRST ELEMENT 17500000 * ON THE QUEUE. 17600000 * 6. WHILE PRESERVING ABSOLUTE ZERO MAINTAINED FIELDS, COPY THE 17700000 * CURRENT PSA INTO THE ABSOLUTE ZERO PSA. 17800000 * 7. STOP PREFIXING. 17900000 * 8. SET APUOPER TO ZERO. 18000000 * 9. CHECK DMKMCT'S FLAG FIELD TO SEE IF DMKMCTFS HAS 18100000 * BEEN ENTERED. IF NOT, FREE THE PSA PAGES. IF SO, 18120000 * COMMUNICATION BETWEEN THE PROCESSORS HAS FAILED. 18140000 * DO NOT RELEASE THE PSA PAGE FOR THE OTHER 18160000 * PROCESSOR SINCE IT MAY STILL BE RUNNING. 18180000 * 10. FREE UP THE PAGES AND DASD SLOTS HELD BY THE ATTACHED 18200000 * PROCESSOR'S SET OF PAGE AND SWAP TABLES FOR SHARED 18300000 * SEGMENTS (WHEN POSSIBLE). 18400000 * 11. IF THE SWPRECMP FLAG IS ZERO IN AT LEAST ONE SWAP TABLE 18500000 * ENTRY, REINITIALIZE THE SWAP TABLES WITH THE ORIGINAL 18600000 * CCPD'S USING DMKSNTBL. 18700000 * 12. RETURN TO THE CALLER. 18800000 * 18900000 * 19000000 SPACE 2 19100000 DMKCPPUP RELOC @V5BC0AB 19200000 TM APSTAT1,PROCIO RUNNING ON MAIN PROCESSOR? @V60B7AB 19300000 BO CPPPROCG YES, BRANCH @V60B7AB 19400000 LH R1,CSADDR GET CHANNEL SET ADDRESS @V60B7AB 19500000 SPACE 19600000 * DISCS 0(R1) DISCONNECT FROM MAIN PROCESSOR @V60B7AB 19700000 DC X'B2011000' @V60B7AB 19800000 SPACE 19900000 BZ CONNECTC BRANCH IF DISCONNECT COMPLETED @V60B7AB 20000000 TM APSTAT4,POFFLINE PROCESSING AN OFFLINE COMMAND? @V60B7AB 20100000 BNO WAIT016 NO, BRANCH @V60B7AB 20200000 SPACE 20300000 SIGNAL START START THE MAIN PROCESSOR @V60B7AB 20400000 SPACE 20500000 SIGNAL RESUME SIGNAL THE MAIN PROCESSOR TO RESUME @V60B7AB 20600000 SPACE 20700000 B ERCPP192 ISSUE DMKCPU192E @V60B7AB 20800000 CONNECTC DS 0H @V60B7AB 20900000 OI APSTAT1,PROCIO INDICATE THIS IS THE I/O PROC. @V60B7AB 21000000 L R15,PREFIXB ADDRESS OTHER PROCESSOR'S PSA @V60B7AB 21100000 NI APSTAT1-PSA(R15),X'FF'-PROCIO SET PROCIO TO 0 @V60B7AB 21200000 SPACE 21300000 * CONCS 0(R1) CONNECT THE CHANNEL SET @V60B7AB 21400000 DC X'B2001000' @V60B7AB 21500000 SPACE 21600000 BZ CPPPROCF BRANCH, IF CONNECT SUCCESSFUL @V60B7AB 21700000 SPACE 21800000 WAIT016 LPSW CPWAIT16 LOAD WAIT STATE CODE X'016' @V60B7AB 21900000 SPACE 22000000 CPPPROCF DS 0H @V60B7AB 22100000 LCTL C2,C2,FFS ENABLE FOR I/O INTERRUPTS @VMV0002 22200000 LH R1,IPUADDR GET PROCESSOR ADDRESS @V60B7AB 22300000 CALL DMKCVTBH CONVERT PROC ADDRESS TO PRINTABLE FORM @V60B7AB 22400000 STCM R1,B'0011',CPPID623 MOVE IN PROCESSOR ADDRESS @V60B7AB 22500000 LA R0,CPP623LN GET LENGTH OF MESSAGE @V60B7AB 22600000 LA R1,CPP623MG GET ADDRESS OF MESSAGE TEXT @V60B7AB 22700000 CALL DMKQCNWT,PARM=NORET+OPERATOR @VA12934 22800000 CPPPROCG DS 0H @V60B7AB 22900000 SR R4,R4 ZERO REGISTER 4 @VA09324 23000000 SCNDSPRQ DS 0H @VA09324 23100000 L R15,CPPDSPRQ GET ADDRESS OF QUEUE ANCHOR @VA09324 23200000 C R15,CPEXFPNT-CPEXBLOK(,R15) IS QUEUE EMPTY? @VA09324 23300000 BE OFFCONT YES, BRANCH @VA09324 23400000 LR R1,R15 SAVE IN REGISTER 1 @VA09324 23500000 SPACE 1 23600000 USING CPEXBLOK,R1 @VA09324 23700000 SPACE 1 23800000 NXTCPXBK DS 0H @VA09324 23900000 L R1,CPEXFPNT GET NEXT CPEXBLOK POINTER @VA09324 24000000 CR R1,R15 AT END OF QUEUE? @VA09324 24100000 BE STACKCPX YES, GO STACK A CPEXBLOK TO RETURN @VA09324 24200000 MVC CPEXPROC,LPUADDR MAKE IT FOR THIS PROCESSOR @VA09324 24300000 B NXTCPXBK GO DO NEXT CPEXBLOK IN QUEUE @VA09324 24400000 STACKCPX DS 0H @VA09324 24500000 LTR R4,R4 HAS DMKDSPRQ BEEN DRAINED ONCE? @VA09324 24600000 BNZ OFFCONT YES, BRANCH @VA09324 24700000 L R9,ASYSVM ADDRESS OF SYSTEM VMBLOK @VA09324 24800000 L R14,PREFIXB ADDRESS OF OTHER PROC'S PSA @VA09324 24900000 L R15,LASTUSER-PSA(R14) LASTUSER VMBLOK ADDRESS @VA09324 25000000 ST R4,VMLOCK-VMBLOK(R15) UNLOCK VMBLOK @VA09324 25100000 ST R9,LASTUSER-PSA(R14) LASTUSER EQUALS ASYSVM @VA09324 25200000 LA R0,CPEXSIZE GET SIZE OF A CPEXBLOK @VA09324 25300000 CALL DMKFREE GET STORAGE @VA09324 25400000 STM R0,R15,CPEXREGS SAVE REGISTERS IN THE CPEXBLOK @VA09324 25500000 LA R15,DMKCPPOI GET RETURN ADDRESS @VA09324 25600000 ST R15,CPEXADD SAVE IN CPEXBLOK @VA09324 25700000 SPACE 1 25800000 DROP R1 25900000 SPACE 1 26000000 CALL DMKSTKCP GO STACK THE CPEXBLOK @VA09324 26100000 GOTO DMKDSPCH GO TO THE DISPATCHER @VA09324 26200000 DMKCPPOI DS 0H @VA09324 26300000 L R4,F4 INDICATE DMKDSPRQ WAS DRAINED @VA09324 26400000 B SCNDSPRQ GO SET ALL REQUESTS TO THIS PROCESSOR @VA09324 26500000 OFFCONT DS 0H @VA09324 26600000 MVC SAVEWRK8(1),ZEROES CLEAR FLAG BYTE @V5BC0AB 26700000 L R11,ASYSVM GET ADDRESS OF SYSTEM VMBLOK @V5BC0AB 26800000 CHARGE SYNC SYNCHRONIZE VMTTIME FOR THE SYSTEM VMBLOK @VMH0025 26900000 L R11,VMPNT GET FIRST VMBLOK ADDR IN CYCLIC CHAIN X27000000 @V5BC0AB 27100000 LR R10,R11 SAVE ENDING ADDRESS @V5BC0AB 27200000 SR R9,R9 CLEAR A REGISTER @V5BC0AB 27300000 LOOP DS 0H @V5BC0AB 27400000 L R1,=A(DMKMCTVM) ADDRESS OF USER TO BE TERMINATED@VA12934 27410000 * BY DMKMCT 27420000 C R11,0(R1) IS THIS USER GOING TO BE @VA12934 27430000 * TERMINATED BY DMKMCT? 27440000 BE NXTVM YES, DON'T CHANGE HIS VMBLOK @VA12934 27450000 LR R1,R11 GET VMBLOK ADDRESS IN REGISTER 1 @V5BC0AB 27500000 ST R9,VMLOCK YES, CLEAR LOCK WORD @V5BC0AB 27600000 GETLOCK DS 0H @V5BC0AB 27700000 LOCK OBTAIN,TYPE=VMBLOK,SPIN=NO LOCK THIS VMBLOK @V5BC0AB 27800000 TM VMOSTAT,VMSHR VIRTUAL MACHINE RUNNING SHARED SEGMENTS? X27900000 @V5BC0AB 28000000 BZ LOOPVMOF NO, CHECK FOR DEFERRED TASK @V5BC0AB 28100000 CLC VMSHRPRC,LPUADDR+1 POINTING TO THIS PROCESSORS SHARED X28200000 @V5BC0AB 28300000 * SEGMENTS 28400000 BE LOOPVMOF YES, NO NEED TO SWITCH CHECK DEFERRED X28500000 TASK @V5BC0AB 28600000 CALL DMKVMASW SWITCH TO THIS PROCESSORS SHARED X28700000 SEGMENTS 28800000 LOOPVMOF DS 0H @V5BC0AB 28900000 CHARGE SYNC SYNCHRONIZE VMTTIME @V5BC0AB 29000000 LA R0,CPEXSIZE @V5BC0AB 29100000 L R1,VMDFTPNT GET ADDR OF DEFER EXEC.BLOCK @VA11422 29200000 LTR R1,R1 IS THERE ONE TO FREE? @VA11422 29300000 BZ ZEROLOCK NO, CONTINUE @VA11422 29400000 CALL DMKFRET FREE THE STORAGE @V5BC0AB 29500000 ST R9,VMDFTPNT ZERO DEFER EXECUTION BLOCK ADDRESS @VMH0026 29600000 ZEROLOCK DS 0H @VA11422 29700000 ST R9,VMLOCK ZERO VMBLOK LOCK WORD @VMH0026 29800000 NXTVM DS 0H @VA12934 29850000 L R11,VMPNT GET ADDRESS OF NEXT VMBLOK @V5BC0AB 29900000 CR R11,R10 END OF CHAIN? @V5BC0AB 30000000 BNE LOOP NO, DO ALL VMBLOKS @V5BC0AB 30100000 SPACE 30200000 * FREE ALL THE AP RELATED CONTROL BLOCKS 30300000 * FREE BACK POCKET FOR DMKFRE 30400000 SR R0,R0 CLEAR A REGISTER @V5BC0AB 30500000 L R10,CPPFREAP GET PTR TO FREE BACK POCKET ADDRESS X30600000 @V5BC0AB 30700000 IC R0,0(R10) GET SIZE IN DOUBLE WORDS @V5BC0AB 30800000 ICM R1,B'0111',1(R10) GET ADDRESS OF BACK POCKET @V5BC0AB 30900000 CALL DMKFRET FREE THE STORAGE @V5BC0AB 31000000 SR R0,R0 CLEAR A REGISTER @V5BC0AB 31100000 STCM R0,B'0111',1(R10) ZERO THE BACK POCKET ADDRESS @V5BC0AB 31200000 * FREE THE CPEXBLOK FOR THE SWITCH MACRO 31300000 LA R0,CPEXSIZE GET SIZE OF A CPEXBLOK @V5BC0AB 31400000 L R1,PREFIXA ADDRESS ABSOLUTE ZERO PSA @V5BC0AB 31500000 L R1,PSACPXBP-PSA(,R1) GET THE ADDRESS OF THE CPEXBLOK X31600000 @V5BC0AB 31700000 CALL DMKFRET FREE THE STORAGE @V5BC0AB 31800000 MVC PSACPXBP(4),ZEROES CLEAR THE CPEXBLOK ADDRESS @V5BC0AB 31900000 SPACE 32000000 * FREE THE MACHINE CHECK CPEXBLOK 32100000 SPACE 32200000 USING MCHAREA,R5 @V5BC0AB 32300000 SPACE 32400000 L R7,PREFIXB ADDRESS OTHER PROCESSOR'S PSA @V5BC0AB 32500000 L R5,AMCHAREA-PSA(,R7) GET ADDRESS OF MACHINE CHECK AREA X32600000 @V5BC0AB 32700000 L R1,MCHCPEX GET ADDRESS OF CPEXBLOK @V5BC0AB 32800000 LA R0,CPEXSIZE GET SIZE OF THE CPEXBLOK @V5BC0AB 32900000 CALL DMKFRET FREE THE STORAGE @V5BC0AB 33000000 * FREE THE MACHINE CHECK RECORD FOR THE PROCESSOR GOING OFFLINE 33100000 SPACE 33200000 L R1,MCHREC GET ADDRESS OF MACHINE CHECK RECORD X33300000 @V5BC0AB 33400000 SR R9,R9 ZERO REGISTER 9 @V5BC0AB 33500000 LH R9,CPUMCELL(R7) COMPUTE LENGTH OF MCHREC. ADD LENGTH X33600000 @V5BC0AB 33700000 * OF EXTENDED LOGOUT AREA 33800000 LA R6,MCHLEN1 PLUS LEN OF DAMAGE ASSESSMENT AREA X33900000 @V5BC0AB 34000000 LA R0,MCHFIX(R9,R6) CALCULATE TOTAL LENGTH @V5BC0AB 34100000 A R0,F7 GET LENGTH ON A DOUBLE WORD BOUNDARY X34200000 @V5BC0AB 34300000 SRL R0,3 DIVIDE BY 8 @V5BC0AB 34400000 CALL DMKFRET FREE THE STORAGE @V5BC0AB 34500000 SPACE 34600000 DROP R5 @V5BC0AB 34700000 SPACE 34800000 L R10,=A(DMKSCHTQ) @V5BC0AB 34900000 SPACE 35000000 USING TRQBLOK,R10 @V5BC0AB 35100000 SPACE 35200000 L R10,TRQBFPNT GET FIRST ELEMENT ON QUEUE @V5BC0AB 35300000 C R10,ACTIVTRQ POINTING TO TOP TRQ @V5BC0AB 35400000 BE PSAMOVE YES, CONTINUE @V5BC0AB 35500000 ST R10,ACTIVTRQ POINT TO TOP TRQ @V5BC0AB 35600000 SCKC TRQBVAL SET CLOCK COMPARATOR @V5BC0AB 35700000 SPACE 35800000 DROP R10 @V5BC0AB 35900000 SPACE 36000000 * THE FOLLOWING CODE MOVES ALL OF THE FIELDS MAINTAINED IN THE ABSOLUTE 36100000 * ZERO PSA TO THE CURRENT PSA. THEN THE CURRENT PSA IS COPIED INTO 36200000 * THE ABSOLUTE ZERO PSA. THE PSAS ARE FRETTED, AND PREFIXING IS 36300000 * STOPPED. 36400000 * 36500000 SPACE 36600000 PSAMOVE DS 0H @V5BC0AB 36700000 L R2,PREFIXA ADDRESS THE ABSOLUTE ZERO PSA @V5BC0AB 36800000 MVC TTSEGCNT(4),TTSEGCNT-PSA(R2) @V5BC0AB 36900000 MVC PAGERATE(2),PAGERATE-PSA(R2) @V5BC0AB 37000000 MVC CPID(4),CPID-PSA(R2) @V5BC0AB 37100000 MVC TRACSTRT(12),TRACSTRT-PSA(R2) COPY TRACSTRT, TRACEND, X37200000 @V5BC0AB 37300000 * AND TRACCURR 37400000 MVC PAGECUR(16),PAGECUR-PSA(R2) COPY @VA09843 37500000 * PAGECUR,PAGENXT, 37600000 * MONNEXT,PAGEND 37700000 MVC CPAPRINP(1),CPAPRINP-PSA(R2) COPY APR IN PROCESS@VA12934 37730000 * INDICATOR 37760000 SR R14,R14 ADDRESS CURRENT PSA @V5BC0AB 37800000 L R15,F4096 GET FROM MVCL LENGTH @V5BC0AB 37900000 L R3,F4096 GET TO MVCL LENGTH @V5BC0AB 38000000 * REGISTER HAS THE TO MVCL ADDRESS 38100000 MVCL R2,R14 COPY CURRENT PSA TO ABSOLUTE ZERO PSA X38200000 @V5BC0AB 38300000 SPACE 38400000 SPX ZEROES STOP PREFIXING @V5BC0AB 38500000 SPACE 38600000 MVC PREFIXA(8),ZEROES SET PREFIXA AND PREFIXB TO ZEROES X38700000 @V5BC0AB 38800000 L R11,SAVER11 GET CURRENT VMBLOK ADDRESS @VMH0025 38900000 CHARGE STOP STOP CPU TIMER @VMH0025 39000000 CHARGE SYNC SYNCHRONIZE VMTTIME @VMH0025 39100000 LA R10,VMTTIME-VMBLOK GET VMTTIME DISPLACEMENT @VMH0025 39200000 ST R10,TIMEDISP SET UP DISPLACEMENT IN PSA @VMH0025 39300000 STCTL C0,C0,CPCREG0 SAVE CONTROL REGISTER ZERO @VMH0029 39400000 NC CPCREG0+2(2),MFAESEXT TURN OFF MFA, EMS, EXTS, @VMH0029 39500000 * AND TOD CLOCK SYNC CHECK INTERRUPT BITS 39600000 LCTL C0,C0,CPCREG0 LOAD MODIFIED CR0 (CR0 UP MODE) @VMH0029 39700000 SPACE 39800000 NI APSTAT1,FF-APUOPER SET APUOPER OFF @V5BC0AB 39900000 CHARGE START RESET THE CPU TIMER @VMH0025 40000000 L R10,CPPSCHCA GET ADDRESS OF DMKSCH AP WAIT @VMH0008 40100000 * VALUES 40200000 TM APSTAT1,PROCIPL IS THIS THE IPL'ED PROCESSOR? @VMV0008 40300000 BO SETSCH YES, RESET THE SECOND SET OF VALUES @VMV0008 40400000 L R10,CPPSCHCU ADDRESS FIRST SET OF VALUES @VMV0008 40500000 SETSCH DS 0H @VMV0008 40600000 MVC 0(16,R10),INITWAIT RESET THE SAVED WAIT @VMH0008 40700000 * INFORMATION TO THE INITIAL VALUES 40800000 L R10,CPPPAGWS GET ADDRESS OF SAVED WAIT VALUES @VMV0007 40900000 * IN DMKPAG 41000000 TM APSTAT1,PROCIPL IS THIS THE IPL'ED PROCESSOR? @VMV0008 41100000 BNO SETPAG NO, RESET THE FIRST SET OF VALUES @VMV0008 41200000 LA R10,8(,R10) ADDRESS THE SECOND SET OF VALUES @VMV0007 41300000 SETPAG DS 0H @VMV0008 41400000 MVC 0(8,R10),WAITSAV8 SET TO INITIAL VALUE @VMV0007 41500000 SLR R15,R15 CLEAR REGISTER 15 @VA12934 41600000 ST R15,XCPEND CLEAR OUT XCPEND FIELD @VA13464 41700000 L R2,CPPEXTST ADDR OF FIELD CONTAINING @VA10010 41800000 * LOGICAL ADDR. OF STOPPED PROCESSOR 41900000 STH R15,0(,R2) SET DMKEXTST TO ZEROES @VA10010 42000000 SPACE 42100000 STH R15,IPUADDRX ZERO IPUADDRX @V5BC0AB 42200000 L R2,=A(DMKLOKSY) GET ADDRESS OF SYSTEM LOCK @VMH0028 42300000 STH R15,LPUADDRX ZERO LPUADDRX @V5BC0AB 42400000 ST R15,0(,R2) ZERO THE GLOBAL SYSTEM LOCK @VMH0028 42500000 ST R15,UNSHRVM CLEAR ADDRESS OF VMBLOK PENDING @VMH0020 42600000 * UNSHARE 42700000 ST R15,STACKVM CLEAR STACKED (LOCKED) VMBLOK @VMH0020 42800000 * ADDRESS 42900000 L R2,CPPDMPAA GET PTR TO ATTACH. PROC'S ADDR @V5BC0AB 43000000 MVC 0(2,R2),IPUADDR SET IT TO REMAINING PROCESSOR ADDRESS X43100000 @V5BC0AB 43200000 L R2,CPPDMPMA GET ADDRESS IN DMKDMP ADDRESS OF @VMV0013 43300000 * THE ADDRESS OF THE MAIN PROCESSOR 43400000 MVC 0(2,R2),IPUADDR MOVE IN ADDRESS OF REMAINING @VMV0013 43500000 * PROCESSOR 43600000 L R1,CPPDMPSA GET PTR TO PSA ADDRESSES @V5BC0AB 43700000 L R7,4(,R1) GET PSA ADDRESS OF PROC. GOING OFFLINE X43800000 @VA12934 43900000 L R15,=A(DMKMCTFL) ADDRESS OF DMKMCT'S FLAGS @VA12934 43905000 TM 0(R15),MCTFS HAS DMKMCTFS BEEN CALLED? (A SIGP@VA12934 43910000 * TO THE OTHER PROC. WAS UNSUCCESSFUL 43915000 BZ PSAFRET1 NO, CONTINUE NORMALLY @VA12934 43920000 SPACE 1 43925000 * IF DMKMCTFS HAS BEEN ENTERED, A SIGP TO THE OTHER 43930000 * PROCESSOR HAS BEEN UNSUCCESSFUL. THE OTHER PROCESSOR 43935000 * COULD POSSIBLY STILL BE RUNNING -- IT HAS NOT BEEN 43940000 * SUCCESSFULLY STOPPED. DO NOT RELEASE THE OTHER 43945000 * PROCESSOR'S PSA PAGE IN THIS CASE. THIS WILL 43950000 * PREVENT A STORAGE OVERLAY IF THE OTHER PROCESSOR 43955000 * SHOULD ACCESS ITS PSA. IN AN ATTEMPT TO CAUSE 43960000 * THE OTHER PROCESSOR TO STOP RUNNING, SET ALL 43965000 * LOCKWORDS TO LOOK AS THOUGH THIS PROCESSOR OWNS 43970000 * THE LOCKS -- SINCE APUOPER IS STILL ON IN THE 43975000 * OTHER PROCESSOR'S PSA, IF IT TRIES TO OBTAIN A LOCK 43980000 * IT WILL BE BLOCKED. 43985000 SPACE 1 43990000 MVC PREFIXB-PSA(4,R7),ZEROES ZERO OTHER PROC'S @VA12934 43995000 * PREFIXB FIELD 44000000 L R15,=A(DMKMCTPF) ADDRESS OF PSA PAGE ADDRESS @VA12934 44005000 ST R7,0(R15) REMEMBER THE ADDRESS OF THE @VA12934 44010000 * OTHER PROCESSOR'S PSA PAGE. IF THE 44015000 * PROCESSOR SHOULD BE VARIED ONLINE 44020000 * AGAIN, THE SAME PAGE WILL BE USED 44025000 * FOR ITS PSA. 44030000 SPACE 1 44035000 * SET ALL LOCKWORDS TO APPEAR 'OWNED' BY THIS PROCESSOR 44040000 SLR R0,R0 CLEAR REGISTER 0 @VA12934 44045000 LH R14,LPUADDR LOGICAL ADDRESS OF THIS PROC. @VA12934 44050000 LA R15,LOCKTAB ADDRESS OF TABLE OF LOCKWORDS @VA12934 44055000 LOCKLOOP L R1,0(R15) ADDRESS OF A LOCKWORD FROM TABLE @VA12934 44060000 LTR R1,R1 AT END OF TABLE? @VA12934 44065000 BM PSAFRET2 YES, BRANCH @VA12934 44070000 BAL R7,SETLOCK GO SET LOCKWORD @VA12934 44075000 LA R15,4(R15) POINT TO NEXT LOCKWORD IN TABLE @VA12934 44080000 B LOCKLOOP LOOP TO SET NEXT LOCKWORD @VA12934 44085000 SPACE 1 @VA12934 44090000 PSAFRET1 SRL R7,8 LEAVE PAGE NUMBER * 16 @VA12934 44095000 AL R7,ACORETBL CALCULATE THE CORTABLE ENTRY ADDRESS X44100000 @V5BC0AB 44200000 CALL DMKPTRFT FREE THE STORAGE @V5BC0AB 44300000 PSAFRET2 L R1,CPPDMPSA @VA12934 44400000 L R7,0(,R1) GET PSA ADDRESS OF REMAINING PROCESSOR X44500000 @V5BC0AB 44600000 SRL R7,8 LEAVE PAGE NUMBER * 16 @V5BC0AB 44700000 AL R7,ACORETBL CALCULATE THE CORTABLE ENTRY ADDRESS X44800000 @V5BC0AB 44900000 CALL DMKPTRFT FREE A PAGE OF STORAGE @V5BC0AB 45000000 L R1,CPPDMPSA GET PTR TO PSA ADDRESSES @V5BC0AB 45100000 MVC 0(8,R1),ZEROES SET THE PSA ADDRESSES TO ZEROES @V5BC0AB 45200000 ************************************************************** 45300000 * THE SYSTEM IS NOW IN UP MODE * 45400000 ************************************************************** 45500000 SPACE 45600000 * 45700000 * THE FOLLOWING CODE RELEASES THE SYSTEM RESOURCES DESCRIBED BY THE 45800000 * OFFLINE PROCESSOR'S COPY OF PAGE AND SWAP TABLES FOR SHARED SEGMENTS 45900000 * 46000000 L R11,ASYSVM GET ADDRESS OF SYSTEM VMBLOK @VMH0026 46100000 L R11,VMPNT GET FIRST ADDR OF FIRST VMBLOK @VMH0026 46200000 LR R10,R11 SAVE ADDRESS IN REGISTER 10 @VMH0026 46300000 WAITONIO DS 0H @VMH0026 46400000 TM VMRSTAT,VMPGWAIT IS VIRTUAL MACHINE WAITING @VMH0026 46500000 * FOR PAGING I/O TO COMPLETE? 46600000 BNO NEXTVMBK NO, BRANCH @VMH0026 46700000 CALL DMKPTRPW GO WAIT FOR I/O TO COMPLETE @VMH0026 46800000 NEXTVMBK DS 0H @VMH0026 46900000 L R11,VMPNT GET NEXT VMBLOK ADDRESS @VMH0026 47000000 CLR R11,R10 END OF CHAIN? @VMH0026 47100000 BNE WAITONIO NO, BRANCH @VMH0026 47200000 L R6,=A(DMKVMAS1) GET THE POINTER TO THE SHRTABLE ANCHOR X47300000 @V5BC0AB 47400000 L R7,0(,R6) GET ADDRESS OF FIRST SHRTABLE @V5BC0AB 47500000 CR R7,R6 ARE THERE ANY SHRTABLES? @V5BC0AB 47600000 BE UPMODE NO, CONTINUE WITH OFFLINE PROCESSING X47700000 @V5BC0AB 47800000 OI APSTAT2,CPPTLBR INDICATE A PTLB IS NECESSARY @V5BC0AB 47900000 * NOTE THAT AT VARY ONLINE TIME, AS PART OF THE SIGNAL INITIAL 48000000 * PROGRAM RESET (IPR), A PTLB IS DONE ON THE PROCESSOR BEING 48100000 * SIGNALLED. 48200000 SPACE 48300000 USING SHRTABLE,R7 @V5BC0AB 48400000 SPACE 48500000 SHRTBLNX DS 0H @V5BC0AB 48600000 TM SHRFLAG,SHRNOPRT IS NAMED SYSTEM UNPROTECTED? @VMI0032 48700000 BNO PROTECT NO, BRANCH @VMI0032 48800000 L R7,SHRFPNT GET ADDRESS OF NEXT SHRTABLE @VMI0032 48900000 LA R7,0(,R7) ERASE SHRFLAG VALUE @VMI0085 49000000 CR R7,R6 ANY MORE SHRTABLES? @VMI0032 49100000 BE CHKCCPDU NO, BRANCH @VMI0032 49200000 B SHRTBLNX YES, GO CHECK FOR PROTECT=NO @VMI0032 49300000 PROTECT DS 0H @VMI0032 49400000 L R10,SHRSEGCT GET NUMBER OF SEGMENTS @V5BC0AB 49500000 LR R14,R10 GET NUMBER OF SEGMENTS @V5BC0AB 49600000 LA R3,SHRSEGNM GET ADDRESS OF SHRSEGNM FIELD @V5BC0AB 49700000 SHRPGT1 DS 0H @V5BC0AB 49800000 LA R3,L'SHRPAGE(,R3) GET POSSIBLE ADDRESS OF 1ST SHRPAGE X49900000 @V5BC0AB 50000000 S R14,F4 UP TO 4 SEG. NOS/WORD @V5BC0AB 50100000 BP SHRPGT1 LOOP UNTIL ADDRESSING 1ST SHRPAGE ENTRY X50200000 @V5BC0AB 50300000 SPACE 50400000 USING SHRPAGE,R3 @V5BC0AB 50500000 SPACE 50600000 SHRPGTNX DS 0H @V5BC0AB 50700000 L R4,SHRPAGE GET PAGE TABLE ADDRESS @V5BC0AB 50800000 N R4,=A(X'FFFFFE') LEAVE PGT ADDRESS ONLY @V5BC0AB 50900000 SL R4,F16 BACK UP TO HEADER @V5BC0AB 51000000 TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 51100000 BZ GOTPGT NO-WE ARE POINTING TO THE CORRECT@V60B7AA 51200000 * (I.E., FIRST) SET OF TABLES 51300000 LA R4,PAGBMP(,R4) ADDRESS THE ATT. PROC'S PGT @V5BC0AB 51400000 GOTPGT SLR R9,R9 CLEAR REGISTER 9 @V60B7AA 51500000 IC R9,SHRPAGE GET FIRST BYTE OF SHRPAGE @V5BC0AB 51600000 SRL R9,4 LEAVE NUMBER OF PAGES MINUS ONE @V5BC0AB 51700000 AL R9,F1 ADD ONE TO NUMBER OF PAGES @V5BC0AB 51800000 SPACE 51900000 USING PAGTABLE,R4 @V5BC0AB 52000000 SPACE 52100000 LA R8,PAGCORE GET POINTER TO 1ST PAGE ADDRESS @V5BC0AB 52200000 SPACE 52300000 USING PAGCORE,R8 @V5BC0AB 52400000 SPACE 52500000 LA R5,PAGTSWP(,R4) GET ADDRESS OF SWPTABLE @V5BC0AB 52600000 SPACE 52700000 USING SWPTABLE,R5 @V5BC0AB 52800000 SPACE 52900000 L R11,SWPVM GET VMBLOK ADDRESS @V5BC0AB 53000000 LA R5,SWPFLAG ADDRESS THE FIRST SWPT ENTRY @V5BC0AB 53100000 SPACE 53200000 DROP R5 @V5BC0AB 53300000 SPACE 53400000 USING SWPFLAG,R5 @V5BC0AB 53500000 SPACE 53600000 DOAPGTE DS 0H @V5BC0AB 53700000 TM PAGCORE+1,PAGINVAL IS PAGE IN CORE? @V5BC0AB 53800000 BO SLOTRLSE NO, SEE IF SLOT MAY BE RELEASED @V5BC0AB 53900000 LH R2,PAGCORE LOAD A PAGCORE ENTRY @V5BC0AB 54000000 N R2,=A(X'FFF0') LEAVE ONLY PAGE NUMBER * 16 @V5BC0AB 54100000 A R2,ACORETBL GET CORE TABLE ENTRY ADDRESS @V5BC0AB 54200000 SPACE 54300000 USING CORTABLE,R2 @V5BC0AB 54400000 SPACE 54500000 CNTRS DS 0H @V5BC0AB 54600000 TM CORFLAG,CORRSV IS PAGE RESERVED? @V5BC0AB 54700000 BZ DECPTRSC NO, BRANCH @V5BC0AB 54800000 L R15,=A(DMKPTRRC) GET RESERVED PAGE COUNT ADDRESS X54900000 @V5BC0AB 55000000 L R14,0(,R15) PICK UP COUNT FIELD @V5BC0AB 55100000 BCTR R14,0 DECREMENT COUNT @V5BC0AB 55200000 ST R14,0(,R15) STORE NEW COUNT @V5BC0AB 55300000 L R15,=A(DMKDSPNP) GET ADDRESS OF PAGEABLE PAGE COUNT X55400000 @V5BC0AB 55500000 LA R14,1 GET INCREMENT @V5BC0AB 55600000 AL R14,0(,R15) INCREMENT COUNT @V5BC0AB 55700000 ST R14,0(,R15) STORE NEW COUNT @V5BC0AB 55800000 DECPTRSC DS 0H @V5BC0AB 55900000 L R15,=A(DMKPTRSC) GET ADDRESS OF SHARED PAGES COUNT X56000000 @V5BC0AB 56100000 L R14,0(,R15) GET COUNT @V5BC0AB 56200000 BCTR R14,0 DECREMENT COUNT @V5BC0AB 56300000 ST R14,0(,R15) STORE COUNT @V5BC0AB 56400000 L R14,CORVM GET VMBLOK ADDRESS OF OWNER @V5BC0AB 56500000 LH R15,VMPAGES-VMBLOK(,R14) DECREMENT FRAME COUNT @V5BC0AB 56600000 S R15,F1 BY ONE @V5BC0AB 56700000 BM CPP1 COUNT IS NEGATIVE, TERMINATE CP @V5BC0AB 56800000 STH R15,VMPAGES-VMBLOK(,R14) STORE NEW COUNT @V5BC0AB 56900000 ZEROCORE DS 0H @V5BC0AB 57000000 OI VMESTAT-VMBLOK(R14),VMINVPAG INDICATE INVALID PAGE X57100000 @V5BC0AB 57200000 XC CORPGPNT(4),CORPGPNT ZERO PAGE TABLE ADDRESS @V5BC0AB 57300000 MVC PAGCORE,F8+2 INVALIDATE PAGE TABLE ENTRY @V5BC0AB 57400000 ST R7,SAVEWRK7 SAVE SHRTABLE POINTER @V5BC0AB 57500000 TM CORFLAG,CORIOLCK IS PAGE LOCKED FOR I/O? @V5BC0AB 57600000 BZ PAGEFRET NO, GO FREE PAGE @V5BC0AB 57700000 SR R0,R0 CLEAR REGISTER ZERO @V5BC0AB 57800000 STCM R0,B'0111',CORSWPNT+1 CLEAR SWAP TABLE POINTER @V5BC0AB 57900000 NI CORFLAG,FF-CORSHARE-CORRSV CLEAR SHARE AND RESERVED 58000000 * @V5BC0AB 58100000 B SLOTRLSE GO TEST FOR SLOT RELEASE @V5BC0AB 58200000 PAGEFRET DS 0H @V5BC0AB 58300000 LR R7,R2 R7 HAS THE ADDRESS OF CORTABLE ENTRY X58400000 @V5BC0AB 58500000 CALL DMKPTRFT RETURN PAGE TO FREE LIST @V5BC0AB 58600000 L R7,SAVEWRK7 RESTORE SHRTABLE ADDRESS @V5BC0AB 58700000 SLOTRLSE DS 0H @V5BC0AB 58800000 TM SWPFLAG,SWPRECMP CAN DASD SLOT BE RELEASED? @V5BC0AB 58900000 BO BMPCORE1 NO, BRANCH @V5BC0AB 59000000 DROP R2 @V5BC0AB 59100000 SPACE 59200000 SR R2,R2 CLEAR REGISTER @V5BC0AB 59300000 IC R2,SWPCODE GET VOLUME INDEX CODE @V5BC0AB 59400000 SLL R2,3 GET VOLUME INDEX CODE @V5BC0AB 59500000 AL R2,=A(DMKSYSOW) POINT TO OWNED LIST ENTRY @V5BC0AB 59600000 LH R2,OWNDRDEV-OWNDLIST(,R2) GET RDEVBLOK INDEX @V5BC0AB 59700000 SLL R2,3 CONVERT TO BYTE INDEX @V5BC0AB 59800000 AL R2,ARIODV ADD TO ADDRESS OF FIRST RDEVBLOK @V5BC0AB 59900000 SPACE 60000000 USING RDEVBLOK,R2 @V5BC0AB 60100000 SPACE 60200000 LA R15,VMPDRUM-VMBLOK ASSUME ON DRUM @V5BC0AB 60300000 CLI RDEVTYPE,TYP2305 IS IT A DRUM? @V5BC0AB 60400000 BE DRUM YES, BRANCH IT IS A DRUM @V5BC0AB 60500000 LA R15,VMPDISK-VMBLOK NO, RESET TO DISK COUNTER @V5BC0AB 60600000 DRUM DS 0H @V5BC0AB 60700000 LH R0,0(R15,R11) GET COUNTER @V5BC0AB 60800000 S R0,F1 DECREMENT @V5BC0AB 60900000 STH R0,0(R15,R11) STORE NEW COUNT @V5BC0AB 61000000 SPACE 61100000 DROP R2 @V5BC0AB 61200000 SPACE 61300000 CALL DMKPGTSP RELEASE THE SYSTEM DASD SLOT @V5BC0AB 61400000 MVI SAVEWRK8,YES INDICATE CCPD'S MUST BE UPDATED @V5BC0AB 61500000 * IN THE ATTCHED PROC'S COPY OF PGT/SWPT 61600000 * I.E., AT LEAST ONE SWPRECMP FLAG WAS OFF 61700000 BMPCORE1 DS 0H @V5BC0AB 61800000 LA R5,8(,R5) ADDRESS NEXT SWAP TABLE ENTRY @V5BC0AB 61900000 LA R8,L'PAGCORE(,R8) ADDRESS THE NEXT POSSIBLE PGT POINTER X62000000 @V5BC0AB 62100000 BCT R9,DOAPGTE AND PROCESS IT, IF THERE IS ANOTHER X62200000 @V5BC0AB 62300000 LA R3,L'SHRPAGE(,R3) ADDRESS NEXT SHRPAGE ENTRY @V5BC0AB 62400000 BCT R10,SHRPGTNX IF THERE IS ANOTHER @V5BC0AB 62500000 L R7,SHRFPNT GET NEXT SHRTABLE ADDRESS @V5BC0AB 62600000 CR R7,R6 ARE THERE ANY MORE SHARE TABLES? @V5BC0AB 62700000 BNE SHRTBLNX BRANCH IF THERE ARE MORE @V5BC0AB 62800000 SPACE 62900000 DROP R3,R4,R5,R7,R8 @V5BC0AB 63000000 CHKCCPDU DS 0H @VMI0032 63100000 SPACE 63200000 CLI SAVEWRK8,YES MUST THE CCPDS BE UPDATED? @V5BC0AB 63300000 BNE UPMODE NO, CONTINUE OFFLINE PROCESSING @V5BC0AB 63400000 SPACE 4 63500000 * THE FOLLOWING CODE WILL REINITIALIZE THE CCPDS OF THE * 63600000 * OFFLINE PROCESSOR'S SET OF SWAP TABLES. 63700000 L R6,=A(DMKVMAS1) GET THE POINTER TO THE SHRTABLE ANCHOR X63800000 @V5BC0AB 63900000 L R7,0(,R6) GET THE ADDRESS OF THE FIRST SHRTABLE X64000000 @V5BC0AB 64100000 BAL R5,GETSNTBL BRING IN AND LOCK THE SYSTEM NAME TABLE X64200000 @V5BC0AB 64300000 SPACE 64400000 USING SYSTBL,R4 @V5BC0AB 64500000 SPACE 64600000 USING SHRTABLE,R7 @V5BC0AB 64700000 SPACE 64800000 SYSNAMEL DS 0H FIND THE SYSTABLE FOR THIS SHRTABLE X64900000 @V5BC0AB 65000000 TM SHRFLAG,SHRNOPRT IS NAMED SYSTEM UNPROTECTED? @VMI0032 65100000 BNO COMPAREN NO, BRANCH @VMI0032 65200000 L R7,SHRFPNT GET NEXT SHRTABLE ADDRESS @VMI0032 65300000 LA R7,0(,R7) ERASE SHRFLAG VALUE @VMI0085 65400000 CR R7,R6 ANY MORE SHRTABLES? @VMI0032 65500000 BNE SYSNAMEL YES, BRANCH @VMI0032 65600000 BAL R5,UNLSNTBL GO UNLOCK DMKSNT @VMI0032 65700000 B UPMODE GO FINISH OFFLINE PROCESSING @VMI0032 65800000 COMPAREN DS 0H @VMI0032 65900000 CLC SYSNAME,SHRNAME DO THE NAMES MATCH? @V5BC0AB 66000000 BE NAMEEQU YES, FOUND THE SYSTABLE FOR THE SHRTABLE X66100000 @V5BC0AB 66200000 L R3,SYSPNT GET DISPLACEMENT OF NEXT ENTRY @V5BC0AB 66300000 AR R4,R3 COMPUTE ADDR OF NEXT ENTRY @V5BC0AB 66400000 LTR R3,R3 LAST ENTRY @V5BC0AB 66500000 BNZ SYSNAMEL LOOP UNTIL A MATCH IS FOUND @V5BC0AB 66600000 SPACE 66700000 * A CORRESPONDING SYSTABLE WAS NOT FOUND FOR THE SHARED SYSTEM. 66800000 * THIS IS AN ERROR CONDITION. ISSUE ABEND, CPP002 66900000 * 67000000 NI APSTAT4,FF-POFFLINE CLEAR VARY IN PROCESS FLAG @V5BC0AB 67100000 BAL R5,UNLSNTBL UNLOCK THE SNT @V5BC0AB 67200000 B CPP2 ABEND CP @V5BC0AB 67300000 * 67400000 * 67500000 NAMEEQU DS 0H @V5BC0AB 67600000 LA R1,SYSVOL GET ADDRESS OF VOLUME SERIAL @V5BC0AB 67700000 LA R0,L'SYSVOL GET LENGTH OF SERIAL @V5BC0AB 67800000 CALL DMKSCNVS GET DEVICE BLOCK @V5BC0AB 67900000 BZ DEVBK CONTINUE IF FOUND @V5BC0AB 68000000 L R4,SAVEWRK4 GET ADDRESS OF 1ST SYSTABLE ENTRY X68100000 @V5BC0AB 68200000 L R7,SHRFPNT SKIP TO NEXT SHRTABLE @V5BC0AB 68300000 CR R7,R6 END OF SHRTABLE CHAIN? @V5BC0AB 68400000 BNE SYSNAMEL NO, PROCESS ALL SHRTABLES @V5BC0AB 68500000 BAL R5,UNLSNTBL NO MORE. UNLOCK THE SNT @V5BC0AB 68600000 B UPMODE CONTINUE OFFLINE PROCESSING @V5BC0AB 68700000 DEVBK DS 0H @V5BC0AB 68800000 USING RDEVBLOK,R1 @V5BC0AB 68900000 L R5,SYSSTART LOAD CCPD OF START OF SYSTEM @V5BC0AB 69000000 * ON SYSVOL 69100000 IC R5,RDEVCODE+1 INSERT INDEX INTO OWNED LIST FOR X69200000 @V5BC0AB 69300000 * SYSVOL 69400000 LA R0,PAGE2314 MAX. PAGES/CYL ON 2314 @V5BC0AB 69500000 TM RDEVTYPE,TYP2314 2314? @V5BC0AB 69600000 BO SAVEMAXP YES @V5BC0AB 69700000 LA R0,PAGE3330 MAX. PAGES/CYL ON 3330 @V5BC0AB 69800000 TM RDEVTYPE,TYP3330 3330? @V5BC0AB 69900000 BO SAVEMAXP YES @V5BC0AB 70000000 LA R0,PAGE3350 MAX. PAGES/CYL ON 3350 @V5BC0AB 70100000 CLI RDEVTYPE,TYP3350 3350? @V5BC0AB 70200000 BE SAVEMAXP YES @V5BC0AB 70300000 LA R0,PAGE3375 Max. pages/cyl on 3375 HRC106DK 70300100 CLI RDEVTYPE,TYP3375 3375? HRC106DK 70300200 BE SAVEMAXP Yes HRC106DK 70300300 LA R0,PAGE3380 Max. pages/cyl on 3380 HRC106DK 70300400 CLI RDEVTYPE,TYP3380 3380? HRC106DK 70300500 BE SAVEMAXP Yes HRC106DK 70300600 LA R0,PAGE2305 MAX. PAGES/CYL ON 2305 AND 3340 @V5BC0AB 70400000 * 70500000 SPACE 70600000 DROP R1 @V5BC0AB 70700000 SPACE 70800000 SAVEMAXP DS 0H @V5BC0AB 70900000 SLL R0,8 @V5BC0AB 71000000 ST R0,SAVEWRK9 SAVE PAGES/CYL VALUE @V5BC0AB 71100000 L R6,F256 GET INCREMENT CONSTANT FOR CCPDS @V5BC0AB 71200000 AR R5,R6 BUMP TO NEXT CCPD @V5BC0AB 71300000 * THIS MOVES PASS THE PAGE CONTAINING 71400000 * KEYS, ETC. 71500000 LR R1,R5 PUT CCPD IN R1 @V5BC0AB 71600000 N R1,WHEXFF00 LEAVE ONLY PAGE NUMBER @V5BC0AB 71700000 CL R1,SAVEWRK9 LAST PAGE ON THIS CYLINDER? @V5BC0AB 71800000 BNH SHRCT NO, BRANCH CYL OK @V5BC0AB 71900000 A R5,HEX10000 YES, BUMP TO NEXT CYLINDER @V5BC0AB 72000000 ICM R5,B'0010',F1+3 SET PAGE NUMBER TO 1 @V5BC0AB 72100000 SHRCT DS 0H @V5BC0AB 72200000 * 72300000 * 72400000 L R14,SHRSEGCT GET NO. OF SHARED SEGMENTS @VMH0007 72500000 SLR R10,R10 ZERO REGISTER 10 @VMH0007 72600000 LA R3,SHRSEGNM POINT TO SHRSEGNM FIELD @V5BC0AB 72700000 SHRPGT DS 0H COMPUTE ADDRESS OF FIRST SHRPAGE FIELD X72800000 @V5BC0AB 72900000 LA R3,L'SHRPAGE(,R3) GET NEXT POSSIBLE SHRPAGE POINTER X73000000 @V5BC0AB 73100000 S R14,F4 SUBTRACT 4 (4 POSSIBLE ENTRIES/WORD) X73200000 @V5BC0AB 73300000 BP SHRPGT LOOP UNTIL R3 ADDRESSES 1ST SHRPAGE X73400000 ENTRY 73500000 ST R3,SAVEWRK3 SAVE SHRPAGE POINTER @V5BC0AB 73600000 * CALCULATE THE ADDRESS OF SYSHRSEG 73700000 LH R3,SYSPAGLN GET COUNT OF SYSPAGNM ENTRIES @V5BC0AB 73800000 ST R3,SAVEWRK8 SAVE NUMBER OF SYSPAGNM ENTRIES @V5BC0AB 73900000 SLL R3,2 TIMES FOUR @V5BC0AB 74000000 LA R3,SYSPAGNM(R3) R3 = ADDRESS OF SYSSEGLN @V5BC0AB 74100000 LA R3,2(,R3) R3 = ADDRESS OF SYSHRSEG @V5BC0AB 74200000 * 74300000 USING SYSHRSEG,R3 @V5BC0AB 74400000 SPACE 74500000 SR R2,R2 INDEX THRU SYSPAGNM ENTRIES @V5BC0AB 74600000 * 74700000 LOOPPAGE DS 0H @V5BC0AB 74800000 L R8,SYSPAGNM(R2) LOAD RANGE OF PAGES @V5BC0AB 74900000 ST R2,SAVEWRK2 SAVE SYSPAGNM INDEX @V5BC0AB 75000000 SRDL R8,16 RIGHT JUSTIFY START PAGE IN R8 @V5BC0AB 75100000 SRL R9,16 RIGHT JUSTIFY END PAGE IN R9 @V5BC0AB 75200000 SLL R8,12 COMPUTE START PAGE ADDRESS @V5BC0AB 75300000 SLL R9,12 COMPUTE END PAGE ADDRESS @V5BC0AB 75400000 * 75500000 GETSEGNO DS 0H @V5BC0AB 75600000 LR R1,R8 PUT PAGE ADDRESS IN R1 @V5BC0AB 75700000 SRL R1,16 RIGHT JUSTIFY SEGMENT NO. @V5BC0AB 75800000 SR R2,R2 CLEAR REGISTER 2 @V5BC0AB 75900000 IC R2,SYSHRSEG(R10) GET SHARED SEGMENT NUMBER @VMH0007 76000000 LR R14,R2 PUT SHARED SEG NO. IN REGISTER 14 X76100000 @V5BC0AB 76200000 SLL R14,16 FORM SEGMENT START PAGE ADDRESS @V5BC0AB 76300000 AL R14,HEX10000 ADD IN 16 * 4096 @V5BC0AB 76400000 ST R14,SAVEWRK6 SAVE SEGMENT END PAGE ADDRESS @V5BC0AB 76500000 L R14,SAVEWRK3 YES,THEY MATCH. GET SHRPAGE PTR @VMH0007 76600000 L R14,0(,R14) ADDRESS THE PAGE TABLE (LOAD @VMH0007 76700000 * SHRPAGE) 76800000 N R14,=A(X'FFFFFE') LEAVE PGT ADDRESS ONLY @VMH0007 76900000 SL R14,F16 BACK UP TO PAGE TABLE HEADER @V60B7AA 77000000 TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 77100000 BZ GOTPGT2 NO-WE ARE POINTING AT THE CORRECT@V60B7AA 77200000 * SET OF PG/SWAP TABLES 77300000 LA R14,PAGBMP(,R14) ADDRESS DUPLICATE COPY OF PAGE @VMH0007 77400000 * TABLES 77500000 GOTPGT2 LA R14,PAGTSWP(,R14) GET SWPT ADDRESS FOR OTHER @V60B7AA 77600000 * PROC'S COPY 77700000 USING SWPTABLE,R14 @VMH0007 77800000 LA R14,SWPFLAG ADDRESS THE FIRST SWPTABLE ENTRY @VMH0007 77900000 DROP R14 @VMH0007 78000000 SPACE 78100000 LR R15,R8 GET PAGE ADDRESS @V5BC0AB 78200000 SRL R15,12 LEAVE SEG/PAGE NUMBER @V5BC0AB 78300000 N R15,F15 LEAVE ONLY PAGE NUMBER @V5BC0AB 78400000 SLL R15,3 GET SWPT INDEX (PAGE NO. * 8) @V5BC0AB 78500000 ALR R15,R14 ADD IN ADDRESS OF 1ST SWAP TABLE @VMH0007 78600000 * ENTRY 78700000 S R15,F8 SUBTRACT 8 FROM THE SWPTE @VMH0021 78800000 ************************************************************** 78900000 * NOTE THAT THIS SUBTRACT IS NECESSARY BECAUSE THE SWPTE 79000000 * ADDRESS IS INCREMENTED BY 8 AT LABEL, UPDTCCPD. 79100000 ************************************************************** 79200000 SPACE 79300000 USING SWPFLAG,R15 @V5BC0AB 79400000 CLR R1,R2 DO SEGMENTS MATCH? @VMH0020 79500000 BNE CCPDBUMP NO, INCREMENT CCPD BY ONE @VMH0020 79600000 SPACE 79700000 UPDTCCPD DS 0H @V5BC0AB 79800000 LA R15,8(,R15) ADDRESS THE SWAP TABLE ENTRY @VMH0021 79900000 ST R5,SWPCYL STORE CCPD IN DUPLICATE COPY OF SWPT X80000000 @V5BC0AB 80100000 OI SWPFLAG,SWPRECMP+SWPCHG1 TURN ON RECOMPUTE BIT @VMH0007 80200000 * AND CHANGED BIT 80300000 CCPDBUMP DS 0H @V5BC0AB 80400000 AR R5,R6 BUMP TO NEXT CCPD @V5BC0AB 80500000 LR R14,R5 PUT CCPD IN R14 @VMH0007 80600000 N R14,WHEXFF00 @VMH0007 80700000 CL R14,SAVEWRK9 @VMH0007 80800000 BNH ADDAPAGE CYL IS STILL OK, CONTINUE @V5BC0AB 80900000 A R5,HEX10000 BUMP TO NEXT CYLINDER @V5BC0AB 81000000 ICM R5,B'0010',F1+3 SET PAGE NUMBER TO 1 @V5BC0AB 81100000 * 81200000 ADDAPAGE DS 0H @V5BC0AB 81300000 AL R8,F4096 INCREASE SYSPAGNM START ADDRESS BY 1 X81400000 PAGE 81500000 CL R8,SAVEWRK6 OUT OF THIS SEGMENT'S PAGE RANGE @V5BC0AB 81600000 BNL TSPAGNM1 YES, DONE WITH THIS SHARED SEGT. @VMH0007 81700000 LR R1,R8 GET PAGE RANGE START ADDRESS @VMH0016 81800000 SRL R1,16 LEAVE ONLY SEGMENT NUMBER @VMH0016 81900000 CLR R1,R2 DID THEY MATCH? @VMH0007 82000000 BE INRANGE GO SEE IF WITHIN SYSPAGNM RANGE @VMH0007 82100000 CLR R8,R9 @VMH0007 82200000 BNH CCPDBUMP @VMH0007 82300000 B NEXTPAGE @VMH0007 82400000 INRANGE DS 0H @VMH0021 82500000 CLR R8,R9 OUT OF SYSPAGNM RANGE? @V5BC0AB 82600000 BNH UPDTCCPD NO, GO UPDATE NEXT SWPT ENTRY @VMH0007 82700000 NEXTPAGE L R2,SAVEWRK2 YES, LOAD CURRENT SYSPAGNM PTR. @VMH0007 82800000 LA R2,4(,R2) BUMP ADDRESS TO NEXT ENTRY @V5BC0AB 82900000 ST R2,SAVEWRK2 SAVE CURRENT SYSPAGNM POINTER @VMH0007 83000000 L R8,SAVEWRK8 GET COUNT OF SYSPAGNM ENTRIES @V5BC0AB 83100000 S R8,F1 DECREMENT BY ONE @V5BC0AB 83200000 ST R8,SAVEWRK8 SAVE COUNT OF SYSPAGNM ENTRIES @V5BC0AB 83300000 BNZ LOOPPAGE GO LOOK FOR THIS SHARED SEGMENT'S PAGE X83400000 @V5BC0AB 83500000 * RANGE WITHIN THE NEXT SYSPAGNM ENTRY 83600000 B NXSYSTEM BRANCH IF SYSPAGNM EXHAUSTED @V5BC0AB 83700000 TSPAGNM1 DS 0H A SHARED SEGMENT HAS BEEN REINITIALIZED X83800000 @V5BC0AB 83900000 L R15,SAVEWRK3 GET SHRPAGE POINTER @V5BC0AB 84000000 LA R15,4(,R15) BUMP POINTER TO NEXT SHRPAGE ENTRY X84100000 @V5BC0AB 84200000 ST R15,SAVEWRK3 SAVE SHRPAGE POINTER @V5BC0AB 84300000 CR R8,R9 THIS PAGNM ENTRY COMPLETE? @V5BC0AB 84400000 BH NEXTPAGN YES, GO GET NEXT SYSPAGNM POINTER X84500000 @V5BC0AB 84600000 * THIS SYSHRSEG HAS BEEN UPDATED, BUT THIS SYSPAGNM ENTRY IS NOT 84700000 * EXHAUSTED. 84800000 A R10,F1 ADD 1 TO NO. OF SEGS PROCESSED @VMH0007 84900000 C R10,SHRSEGCT ANY MORE SYSHRSEG ENTRIES? @VMH0007 85000000 BNE GETSEGNO PROCESS NEXT SYSHRSEG ENTRY @VMH0007 85100000 * 85200000 B NXSYSTEM BRANCH, DONE WITH THIS SYSTABLE @V5BC0AB 85300000 * 85400000 NEXTPAGN DS 0H @V5BC0AB 85500000 L R2,SAVEWRK2 LOAD PAGNM POINTER @V5BC0AB 85600000 LA R2,4(,R2) BUMP TO NEXT ENTRY @V5BC0AB 85700000 * 85800000 A R10,F1 ADD 1 TO NO. OF SEGS PROCESSED @VMH0007 85900000 C R10,SHRSEGCT ANY MORE SYSHRSEG ENTRIES? @VMH0007 86000000 BNE LOOPPAGE PROCESS NEXT SYSHRSEG ENTRY, IF @VMH0007 86100000 * THERE IS ANOTHER ONE 86200000 NXSYSTEM DS 0H @V5BC0AB 86300000 L R4,SAVEWRK4 GET FIRST SYSTABLE ENTRY @V5BC0AB 86400000 L R7,SHRFPNT GET NEXT SHRTABLE POINTER @V5BC0AB 86500000 L R6,=A(DMKVMAS1) GET SHRTABLE ANCHOR ADDRESS @VMH0001 86600000 CR R7,R6 END OF CHAIN? @V5BC0AB 86700000 BNE SYSNAMEL NO, PROCESS ALL SHRTABLES @V5BC0AB 86800000 BAL R5,UNLSNTBL OTHERWISE, GO UNLOCK THE SNT @V5BC0AB 86900000 SPACE 87000000 DROP R3,R4,R7,R15 @V5BC0AB 87100000 EJECT 87200000 UPMODE DS 0H @V5BC0AB 87300000 SPACE 87400000 SR R15,R15 SET REGISTER TO 0 @VA12934 87500000 ST R15,SAVER1 STORE IN CALLER'S REG 1 @VA12934 87600000 EXIT RETURN TO CALLER @VA12934 87700000 SPACE 87800000 ERCPP192 DS 0H @VA12934 87900000 LA R15,192 GET MESSAGE NUMBER @VA12934 88000000 ST R15,SAVER1 AND SAVE IT IN HIS REGISTER 1 @VA12934 88100000 EXIT RETURN TO CALLER @VA12934 88200000 SPACE 88300000 ************************************************************** 88400000 * TRANS, LOCK, UNLOCK THE SYSTEM NAME TABLE * 88500000 ************************************************************** 88600000 GETSNTBL DS 0H @V5BC0AB 88700000 L R1,=A(DMKSNTBL) GET ADDRESS OF THE SNT @V5BC0AB 88800000 TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM) @V5BC0AB 88900000 LR R4,R2 PUT ADDRESS OF THE SNT IN REGISTER 4 X89000000 @V5BC0AB 89100000 ST R4,SAVEWRK4 SAVE THE ADDRESS OF THE SNT @V5BC0AB 89200000 BR R5 RETURN TO THE CALLER @V5BC0AB 89300000 * 89400000 UNLSNTBL DS 0H @V5BC0AB 89500000 L R2,SAVEWRK4 GET SNT ADDRESS @V5BC0AB 89600000 CALL DMKPTRUL GO UNLOCK THE SNT @V5BC0AB 89700000 BR R5 RETURN TO THE CALLER @V5BC0AB 89800000 EJECT 89805000 ************************************************************** 89810000 * SET A LOCKWORD TO CONTAIN VALUE OF LPUADDR 89815000 ************************************************************** 89820000 SETLOCK DS 0H @VA12934 89825000 CLC LPUADDR,2(R1) IS LOCK ALREADY OWNED BY THIS @VA15414 89831000 * PROCESSOR? 89835000 BE LOCKOK YES -- OK @VA12934 89840000 CS R0,R14,0(R1) PLACE LPUADDR IN LOCKWORD @VA12934 89845000 BNZ WAIT019 IF CS FAILED, IT IS BECAUSE THE @VA12934 89850000 * OTHER PROCESSOR NOW OWNS THE LOCK 89855000 * LOAD DISABLED WAIT -- OTHER PROC. 89860000 * IS STILL RUNNING, AND TO CONTINUE 89865000 * MIGHT JEOPARDIZE SYSTEM INTEGRITY 89870000 LOCKOK BR R7 RETURN TO THE CALLER @VA12934 89875000 SPACE 2 89880000 WAIT019 LPSW DISABPSW LOAD DISABLED WAIT @VA12934 89885000 EJECT 89900000 ABEND 1 VMPAGES IS NEGATIVE, TERMINATE CP X90000000 @V5BC0AB 90100000 ABEND 2 THE SYSTEM NAME TABLE DID NOT HAVE @V5BC0AB 90200000 * AN ENTRY FOR A NAME SYSTEM @V5BC0AB 90300000 * DECLARES * 90400000 PAGE2314 EQU 32 PAGES/CYL FOR 2314/2319 @V5BC0AB 90500000 PAGE3330 EQU 57 PAGES/CYL FOR 3330 @V5BC0AB 90600000 PAGE3350 EQU 120 PAGES/CYL FOR 3350 @V5BC0AB 90700000 PAGE3375 EQU 96 Pages/cyl for 3375 HRC106DK 90700100 PAGE3380 EQU 150 Pages/cyl for 3380 HRC106DK 90700200 PAGE2305 EQU 24 PAGES/CYL FOR 2305/3340 @V5BC0AB 90800000 YES EQU C'Y' @V5BC0AB 90900000 FF EQU X'FF' @V5BC0AB 91000000 MCTFS EQU X'80' TO TEST DMKMCT'S FLAG BYTE FOR @VA12934 91030000 * DMKMCTFS ENTRY @VA12934 91060000 DS 0D @V5BC0AB 91100000 WHEXFF00 DC X'0000FF00' @V5BC0AB 91200000 HEX10000 DC X'00010000' @V5BC0AB 91300000 DS 0F @V5BC0AB 91400000 CPPDSPRQ DC A(DMKDSPRQ) DISPATCHER QUEUE ANCHORS @VA09324 91500000 CPPEXTST DC A(DMKEXTST) ADDR OF FIELD CONTAINING THE @VA10010 91600000 * LOGICAL ADDR. OF THE STOPPED PROC. 91700000 CPPDMPMA DC A(DMKDMPMA) PROCESSOR ADDRESS OF MAIN @V5BC0AB 91800000 DS 0D @V60B7AB 91900000 CPWAIT16 DC X'0002000000000016' CONCS OR DISCS FAILED @V60B7AB 92000000 CPPDMPAA DC A(DMKDMPAA) ATTACHED PROCESSOR'S ADDRESS @V5BC0AB 92100000 CPPDMPSA DC A(DMKDMPSA) POINTERTO PSA ADDRESSES @V5BC0AB 92200000 CPPFREAP DC A(DMKFREAP) POINTER TO FREE STORAGE FOR DMKFRE X92300000 @V5BC0AB 92400000 CPPSCHCA DC A(DMKSCHCA) PTR TO DMKSCH AP WAIT VALUES @VMH0008 92500000 CPPSCHCU DC A(DMKSCHCU) @VMV0008 92600000 * THE FOLLOWING FOUR AP WAIT VALUES MUST REMAIN CONTIGUOUS 92700000 INITWAIT DC X'00000078' @VMH0008 92800000 DC X'FFFFFFFF' @VMV0007 92900000 DC X'FFFFFFFF' @VMV0007 93000000 DC X'FFFFFFFF' @VMV0007 93100000 * THE FOLLOWING 8 BYTES MUST REMAIN CONTIGUOUS 93200000 WAITSAV8 DC X'7FFFFFFF' WAITSAVE VALUE FOR THE ATTACHED @VMH0012 93300000 DC X'FFFFF000' PROCESSOR @VMH0012 93400000 CPPPAGWS DC A(DMKPAGWS) POINTER TO DMKPAG WAITSAVE VALUES @VMV0007 93500000 MFAESEXT DC X'0FFF' USED TO DISABLE MALFUNCTION ALERT, @VMH0029 93600000 * EMERGENCY SIGNAL, EXTERNAL SIGNAL AND TOD CLOCK 93700000 * SYNC CHECK INTERRUPTS 93800000 DISABPSW DS 0D @VA12934 93809000 DC X'00020000',X'00000019' @VA12934 93818000 SPACE 2 93827000 LOCKTAB DC A(DMKLOKSY) @VA12934 93836000 DC A(DMKLOKDS) @VA12934 93845000 DC A(DMKLOKTR) @VA12934 93854000 DC A(DMKLOKRL) @VA12934 93863000 DC A(DMKLOKFR) @VA12934 93872000 DC F'-1' @VA12934 93881000 SPACE 2 93890000 *************************************************************** 93900000 * MESSAGES * 94000000 *************************************************************** 94100000 * 94200000 CPP623MG DC X'151515' @V60B7AB 94300000 DC C'DMKCPP623I CHANNEL SET CONNECTED TO PROCESSOR ' @V60B7AB 94400000 CPPID623 DC C' ' @V60B7AB 94500000 DC X'1515' @V60B7AB 94600000 CPP623LN EQU *-CPP623MG @V60B7AB 94700000 * 94800000 LTORG 94900000 EJECT 95000000 COPY SHRTABLE 95100000 COPY SYSTBL 95200000 PSA 95300000 COPY CORE 95400000 COPY EQU 95500000 COPY SAVE 95600000 COPY VMBLOK 95700000 COPY RBLOKS 95800000 COPY VBLOKS 95900000 COPY DEVTYPES 96000000 COPY ALLOC 96100000 COPY TIMER 96200000 COPY MCHAREA 96300000 END 96400000