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