CPU TITLE 'DMKCPU (CP) VM/370 - RELEASE 6' 00001000 PUNCH ' SPB' 00002000 ISEQ 73,80 00003000 SPACE 2 00004000 COPY OPTIONS 00005000 COPY LOCAL OPTIONS 00006000 DMKCPU CSECT 00007000 EXTRN DMKPTRAN @VA12934 00008000 EXTRN DMKPTRFR @VA12934 00009000 EXTRN DMKCFMBK @V5BC0AB 00011000 EXTRN DMKPTRFT @V5BC0AB 00013000 EXTRN DMKLOKSY @VA12934 00014000 EXTRN DMKLOKFR @VA12934 00015000 EXTRN DMKLOKTR @VA12934 00016000 EXTRN DMKLOKDS @VA12934 00017000 EXTRN DMKLOKRL @VA12934 00018000 EXTRN DMKMCTAF @VA12934 00019000 EXTRN DMKCVTBH @VA12934 00020000 EXTRN DMKSTKOP @V5BC0AB 00024000 EXTRN DMKSTKMP @VMH0033 00025000 EXTRN DMKFRET @V5BC0AB 00027000 EXTRN DMKFREE @V5BC0AB 00028000 EXTRN DMKCLKCK @V5BC0AB 00029000 EXTRN DMKAPIPR @V5BC0AB 00030000 EXTRN DMKCPPUP @VA12934 00030500 EXTRN DMKSYSAP @V5BC0AB 00031000 EXTRN DMKFREAP @V5BC0AB 00035000 EXTRN DMKVMAS1 @V5BC0AB 00036000 EXTRN DMKSCNVS @V5BC0AB 00037000 EXTRN DMKPTRUL @V5BC0AB 00039000 EXTRN DMKDSPRQ @VA09324 00040100 EXTRN DMKSTKCP @VA09324 00040200 EXTRN DMKEXTST @VA10010 00040300 EXTRN DMKMCTPF @VA12934 00040500 EXTRN DMKMCTFL @VA12934 00040700 EJECT 00041000 *. 00042000 * MODULE NAME - 00043000 * 00044000 * DMKCPU 00045000 * 00046000 * FUNCTION - 00047000 * 00048000 * TO VARY AN ATTACHED PROCESSOR ONLINE. 00049000 * 00051000 * ATTRIBUTES - 00052000 * 00053000 * REENTRANT, PAGEABLE, CALLED VIA SVC 00054000 * 00055000 * ENTRY POINTS - 00056000 * 00057000 * DMKCPUVY - TO PROCESS A VARY ONLINE/OFFLINE PROCESSOR COMMAND. 00058000 * 00060000 * ENTRY CONDITIONS - 00061000 * 00062000 * FOR DMKCPUVY - 00063000 * GPR1 = PROCESSOR ADDRESS, IF OFFLINE REQUEST, THE FIRST BYTE 00064000 * HAS A X'FF' 00065000 * GPR11 = ADDRESS OF VMBLOK OF VIRTUAL MEMORY'S OWNER 00066000 * GPR12 = ADDRESS OF ENTRY POINT 00067000 * GPR13 = ADDRESS OF SAVEAREA 00068000 * 00069000 * EXIT CONDITIONS - 00076000 * 00077000 * 00078000 * NORMAL - 00079000 * WHEN PROCESSING AN ONLINE OR OFFLINE, GPR1 WILL CONTAIN 00080000 * ZEROES. 00081000 * 00082000 * ERROR - 00083000 * WHEN PROCESSING AN ONLINE OR OFFLINE, GPR1 WILL CONTAIN 00084000 * THE ERROR MESSAGE NUMBER. 00085000 * 00086000 * CALLS TO OTHER ROUTINES - 00087000 * 00088000 * DMKCPPUP - TO FREE RESOURCES USED IN AP OPERATION 00089000 * DMKCVTBH - TO CONVERT BINARY TO PRINTABLE FORM 00090000 * DMKPTRFT - TO RETURN PAGES TO THE FREE PAGE LIST 00091000 * DMKVMASW - TO SWITCH SHARED SEGMENT POINTERS 00092000 * DMKMCTAF - TO HANDLE USERS WITH PROCESSOR AFFINITY 00092500 * DMKPGTSP - TO RELEASE A DASD PAGE ASSIGNED TO SYSTEM 00093000 * DMKFREE - TO GET STORAGE FOR NON-SHARED PAGE AND SWAP TABLES 00094000 * DMKPTRAN - TO BRING IN AND LOCK A PAGE 00095000 * DMKPTRFR - TO GET A PAGE OF STORAGE 00095500 * DMKFRET - TO RELEASE STORAGE 00096000 * DMKCFMBK - TO PUT A VIRTUAL MACHINE IN CONSOLE FUNCTION MODE 00097000 * DMKPTRPW - TO WAIT UNTIL I/O IS COMPLETE FOR A VIRTUAL MACHINE 00098000 * DMKSTKOP - TO STACK A REQUEST FOR THE OTHER PROCESSOR 00099000 * DMKSTKMP - TO STACK A REQUEST FOR THE CURRENT PROCESSOR 00100000 * DMKCLKCK - TO SYNCHRONIZE THE CLOCKS 00101000 * DMKAPIPR - TO INITIALIZE THE APU'S PSA AND SET UP THE AP 00102000 * ENVIRONMENT 00103000 * DMKSCNVS - TO GET A DEVICE BLOCK 00104000 * DMKDSPCH - TO RETURN TO DISPATCHER 00105000 * 00106000 * EXTERNAL REFERENCES - 00107000 * 00108000 * DMKPTRRC - NUMBER OF RESIDENT, RESERVED PAGES 00110000 * DMKVMAS1 - ANCHOR FOR SHARED SYSTEMS (SHRTABLE POINTER) 00111000 * DMKPTRSC - NUMBER OF RESIDENT SHARED PAGES 00112000 * DMKSYSOW - ADDRESS OF THE DEVICE OWNED LIST 00113000 * DMKSCHTQ - POINTER TO TOD CLOCK COMPARATOR REQUEST QUEUE 00114000 * DMKSNTBL - POINTER TO THE SYSTEM NAME TABLE 00115000 * DMKFREAP - POINTER TO BACK POCKET FOR DMKFRE IN AP MODE 00116000 * DMKDMPMA - THE MAIN PROCESSOR'S ADDRESS 00117000 * DMKDMPAA - THE ATTACHED PROCESSOR'S ADDRESS 00118000 * DMKDMPSA - POINTER TO THE PSA ADDRESSES 00119000 * DMKSCHCA - SCHEDULER ATTACHED PROCESSOR WAIT VALUES 00120000 * DMKCQRWS - ATTACHED PROCESSOR PAGE WAIT SAVE VALUE 00121000 * DMKPAGWS - ATTACHED PROCESSOR PAGE WAIT SAVE VALUE 00122000 * DMKMCTFL - DMKMCT FLAG FIELD TO TEST FOR DMKMCTFS ENTRY 00122100 * DMKMCTPF - ADDRESS OF PSA PAGE OF OFFLINE PROCESSOR 00122200 * DMKLOKSY - ADDRESS OF GLOBAL SYSTEM LOCK 00122300 * DMKLOKDS - ADDRESS OF DSP QUEUES LOCK 00122400 * DMKLOKTR - ADDRESS OF TRQ LOCK 00122500 * DMKLOKRL - ADDRESS OF RUN LIST LOCK 00122600 * DMKLOKFR - ADDRESS OF FREE STORAGE LOCK 00122700 * 00123000 * 00124000 * TABLES / WORKAREAS - 00125000 * 00126000 * CORTABLE, SWPTABLE, PAGTABLE, SEGTABLE, SHRTABLE 00127000 * 00128000 * REGISTER USAGE - 00129000 * 00130000 * GPR0-10 = SCRATCH 00131000 * GPR11 = VMBLOK BASE 00132000 * GPR12 = DMKCPU BASE 00133000 * GPR13 = SAVEAREA BASE 00134000 * GPR14 = EXTERNAL LINKAGE 00135000 * GPR15 = EXTERNAL LINKAGE 00136000 * 00137000 * NOTES - 00138000 * NONE 00139000 * 00140000 * MESSAGES - 00141000 * 00142000 * NORMAL- 00143000 * DMKCPU193I PROCESSOR YY ONLINE 00144000 * DMKCPU194I PROCESSOR YY OFFLINE 00145000 * 00146000 * ERROR - 00147000 * DMKCPU021E RADDR MISSING OR INVALID 00148000 * DMKCPU191E PROCESSOR YY DOES NOT EXIST 00149000 * DMKCPU192E VARY PROCESSOR COMMAND FAILED 00150000 * 00150200 * WAIT STATES - 00150400 * NONE 00150600 * 00150800 * 00151000 * ABENDS - 00152000 * NONE 00153000 * 00155000 * 00156000 * 00157000 * 00158000 * A. OPERATION OF DMKCPUVY - 00159000 * 00160000 * 1. VERIFY THAT THE VARY PROCESSOR COMMAND WAS ISSUED LEGALLY 00161000 * THE SET POFFLINE TO ONE. 00162000 * 2. IF THE REQUEST IS AN OFFLINE, BRANCH TO DMKCPUOF (STEP 11). 00163000 * 3. IF THE REQUEST IS AN ONLINE, ATTEMPT TO SIGP IPR THE GIVEN 00164000 * PROCESSOR ADDRESS. IF UNSUCCESSFUL, ISSUE ERROR MESSAGE 00165000 * AND RETURN TO CALLER. 00166000 * 4. OBTAIN FROM FREE STORAGE THOSE CONTROL BLOCKS NECESSARY 00167000 * FOR AN AP SYSTEM TO RUN. NAMELY, DEFERRED EXECUTION BLOCKS 00168000 * (ONE PER VMBLOK), A BACK POCKET FOR DMKFRE, A CPEXBLOK FOR 00169000 * THE SWITCH MACRO, AND A PAGE FOR EACH PSA. 00170000 * 5. ADJUST THE SUPERVISOR STATE TIME FIELDS (VMCPTIME AND 00171000 * VMAPTIME) TO THE AP MODE VALUES. 00172000 * 6. THE PSA'S ARE INITIALIZED FOR THE AP ENVIRONMENT VIA 00173000 * A CALL TO DMKAPIPR. 00174000 * 7. DMKCLKCK IS CALLED TO SYNCHRONIZE THE CLOCKS. 00175000 * 8. A SIGNAL WAKEUP IS ISSUED TO THE GIVEN PROCESSOR. 00176000 * 9. THE ONLINE MESSAGE IS ISSUED. 00177000 * 10. RETURN IS MADE TO DMKCPS. 00178000 * 00179000 * 11. AT DMKCPUOF, THE PROCESSOR PENDING OFFLINE IS QUIESCED AND 00180000 * THEN STOPPED BY USING SIGP INSTRUCTIONS. 00181000 * 12. A BRANCH IS THEN MADE TO ENTRY POINT DMKCPPUP TO REVERT 00182000 * TO UNIPROCESSOR MODE. DMKCPPUP RETURNS TO ITS CALLER. 00183000 * 13. (SEE THE PROLOGUE FOR DMKCPPUP). 00184000 * 14. FOR VARY OFFLINE, UPON RETURN FROM DMKCPPUP, 00185000 * THE OFFLINE MESSAGE IS ISSUED TO ALL VIRTUAL MACHINES; 00186000 * THOSE VIRTUAL MACHINES WITH AFF. SET TO THE PROCESSOR 00187000 * GOING OFFLINE ARE NOTIFIED THAT THE AFFINITY IS SET OFF 00188000 * AND ARE PUT IN CONSOLE FUNCTION MODE. VMTTIME IS 00189000 * SYNCHRONIZED FOR EACH VMBLOK. THE CPU TIMER IS RESET. 00190000 * THE VMBLOK LOCK AND THE SYSTEM LOCK ARE ZEROED AND 00191000 * POFFLINE IS SET OFF. 00192000 * 15. RETURN IS MADE TO DMKCPS. 00193000 * 00194000 EJECT 00195000 MODID DC CL8'DMKCPU ' MODULE NAME @V5BC0AB 00196000 SPACE 2 00197000 USING PSA,R0 @V5BC0AB 00198000 SPACE 00199000 USING VMBLOK,R11 @V5BC0AB 00200000 SPACE 00201000 USING SAVEAREA,R13 @V5BC0AB 00202000 SPACE 00203000 DMKCPUVY RELOC 00204000 L R15,PREFIXA SET UP TO ACCESS ABSOLUTE ZERO @VA12934 00204020 CLI CPAPRINP-PSA(R15),X'FF' IS AUTOMATIC PROCESSOR @VA12934 00204040 * RECOVERY IN PROCESS? 00204060 BE APRINPR YES, DON'T LET VARY BEGIN @VA12934 00204080 TM APSTAT4,POFFLINE IS VARY CURRENTLY IN PROCESS? @VMV0008 00204100 BO VARYINPR YES, GO ISSUE ERROR MESSAGE @VMV0008 00204200 OI APSTAT4,POFFLINE INDICATE VARY IS IN PROCESS @VMV0008 00204300 L R15,PREFIXB GET ADDRESS OF OTHER PSA @VMV0008 00204400 OI APSTAT4-PSA(R15),POFFLINE SET VARY IN PROCESS @VMV0008 00204500 TM APSTAT1,MPFEAT IS THE MP FEATURE INSTALLED? @V5BC0AB 00205000 BZ ERCPU192 NO, ISSUE ERROR MSG AND EXIT @V5BC0AB 00206000 L R3,=A(DMKSYSAP) GET GENNED PARAMETER @VA10332 00206250 CLI 0(R3),C'N' IS AP GENERATED @VA10332 00206500 BE ERCPU192 NO..EASE ON DOWN, EASE ON DOWN @VA10332 00206750 LA R1,0(R1) CLEAR FIRST BYTE OF REGISTER ONE @V5BC0AB 00207000 CALL DMKCVTBH CONVERT PROC ADDRESS TO PRINTABLE FORM X00208000 @V5BC0AB 00209000 STH R1,SAVEWRK1+2 SAVE THE PROCESSOR ADDRESS @V5BC0AB 00210000 L R2,HEX3F GET HIGHEST PROCESSOR ADDRESS @V5BC0AB 00211000 L R1,SAVER1 GET INPUT REGISTER @V5BC0AB 00212000 N R1,F255 LEAVE ONLY PROCESSOR ADDRESS @V5BC0AB 00213000 CR R1,R2 IS THE CPU ADDRESS VALID? @V5BC0AB 00214000 BH ERCPU21E NO, ISSUE ERROR MESSAGE @V5BC0AB 00215000 TM APSTAT1,APUOPER IS SYSTEM IN AP MODE? @V5BC0AB 00216000 BO CHKOFF YES, IT MUST BE AN OFFLINE REQUEST X00217000 @V5BC0AB 00218000 CLC SAVER1(1),ZEROES IS REQUEST FOR ONLINE? @V5BC0AB 00219000 BNE ERCPU192 NO, OFFLINE. ISSUE ERROR MESSAGE X00220000 @V5BC0AB 00221000 B DMKCPUON YES, GO TO ONLINE ROUTINE @V5BC0AB 00222000 CHKOFF DS 0H @V5BC0AB 00223000 CLI SAVER1,FF IS REQUEST FOR OFFLINE? @V5BC0AB 00224000 BNE ONTST NO, ONLINE. COMPARE TO ONLINE PROC'S X00225000 @V5BC0AB 00226000 CH R1,IPUADDR IS PROCESSOR ONLINE? @V5BC0AB 00227000 BNE CHKADDRX NOT THIS ONE, CHECK OTHER @V5BC0AB 00228000 TM APSTAT1,PROCIO IS THIS ONE THE MAIN? @V5BC0AB 00229000 BNO DMKCPUOF NO, CONTINUE OFFLINE PROCESS @V5BC0AB 00230000 TM APSTAT1,CSSFEAT CSS AVAILABLE? @V60B7AB 00230500 BO DMKCPUOF YES, CONTINUE OFFLINE PROCESS @V60B7AB 00231000 B ERCPU192 NO, ISSUE ERROR MESSAGE @V50BCAC 00231500 CHKADDRX CH R1,IPUADDRX IS THE CPU THE OTHER PROCESSOR? @V5BC0AB 00232000 BNE ERCPU21E NO, ADDRESS IS INVALID @V5BC0AB 00233000 TM APSTAT1,PROCIO+CSSFEAT TEST IF THIS IS THE I/O @V60B7AB 00234000 * PROCESSOR AND IF CSS IS AVAILABLE. IF BOTH ARE 00235000 * ZERO, IT MEANS THAT THE MAIN PROCESSOR IS TO BE VARIED 00236000 * OFFLINE, BUT CHANNEL SET SWITCHING IS NOT AVAILABLE. 00237000 BZ ERCPU192 ISSUE ERROR MESSAGE @V60B7AB 00238000 B DMKCPUOF CONTINUE THE OFFLINE PROCESS @V60B7AB 00239000 ONTST DS 0H @V5BC0AB 00240000 CH R1,IPUADDR IS THE PROCESSOR ONLINE? @V5BC0AB 00241000 BE ONCPU193 YES, GO ISSUE ONLINE MESSAGE @V5BC0AB 00242000 CH R1,IPUADDRX IS THIS THE PROCESSOR? @V5BC0AB 00243000 BE ONCPU193 YES, GO ISSUE ONLINE MESSAGE @V5BC0AB 00244000 ERCPU192 DS 0H @V5BC0AB 00245000 LA R15,192 GET MESSAGE NUMBER @V5BC0AB 00246000 ST R15,SAVER1 AND SAVE IT IN HIS REGISTER 1 @V5BC0AB 00247000 LA R0,CPU192LN @V5BC0AB 00248000 LA R1,CPU192MG @V5BC0AB 00249000 B ISSUEMSG @V5BC0AB 00250000 * 00251000 ERCPU21E DS 0H @V5BC0AB 00252000 MVC CPUID021(2),SAVEWRK1+2 PROCESSOR ADDR TO MSG. @VA09324 00252010 LA R15,21 GET ERROR MESSAGE FOR DMKCPS @V5BC0AB 00253000 ST R15,SAVER1 AND SAVE IT IN HIS REGISTER 1 @V5BC0AB 00254000 LA R0,CPU21ELN @V5BC0AB 00255000 LA R1,CPU21EMG @V5BC0AB 00256000 B ISSUEMSG @V5BC0AB 00257000 * 00258000 CPU191ER DS 0H @V5BC0AB 00259000 LCTL C0,C0,CPCREG0 LOAD ORIGINAL CONTROL REG 0 @V5BC0AB 00260000 ERCPU191 DS 0H @V5BC0AB 00261000 LA R15,191 GET ERROR MESSAGE FOR DMKCPS @V5BC0AB 00262000 ST R15,SAVER1 AND SAVE IT IN HIS REGISTER 1 @V5BC0AB 00263000 MVC CPUID191(2),SAVEWRK1+2 GET CPU ADDRESS @V5BC0AB 00264000 LA R0,CPU191LN @V5BC0AB 00265000 LA R1,CPU191MG @V5BC0AB 00266000 B ISSUEMSG @V5BC0AB 00267000 * 00268000 APRINPR DS 0H @VA12934 00268100 VARYINPR DS 0H @VA12934 00268150 LA R15,192 LOAD MESSAGE NUMBER @VMV0008 00268200 ST R15,SAVER1 STORE IN CALLER'S REGISTER 1 @VMV0008 00268300 LA R0,CPU192LN GET MESSAGE LENGTH @VMV0008 00268400 LA R1,CPU192MG GET ADDRESS OF MESSAGE @VMV0008 00268500 CALL DMKQCNWT,PARM=NORET HAVE MESSAGE PRINTED @VMV0008 00268600 EXIT RETURN TO CALLER @VMV0008 00268700 * 00269000 * 00270000 * 00271000 * 00272000 DMKCPUON DS 0H @V5BC0AB 00273000 SPACE 00274000 * DETERMINE IF THE GIVEN PROCESSOR IS ALREADY ONLINE 00275000 CH R1,IPUADDR @V5BC0AB 00276000 BE ONCPU193 ISSUE ONLINE MESSAGE @V5BC0AB 00277000 LR R2,R1 PUT PROCESSOR ADDRESS IN R2 @V5BC0AB 00278000 SR R1,R1 CLEAR SIGP STATUS REGISTER @V5BC0AB 00279000 LA R14,1000 IPR BUSY LOOP COUNTER @V5BC0AB 00280000 * 00281000 SIPRLOOP DS 0H @V5BC0AB 00282000 SIGP R1,R2,SIGIPR @V5BC0AB 00283000 BC 8,ADDROK CC0 IPR STARTED SUCCESSFULLY @V5BC0AB 00284000 BC 5,ERCPU191 CC3-NOT OPER. AND CC1-STATUS STORED X00285000 @V5BC0AB 00286000 BCT R14,SIPRLOOP CC2-BUSY @V5BC0AB 00287000 B ERCPU191 ISSUE ERROR MESSAGE, CC2, BUSY 1000 X00288000 TIMES 00289000 ADDROK DS 0H @V5BC0AB 00290000 LA R14,10 WINDOW CONTROL COUNTER @V5BC0AB 00291000 * * 00292000 * * 00293000 STCTL C0,C0,SAVEWRK9 SAVE CONTROL REG 0 IN WORKAREA @V5BC0AB 00294000 NC SAVEWRK9+2(2),EXTNBITS LEAVE ONLY MFA BIT ON @V5BC0AB 00295000 OI SAVEWRK9+2,MFAMASK INSURE MFA BIT IS ON @V5BC0AB 00296000 ADDROK1 DS 0H @V5BC0AB 00297000 LCTL C0,C0,SAVEWRK9 LOAD C0 WITH ONLY MFA BIT ON @V5BC0AB 00298000 LA R5,100 SENSE BUSY LOOP CONTROL COUNTER @V5BC0AB 00299000 SENSLOOP DS 0H @V5BC0AB 00300000 SIGP R1,R2,SIGSENSE SIGP SENSE FOR COMPLETION OF SIGP IPR X00301000 @V5BC0AB 00302000 BC 8,DOONLINE CC0 IPR COMPLETE @V5BC0AB 00303000 BC 4,CKSTATUS CC1 STATUS STORED, GO CHECK IT @V5BC0AB 00304000 BC 1,CPU191ER CC3 NOT OPERATIONAL @V5BC0AB 00305000 BCT R5,SENSLOOP LOOP ON BUSY FOR 100 TIMES(CC2) @V5BC0AB 00306000 * 00307000 STOSM SAVEWRK2,EXTMASK ENABLE FOR EXTERNAL INTERRUPTS @V5BC0AB 00308000 STNSM SAVEWRK2,FF-EXTMASK DISABLE FOR EXTERNAL INTERRUPTS X00309000 @V5BC0AB 00310000 BCT R14,ADDROK1 ENABLE FOR MFA 10 TIMES (1/100 SENSE) X00311000 @V5BC0AB 00312000 LCTL C0,C0,CPCREG0 LOAD ORIGINAL CONTROL REG 0 @V5BC0AB 00313000 B ERCPU192 ISSUE ERROR MESSAGE @V5BC0AB 00314000 CKSTATUS DS 0H @V5BC0AB 00315000 C R1,STOPPED @V5BC0AB 00316000 BE DOONLINE @V5BC0AB 00317000 LCTL C0,C0,CPCREG0 LOAD ORIGINAL CONTROL REG 0 @V5BC0AB 00318000 B ERCPU192 ISSUE ERROR MESSAGE @V5BC0AB 00319000 SPACE 00320000 * THE FOLLOWING CODE WILL LOCATE THE CONTIGUOUS PAGE AND SWAP * 00321000 * TABLES FOR EACH SHARED SEGMENT AND UPDATE THE PAGTOT FIELD * 00322000 * OF THE OFFLINE PROCESSOR'S SET TO THE VALUE OF THE PAGTOT * 00323000 * FIELD OF THE ONLINE PROCESSOR'S SET. * 00324000 SPACE 00325000 DOONLINE DS 0H @V5BC0AB 00326000 LCTL C0,C0,CPCREG0 LOAD ORIGINAL CONTROL REG 0 @V5BC0AB 00327000 SPACE 00328000 L R4,=A(DMKVMAS1) ADDRESS OF SHRTABLE ANCHOR @V5BC0AB 00331000 L R5,0(,R4) ADDRESS OF FIRST SHRTABLE @V5BC0AB 00332000 SHRTSCAN DS 0H @V5BC0AB 00333000 CR R5,R4 END OF CHAIN? @V5BC0AB 00334000 BE GETBLOCK YES, GET AP CONTROL BLOCKS @V5BC0AB 00335000 SPACE 00336000 USING SHRTABLE,R5 @V5BC0AB 00337000 TM SHRFLAG,SHRNOPRT IS NAMED SYSTEM UNPROTECTED? @VMI0032 00338000 BNO PROTECTD NO, BRANCH @VMI0032 00339000 L R5,SHRFPNT GET ADDRESS OF NEXT SHRTABLE @VMI0032 00340000 LA R5,0(,R5) ERASE SHRFLAG VALUE @VMI0085 00341000 B SHRTSCAN CHECK ALL OF THE SHARE TABLES @VMI0032 00342000 PROTECTD DS 0H @VMI0032 00343000 SPACE 00344000 L R3,SHRSEGCT GET NUMBER OF SHARED SEGMENTS @V5BC0AB 00345000 LR R14,R3 GET NUMBER OF SHARED SEGMENTS @V5BC0AB 00346000 LA R8,SHRSEGNM ADDRESS SEGNM FIELD @V5BC0AB 00347000 * 00348000 FSHRPAGE DS 0H @V5BC0AB 00349000 LA R8,4(,R8) GET NEXT POSSIBLE SHRPAGE POINTER X00350000 @V5BC0AB 00351000 S R14,F4 SUBTRACT FOUR FROM SHRSEGNM @V5BC0AB 00352000 * (THERE MAY BE 4 ENTRIES PER WORD) 00353000 BP FSHRPAGE LOOP UNTIL AT END OF THE VARIABLE X00354000 @V5BC0AB 00355000 * SHRSEGNM AREA 00356000 SPACE 00357000 USING SHRPAGE,R8 R8 ADDRESS THE BEGINNING OF THE @V5BC0AB 00358000 * SHRPAGE FIELDS 00359000 * 00360000 PAGELOOP DS 0H @V5BC0AB 00361000 L R7,SHRPAGE LOAD A PAGE TABLE ADDRESS FROM THE X00362000 @V5BC0AB 00363000 * SHRTABLE 00364000 N R7,=A(X'FFFFFE') LEAVE PTO ADDRESS ONLY @V5BC0AB 00365000 SL R7,F16 BACK UP TO THE HEADER @V5BC0AB 00366000 TM APSTAT1,PROCIPL RUNNING ON THE MAIN (IPL) PROC? @V60B7AA 00366300 BO UPDT2ND YES-UPDATE SECOND SET OF TABLES @V60B7AA 00366600 LH R2,PAGBMP+PAGTOT-PAGTABLE(R7) GET TOTAL SEGMENT @V60B7AA 00366900 * USE COUNT FROM ONLINE PROC'S PGTABLE 00367200 STH R2,PAGTOT-PAGTABLE(R7) UPDATE THE COUNT IN THE @V60B7AA 00367500 * IPL PROC'S PAGETABLE 00367800 B NXTSHRPG GET NEXT SHRPAGE ENTRY @V60B7AA 00368100 UPDT2ND LH R2,PAGTOT-PAGTABLE(R7) GET TOTAL SEGT USE COUNT @V60B7AA 00368400 STH R2,PAGBMP+PAGTOT-PAGTABLE(R7) UPDATE THE SECOND @V5BC0AB 00369000 * PAGE TABLE SEGMENT USE COUNT 00370000 NXTSHRPG DS 0H @V60B7AA 00370500 LA R8,4(,R8) ADDRESS OF NEXT SHRPAGE ENTRY @VA09441 00371100 BCT R3,PAGELOOP DO NEXT SHRPAGE ENTRY, IF THERE IS ONE X00373000 @V5BC0AB 00374000 L R5,SHRFPNT GET ADDRESS OF NEXT SHRTABLE @V5BC0AB 00375000 B SHRTSCAN DO ALL OF THE SHARE TABLES @V5BC0AB 00376000 DROP R5 @V5BC0AB 00377000 SPACE 00378000 DROP R8 @V5BC0AB 00379000 SPACE 00380000 * END OF SHARED SEGMENT PAGTOT UPDATING * 00381000 SPACE 00382000 SPACE 00383000 GETBLOCK DS 0H @V5BC0AB 00384000 SPACE 00385000 * OBTAIN THE PREFIX STORAGE AREAS 00386000 SR R2,R2 SET UP TO CALL DMKPTRFR FOR A PAGE X00387000 @V5BC0AB 00388000 * OF STORAGE 00389000 CALL DMKPTRFR OBTAIN STORAGE @V5BC0AB 00390000 LA R8,SAVEWRK8 ADDRESS TO STORE PSA ADDRESSES @VA09386 00391100 * FOR DUMP ROUTINE 00393000 SPACE 00394000 USING CORTABLE,R7 R7 HAS CORTABLE ENTRY ADDRESS OF PAGE X00395000 @V5BC0AB 00396000 SPACE 00397000 MVC CORFPNT,ASYSVM INDICATE OWNER IS SYSTEM @V5BC0AB 00398000 MVI CORFLAG,CORCP INDICATE THIS IS A CP FRAME @V5BC0AB 00399000 SL R7,ACORETBL FORM THE @V5BC0AB 00400000 SLL R7,8 PAGE ADDRESS @V5BC0AB 00401000 ST R7,0(,R8) SAVE PSA ADDRESS FOR THE MAIN PROCESSOR X00402000 @V5BC0AB 00403000 L R15,=A(DMKMCTPF) ADDRESS OF PSA PAGE ADDRESS @VA12934 00404000 L R7,0(R15) ADDRESS OF PSA PAGE OF A PREVIOUS@VA12934 00404080 * FAILING PROCESSOR 00404160 LTR R7,R7 IS THERE A PSA PAGE ALREADY FOR @VA12934 00404240 * THE OTHER PROCESSOR? 00404320 BZ OBTPSA NO -- OBTAIN A NEW PAGE FOR PSA @VA12934 00404400 ST R7,4(,R8) YES -- A PSA PAGE EXISTS FROM THE@VA12934 00404480 * LAST TIME THE PROCESSOR WAS ONLINE. 00404560 * REUSE THE SAME PAGE FOR THE PSA. 00404640 XC 0(4,R15),0(R15) ZERO THE PSA PAGE ADDRESS @VA12934 00404720 B GETCPEX @VA12934 00404800 OBTPSA SR R2,R2 @VA12934 00404880 CALL DMKPTRFR OBTAIN STORAGE @V5BC0AB 00405000 MVC CORFPNT,ASYSVM INDICATE SYSTEM IS OWNER @V5BC0AB 00406000 MVI CORFLAG,CORCP INDICATE THIS IS A CP FRAME @V5BC0AB 00407000 SL R7,ACORETBL FORM THE @V5BC0AB 00408000 SLL R7,8 PAGE ADDRESS @V5BC0AB 00409000 ST R7,4(,R8) SAVE PSA ADDRESS FOR THE AP @V5BC0AB 00410000 SPACE 00411000 DROP R7 @V5BC0AB 00412000 SPACE 00413000 * GET CPEXBLOK FOR THE SWITCH MACRO 00414000 GETCPEX LA R0,CPEXSIZE GET LENGTH IN DOUBLE WORDS @VA12934 00415000 CALL DMKFREE OBTAIN STORAGE @V5BC0AB 00416000 ST R1,PSACPXBP SAVE ADDRESS IN ABSOLUTE 0 PSA @V5BC0AB 00417000 * GET STORAGE FOR DMKFREE USE DURING EXTEND PROCESSING WHEN THE 00418000 * THE SYSTEM LOCK IS NOT AVAILABLE 00419000 L R10,CPUFREAP GET ADDRESS OF BACK POCKET POINTER X00420000 @V5BC0AB 00421000 SR R0,R0 CLEAR INPUT REGISTER @V5BC0AB 00422000 IC R0,0(R10) GET NUMBER OF DOUBLE WORDS @V5BC0AB 00423000 CALL DMKFREE OBTAIN STORAGE @V5BC0AB 00424000 STCM R1,B'0111',1(R10) SAVE ADDRESS OF DMKFREE BACK POCKET X00425000 @V5BC0AB 00426000 LA R0,CPEXSIZE MUST GET CPEXBLOK TOO @VA12596 00426100 CALL DMKFREE @VA12596 00426300 ST R1,4(,R10) PUT CPEX POINTER IN DMKFREAP @VA13499 00426600 * 00427000 * 00428000 SPACE 00429000 SR R15,R15 CLEAR R15 @V5BC0AB 00430000 ICM R15,B'0011',SAVER1+2 GET THE PROCESSOR ADDRESS @V5BC0AB 00431000 STH R15,IPUADDRX SAVE IT IN ABSOLUTE 0 PSA @V5BC0AB 00432000 STH R15,LPUADDRX @V5BC0AB 00433000 OI LPUADDRX+1,LOGICADR MAKE IT A LOGICAL ADDRESS @V5BC0AB 00434000 SLR R1,R1 CLEAR REGISTER 1 @VA12934 00434100 L R15,=A(DMKLOKDS) ADDRESS OF DSP QUEUES LOCK @VA12934 00434200 ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00434300 L R15,=A(DMKLOKTR) ADDRESS OF TRQ LOCK @VA12934 00434400 ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00434500 L R15,=A(DMKLOKRL) ADDRESS OF RUN LIST LOCK @VA12934 00434600 ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00434700 L R15,=A(DMKLOKFR) ADDRESS OF FREE STORAGE LOCK @VA12934 00434800 ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00434900 L R15,=A(DMKLOKSY) ADDRESS OF GLOBAL SYSTEM LOCK @VA12934 00435000 ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00435100 * PAGE IN AND LOCK DMKCLKCK BEFORE APUOPER GETS TURNED ON 00435200 L R1,=A(DMKCLKCK) ADDRESS OF DMKCLKCK ROUTINE @VA12934 00435300 TRANS 2,1,OPT=(BRING+DEFER+SYSTEM+LOCK) @VA12934 00435400 ST R2,SAVECLK SAVE REAL ADDRESS OF DMKCLK @VA12934 00435500 LA R1,SAVEWRK8 POINTER TO PSA ADDRESSES @VA09386 00437100 CALL DMKAPIPR SET UP FOR THE ATTACHED PROCESS. @V5BC0AB 00438000 L R15,PREFIXB ADDRESS ATTACHED PROC'S PSA @VMH0001 00439000 LM R0,R1,WAITSAV8 LOAD INITIAL PAGE WAIT TIME @VMH0012 00440000 STM R0,R1,PGWAITIM-PSA(R15) SET ATTACHED PG WT TIME @VMH0012 00441000 SLR R0,R0 ZERO REGISTER ZERO @VMH0012 00442000 ST R0,PWTPAGES-PSA(R15) SET PAGE WAIT COUNT TO 0 @VMH0012 00443000 LA R1,1 GET INCREMENT OF 1 @VA11576 00443005 AL R1,SHRLKCNT-PSA(R15) ADD 1 TO CPSHRLK COUNT @VA11576 00443010 ST R1,SHRLKCNT-PSA(R15) STORE UPDATED COUNT @VA11576 00443015 OI CPSTAT2-PSA(R15),CPSHRLK FREEZE THE SYSTEM @VA11576 00443020 SPACE 00444000 CALL DMKCLKCK SYNCHRONIZE THE CLOCKS @V5BC0AB 00445000 L R2,SAVECLK RETRIEVE REAL ADDRESS OF DMKCLK @VA12934 00445030 CALL DMKPTRUL UNLOCK DMKCLK PAGE @VA12934 00445060 L R15,PREFIXB GET AP PSA @VA11576 00445100 L R1,SHRLKCNT-PSA(,R15) GET CURRENT SHRLK COUNT @VA11576 00445200 BCTR R1,0 DECREMENT COUNT BY 0NE @VA11576 00445300 ST R1,SHRLKCNT-PSA(,R15) STORE UPDATED COUNT @VA11576 00445400 LTR R1,R1 TEST IF COUNT NOW 0 @VA11576 00445500 BNZ WAKEAP NO,SKIP RESET OF CPSHRLK @VA11576 00445600 NI CPSTAT2-PSA(R15),X'FF'-CPSHRLK RESET CPSHRLK @VA11576 00445700 WAKEAP DS 0H @VA11576 00445800 SPACE 00446000 SIGNAL WAKEUP WAKE UP THE ATTACHED PROCESSOR @V5BC0AB 00447000 SPACE 00448000 L R1,ASYSVM GET SYSTEM VMBLOK ADDRESS @VMH0038 00449000 L R1,VMPNT-VMBLOK(,R1) 1ST VMBLOK ADDR IN CHAIN @VMH0038 00450000 LR R10,R1 SAVE ENDING ADDRESS @VMH0038 00451000 MVC SAVER1(4),ZEROES ZERO THE CALLER'S REGISTER ONE @V5BC0AB 00452000 MVC CPUID193(2),SAVEWRK1+2 PROCESSOR ADDRESS @VA09324 00452100 ONLMSGLP DS 0H @V5BC0AB 00453000 * R11 CONTAINS THE LOCKED VMBLOK. THE FIRST TIME THROUGH THIS 00454000 * LOOP, R11 IS THE ONE ON ENTRY TO DMKCPU. 00455000 SWTCHVM UNLOCK THE THE VMBLOK ADDRESSED @VMH0038 00456000 * BY R11 AND LOCK THE ONE TO RECEIVE THE 00457000 * ONLINE MESSAGE (R1) 00458000 LA R0,CPU193LN GET ONLINE MESSAGE LENGTH @VMH0038 00459000 LA R1,CPU193MG GET ONLINE MESSAGE ADDRESS @VMH0038 00460000 CALL DMKQCNWT,PARM=NORET ISSUE MESSAGE @V5BC0AB 00461000 L R1,VMPNT GET ADDRESS OF NEXT VMBLOK @VMH0038 00462000 CR R10,R1 END OF CHAIN? @VMH0038 00463000 BNE ONLMSGLP NO, SEND MESSAGE TO ALL USERS @V5BC0AB 00464000 NI APSTAT4,FF-POFFLINE VARY PROCESS IS NOT ACTIVE @V5BC0AB 00465000 L R15,PREFIXB ADDRESS THE OTHER PROC'S PSA @V5BC0AB 00466000 NI APSTAT4-PSA(R15),FF-POFFLINE SET POFFLINE TO ZERO X00467000 @V5BC0AB 00468000 L R1,SAVER11 GET ORIGINAL VMBLOK ADDRESS @VMH0038 00469000 SWTCHVM LOCK THE COMMAND ISSUER'S VMBLOK @VMH0038 00470000 EXIT 00471000 SPACE 00472000 ONCPU193 DS 0H @V5BC0AB 00473000 MVC CPUID193(2),SAVEWRK1+2 GET PROCESSOR ADDRESS @V5BC0AB 00474000 LA R0,CPU193LN GET ONLINE MSG LENGTH @V5BC0AB 00475000 LA R1,CPU193MG GET ONLINE MSG ADDRESS @V5BC0AB 00476000 MVC SAVER1(4),ZEROES ZERO THE CALLERS REGISTER 1 @V5BC0AB 00477000 SPACE 00478000 ISSUEMSG DS 0H @V5BC0AB 00479000 CALL DMKQCNWT,PARM=NORET ISSUE MESSAGE @V5BC0AB 00480000 NI APSTAT4,FF-POFFLINE SET OFF VARY PROCESS FLAG @VMV0008 00480250 L R15,PREFIXB GET ADDRESS OF OTHER PSA @VMV0008 00480500 NI APSTAT4-PSA(R15),FF-POFFLINE SET OFF VARY FLAG @VMV0008 00480750 EXIT 00481000 EJECT 00482000 DMKCPUOF DS 0H @V5BC0AB 00483000 LH R15,SAVER1+2 GET PROCESSOR ADDRESS IN COMMAND @V60B7AB 00484000 CH R15,IPUADDR SAME AS THIS PROCESSOR? @V60B7AB 00485000 BNE DMKCPUOG NO, BRANCH @VA12934 00486000 LA R0,CPEXSIZE GET SIZE OF A CPEXBLOK @VA12934 00487000 CALL DMKFREE OBTAIN STORAGE @VA12934 00488000 USING CPEXBLOK,R1 @VA12934 00489000 STM R0,R15,CPEXREGS SAVE REGISTERS @VA12934 00490000 LA R15,DMKCPUOG ADDRESS OF RETURN POINT @VA12934 00491000 ST R15,CPEXADD STORE RETURN ADDRESS IN CPEXBLOK @VA12934 00492000 DROP R1 @VA12934 00493000 CALL DMKSTKOP STACK REQUEST FOR OTHER PROCESSOR@VA12934 00494000 GOTO DMKDSPCH GO TO THE DISPATCHER @VA12934 00495000 SPACE 1 00496000 DMKCPUOG DS 0H @VA12934 00497000 * MUST PAGE IN AND LOCK DMKCPP BEFORE STOPPING OTHER PROCESSOR 00498000 L R1,=A(DMKCPPUP) ADDRESS TO LOCK @VA12934 00499000 TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK),AFFINITY @VA12934 00500000 ST R2,SAVECPP SAVE ADDRESS OF DMKCPP @VA12934 00501000 SIGQUIES EQU * @VA12934 00502000 SIGNAL QUIESCE @VA12934 00503000 SIGNAL STOP @VA12934 00504000 L R14,CPUEXTST ADDRESS OF FIELD CONTAINING THE @VA12934 00505000 * LOGICAL ADDRESS OF STOPPED PROC. 00506000 LH R15,LPUADDRX LOGICAL ADDRESS OF OTHER PROC. @VA12934 00507000 STH R15,0(,R14) STORE LPUADDRX IN DMKEXTST @VA12934 00508000 SPACE 00509000 CALL DMKCPPUP REVERT TO UNIPROCESSOR MODE @VA12934 00510000 SPACE 00521000 LR R7,R1 SAVE RETURN CODE FROM DMKCPP @VA12934 00521100 L R2,SAVECPP GET ADDRESS OF DMKCPP @VA12934 00521200 CALL DMKPTRUL UNLOCK DMKCPP @VA12934 00521300 LTR R1,R7 WAS DMKCPP SUCCESSFUL? @VA12934 00521400 BNZ ERCPU192 NO, ERROR MESSAGE @VA12934 00521500 CPUEXIT DS 0H @V5BC0AB 00522000 * CHECK AFFINITY SETTINGS 00523000 SLR R7,R7 CLEAR REGSITER 7 @VMH0033 00524000 L R11,ASYSVM START GOING DOWN CHAIN OF VMBLOKS X00525000 @V5BC0AB 00526000 L R11,VMPNT GET FIRST VMBLOK IN CYCLIC CHAIN @V5BC0AB 00527000 LR R10,R11 SAVE ENDING ADDRESS @V5BC0AB 00528000 MVC CPUID194(2),SAVEWRK1+2 GET PROCESSOR ADDRESS @V5BC0AB 00529000 CPUEXIT2 DS 0H @V5BC0AB 00530000 LA R0,CPU194LN GET LENGTH OF OFFLINE MESSAGE @V5BC0AB 00531000 LA R1,CPU194MG GET ADDRESS OF OFFLINE MESSAGE @V5BC0AB 00532000 CALL DMKQCNWT,PARM=NORET ISSUE OFFLINE MESSAGE @VMH0033 00533000 LTR R7,R7 HAS A BLOCK BEEN STACKED FOR DMKMCTAF? @VMH0033 00534000 BNZ CHKALLVM YES, BRANCH @VMH0033 00535000 TM VMAFF,VMAFFON AFFINITY SET? @V5BC0AB 00536000 BZ CHKALLVM NO, BRANCH @V5BC0AB 00537000 SR R1,R1 CLEAR REGISTER 1 @V5BC0AB 00538000 IC R1,VMAFF GET AFFINITY BYTE @V5BC0AB 00539000 N R1,=A(X'3F') LEAVE ONLY PROCESSOR ADDRESS @V5BC0AB 00540000 CH R1,IPUADDR AFFINITY SET TO THIS PROCESSOR? @V5BC0AB 00541000 BE CHKALLVM YES, BRANCH @V5BC0AB 00542000 LA R7,1 INDICATE THAT DMKMCTAF HAS BEEN SCHEDULED @VMH0033 00543000 LA R0,CPEXSIZE GET SIZE OF A CPEXBLOK @VMH0033 00544000 CALL DMKFREE GET STORAGE FOR BLOCK @VMH0033 00545000 SPACE 00546000 USING CPEXBLOK,R1 @VMH0033 00547000 SPACE 00548000 SLR R15,R15 CLEAR REGISTER 15 @VMH0033 00549000 LH R15,SAVEWRK1+2 GET PROCESSOR ADDRESS @VMH0033 00550000 ST R15,CPEXR1 SAVE PROCESSOR ADDRESS IN R1 @VMH0033 00551000 L R15,CPUMCTAF GET ADDRESS OF DMKMCTAF @VMH0033 00552000 ST R11,CPEXR11 SAVE VMBLOK ADDRESS @VMH0037 00553000 ST R15,CPEXR12 SAVE ENTRY ADDRESS @VMH0033 00554000 ST R15,CPEXADD SAVE RETURN ADDRESS IN CPEXBLOK @VMH0033 00555000 SPACE 00556000 DROP R1 00557000 SPACE 00558000 CALL DMKSTKCP GO STACK THE CPEXBLOK @VA09324 00559000 CHKALLVM DS 0H @V5BC0AB 00560000 L R11,VMPNT GET ADDRESS OF NEXT VMBLOK @V5BC0AB 00561000 CLR R11,R10 END OF CHAIN? @V5BC0AB 00562000 BNE CPUEXIT2 NO, LOOP THRU ALL VMBLOKS @V5BC0AB 00563000 MVC SAVER1(4),ZEROES CLEAR THE CALLER'S REGISTER 1 @V5BC0AB 00564000 NI APSTAT4,FF-POFFLINE VARY PROCESS IS NOT ACTIVE @V5BC0AB 00565000 EXIT 00566000 * 00567000 * 00568000 EJECT 00569000 * DECLARES * 01249000 MSG044 EQU 44 @V5BC0AB 01250000 LOGICADR EQU X'40' @V5BC0AB 01256000 DS 0D @V5BC0AB 01257000 FF EQU X'FF' @V5BC0AB 01258000 STOPPED DC X'00000040' PROCESSOR IN STOPPPED STATE @V5BC0AB 01259000 HEX3F DC X'0000003F' @V5BC0AB 01262000 DS 0F @V5BC0AB 01263000 CPUDSPRQ DC A(DMKDSPRQ) DISPATCHER QUEUE ANCHORS @VA09324 01263100 CPUMCTAF DC A(DMKMCTAF) ADDRESS OF DMKMCTAF ROUTINE @VA12934 01263150 CPUEXTST DC A(DMKEXTST) ADDR OF FIELD CONTAINING THE @VA10010 01263200 * LOGICAL 01263300 * ADDR OF STOPPED PROCESSOR 01263400 DS 0D @V60B7AB 01265300 CPWAIT16 DC X'0002000000000016' CONCS OR DISCS FAILED @V60B7AB 01265600 CPUFREAP DC A(DMKFREAP) POINTER TO FREE STORAGE FOR DMKFRE X01268000 @V5BC0AB 01269000 * THE FOLLOWING 8 BYTES MUST REMAIN CONTIGUOUS 01280000 WAITSAV8 DC X'7FFFFFFF' WAITSAVE VALUE FOR THE ATTACHED @VMH0012 01281000 DC X'FFFFF000' PROCESSOR @VMH0012 01282000 EXTNBITS DC X'831F' ALL EXTERNAL BITS EXCEPT MFA @V5BC0AB 01283000 MFAESEXT DC X'0FFF' USED TO DISABLE MALFUNCTION ALERT, @VMH0029 01284000 * EMERGENCY SIGNAL, EXTERNAL SIGNAL AND TOD CLOCK 01285000 * SYNC CHECK INTERRUPTS 01286000 SAVECPP DS F SAVEAREA FOR REAL ADDRESS OF DMKCPP @VA12934 01286300 SAVECLK DS F SAVEAREA FOR REAL ADDRESS OF DMKCLK @VA12934 01286600 *************************************************************** 01287000 * MESSAGES * 01288000 *************************************************************** 01289000 CPU21EMG DC X'151515' @V5BC0AB 01290000 DC C'DMKCPU021E RADDR MISSING OR INVALID ' @VA09324 01291000 CPUID021 DC C' ' @VA09324 01291100 DC X'1515' @V5BC0AB 01292000 CPU21ELN EQU *-CPU21EMG @V5BC0AB 01293000 * 01294000 CPU193MG DC X'151515' @V5BC0AB 01295000 DC C'DMKCPU193I PROCESSOR ' @V5BC0AB 01296000 CPUID193 DC C' ' @V5BC0AB 01297000 DC C' ONLINE' @V5BC0AB 01298000 DC X'1515' @V5BC0AB 01299000 CPU193LN EQU *-CPU193MG @V5BC0AB 01300000 * 01301000 CPU192MG DC X'151515' @V5BC0AB 01302000 DC C'DMKCPU192E VARY PROCESSOR COMMAND FAILED' @V5BC0AB 01303000 DC X'1515' @V5BC0AB 01304000 CPU192LN EQU *-CPU192MG @V5BC0AB 01305000 * 01306000 CPU191MG DC X'151515' @V5BC0AB 01307000 DC C'DMKCPU191E PROCESSOR ' @V5BC0AB 01308000 CPUID191 DC C' ' @V5BC0AB 01309000 DC C' DOES NOT EXIST' @V5BC0AB 01310000 DC X'1515' @V5BC0AB 01311000 CPU191LN EQU *-CPU191MG @V5BC0AB 01312000 * 01313000 CPU194MG DC X'151515' @V5BC0AB 01314000 DC C'DMKCPU194I PROCESSOR ' @V5BC0AB 01315000 CPUID194 DC C' ' @V5BC0AB 01316000 DC C' OFFLINE' @V5BC0AB 01317000 DC X'1515' @V5BC0AB 01318000 CPU194LN EQU *-CPU194MG @V5BC0AB 01319000 * 01320000 LTORG 01321000 EJECT 01322000 COPY SHRTABLE 01323000 COPY SYSTBL 01324000 PSA 01325000 COPY CORE 01326000 COPY DEVTYPES 01327000 COPY RBLOKS 01328000 COPY VBLOKS 01329000 COPY ALLOC 01330000 COPY EQU 01331000 COPY SAVE 01332000 COPY VMBLOK 01333000 COPY TIMER 01334000 COPY MCHAREA 01335000 END 01336000