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