MCT TITLE 'DMKMCT (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 00002000
* 00003000
* MODULE NAME - 00004000
* DMKMCT 00005000
* 00006000
* FUNCTION 00007000
* THE FUNCTION OF THIS ROUTINE IS TO HANDLE ATTACHED PROCESSOR 00008000
* MODE PROCESSOR TERMINATION SITUATIONS, MALFUNCTION 00009000
* ALERTS, AND AUTOMATIC PROCESSOR RECOVERY. 00010000
* 00011000
* ATTRIBUTES 00012000
* RESIDENT (NOT REQUIRED IF NOT ATTACHED PROCESSOR SYSTEM) 00013000
* 00014000
* ENTRY POINTS 00015000
* DMKMCTPT - PROCESSOR TERMINATION SLIH (GOTO) 00016000
* 00017000
* DMKMCTMA - MALFUNCTION ALERT SLIH (BALR) 00018000
* 00019000
* DMKMCTPR - PROCESSOR RECOVERY SLIH (GOTO) 00020000
* 00021000
* DMKMCTST - SYSTEM TERMINATION (GOTO) 00022000
* 00022300
* DMKMCTFS - UNSUCCESSFUL SIGP RECOVERY (BALR) 00022600
* 00023000
* ENTRY CONDITIONS - 00024000
* R3 - ADDRESS OF ERROR MSG TO BE ISSUED 00025000
* R15- ENTRY POINT ADDRESS 00026000
* 00027000
* EXIT CONDITIONS - 00028000
* DISABLED WAIT STATE FOR SITUATIONS 00029000
* THAT CAUSE SYSTEM TERMINATION 00030000
* 00031000
* THE MAIN OR THE ATTACHED PROCESSOR IN STOPPED STATE 00032100
* AND THE OTHER PROCESSOR HAS BEEN SIGNALLED TO 00032200
* COMPLETE PROCESSING (SIGNAL APR). 00032300
* 00035000
* RETURN TO CALLER IF PROCESSING COMPLETE AND 00036000
* SYSTEM NOT TERMINATED 00037000
* 00038000
* EXIT TO DMKLOKPS, THE SYSTEM PROCESSOR SPIN 00039000
* ROUTINE BECAUSE SYSTEM TERMINATION IS ALREADY 00040000
* IN PROCESS. THIS PROCESSOR SHOULD BE SIGNALLED 00041000
* BY THE OTHER PROCESSOR TO STOP OR TO RESTART 00042000
* 00043000
* CALLS TO OTHER ROUTINES - 00044000
* DMKQCNWT - TO SEND MESSAGES TO A VIRTUAL MACHINE AND THE 00045000
* SYSTEM OPERATOR 00046000
* DMKPGSPO - TO RELEASE USER'S VIRTUAL STORAGE 00047000
* DMKCFMBK - TO PUT USER IN CONSOLE FUNCTION MODE 00048000
* DMKCFPRR - TO RESET VIRTUAL MACHINE 00049000
* DMKOPRWT - TO WRITE EMERGENCY MESSAGE TO SYSTEM OPERATOR 00050000
* DMKCPPUP - TO VARY THE TERMINATING PROCESSOR OFFLINE 00051100
* (TO CONVERT TO UNIPROCESSOR MODE). 00051200
* DMKLOKPS - TO SPIN UNTIL SYSTEM TERMINATION COMPLETE 00052000
* DMKCVTBH - TO CONVERT PROCESSOR ADDR. TO PRINTABLE FORM 00052500
* 00053000
* EXTERNAL REFERENCES - 00054000
* 00055000
* CPSUPER - DETERMINE IF CONTROL PROGRAM ACTIVE 00057000
* 00057500
* CPWAIT - DETERMINE IF CONTROL PROGRAM IN WAIT STATE 00058000
* 00059000
* PROCIO - INDICATOR IF PROCESSOR HAS I/O CAPABILITY 00060000
* 00061000
* CPID - IN ABSOLUTE 0 00062000
* 00062500
* APUOPER - INDICATOR IF SYSTEM RUNNING IN ATTACHED 00063000
* PROCESSOR MODE 00064000
* 00065000
* PREFIXA - ADDRESS OF PREFIX REGISTER FOR CURRENT PROCESSOR 00066000
* 00067000
* CPAPRPND - AUTOMATIC PROCESSOR RECOVERY PENDING 00068000
* 00068300
* CPAPRINP - AUTOMATIC PROCESSOR RECOVERY IN PROCESS 00068600
* 00069000
* EMSPQUI - QUIESCE PENDING 00070000
* 00071000
* DMKDMPMA - PROCESSOR ADDRESS OF PROCIO 00071100
* 00071200
* DMKDMPAA - PROCESSOR ADDRESS OF NON-PROCIO 00071300
* 00071400
* DMKDMPSA - DMKDMP'S LIST OF PSA ADDRESSES 00071500
* 00071600
* DMKDSPRQ - DISPATCHER'S CPEXBLOK QUEUE 00071700
* 00071800
* TABLES/WORKAREAS - 00072000
* PSA, VMBLOK 00073000
* 00074000
* MACROS - 00075000
* CHARGE - TO START CHARGING THE VIRTUAL MACHINE FOR ITS 00076000
* TERMINATION 00077000
* 00078000
* SIGNAL TO SIGNAL THE PROCESSORS 00079000
* STOP 00080000
* STOP AND STORE STATUS 00081000
* RESTART 00082000
* APR 00083000
* 00084000
* REGISTER USAGE - 00085000
* GPR0 - 00086000
* GPR1 - 00087000
* GPR2 - 00088000
* GPR3 - 00089000
* GPR4 - 00090000
* GPR5 - 00091000
* GPR6 - 00092000
* GPR7 - 00093000
* GPR8 - 00094000
* GPR9 - 00095000
* GPR10- 00096000
* GPR11- 00097000
* GPR12- MCT BASE 00098000
* GPR13- 00099000
* GPR14- LINKAGE 00100000
* GPR15- LINKAGE 00101000
* 00102000
* OPERATION - 00103000
* SEE ENTRY POINT PROLOGUES 00104000
* 00105000
* ERROR MESSAGES - 00106000
* DMKMCT610W MACHINE CHECK; SUPERVISOR DAMAGE CPUID 00107000
* DMKMCT611W MACHINE CHECK; SYSTEM INTEGRITY LOST CPUID 00108000
* DMKMCT612W MACHINE CHECK; TIMING FACILITIES DAMAGE CPUID 00109000
* DMKMCT616I MACHINE CHECK; USER XXXXXXXX TERMINATED CPUID 00110000
* DMKMCT619I MACHINE CHECK; OPERATION TERMINATED CPUID 00111000
* DMKMCT620I MACHINE CHECK; ATTACHED PROCESSOR NOT BEING USED 00112000
* DMKMCT621I MACHINE CHECK; AFFINITY SET OFF 00113000
* DMKMCT623I CHANNEL SET CONNECTED TO PROCESSOR NN 00113500
* 00114000
* WAIT STATE CODES - 00115000
* 001 - UNRECOVERABLE FAILURE ON MAIN PROCESSOR 00116000
* 013 - UNRECOVERABLE FAILURE ON ATTACHED PROCESSOR 00117000
* 016 - CHANNEL SET SWITCHING FACILITY HAS FAILED 00117200
* 019 - THE PROCESSOR TERMINATION ROUTINE WAS 00117400
* ENTERED ON THIS PROCESSOR WHILE THIS 00117600
* PROCESSOR WAS BEING TERMINATED. 00117800
* 00118000
EJECT 00119000
COPY OPTIONS @V407510 00120000
COPY LOCAL @V407510 00121000
EJECT 00122000
DMKMCT CSECT 00123000
ENTRY DMKMCTPT PROCESSOR TERMINATION ROUTINE @V407510 00124000
ENTRY DMKMCTMA MALFUNCTION ALERT ROUTINE @V407510 00125000
ENTRY DMKMCTPR PROCESSOR RECOVERY ROUTINE @V407510 00126000
ENTRY DMKMCTST SYSTEM TERMINATION @V407510 00127000
ENTRY DMKMCTFS FAILING SIGP ROUTINE @VA12934 00127050
ENTRY DMKMCTAF @VMH0033 00127100
ENTRY DMKMCTPF @VA12934 00127300
ENTRY DMKMCTFL @VA12934 00127500
ENTRY DMKMCTVM @VA12934 00127700
EXTRN DMKQCNWT @V407510 00128000
EXTRN DMKPGSPO @V407510 00129000
EXTRN DMKCFMBK @V407510 00130000
EXTRN DMKCFPRR @V407510 00131000
EXTRN DMKOPRWT @V407510 00132000
EXTRN DMKLOKPS @V407510 00134000
EXTRN DMKSCHTQ @V407510 00135000
EXTRN DMKSTKMP @V4M0175 00136000
EXTRN DMKLOKSY SYSTEM LOCKWORD @V4M0199 00137000
EXTRN DMKCPPUP @VA12934 00137010
EXTRN DMKLOKDS,DMKLOKTR,DMKLOKRL,DMKLOKFR @V5BC0AB 00137110
EXTRN DMKCVTBH @VA12934 00137210
EXTRN DMKDMPMA @VA12934 00137310
EXTRN DMKDMPSA @VA12934 00137410
EXTRN DMKDMPAA @VA12934 00137510
EXTRN DMKDSPRQ @VA12934 00137610
USING PSA,0 @V407510 00138000
USING VMBLOK,R11 @V407510 00139000
EJECT 00140000
* SUBROUTINE NAME - 00141000
* DMKMCTPT 00142000
* 00143000
* FUNCTION - 00144000
* THE FUNCTION OF THIS ENTRY POINT IS TO COMPLETE PROCESSOR 00145000
* TERMINATION IN THE ATTACHED PROCESSOR MODE 00146000
* 00147000
* ENTRY CONDITIONS - 00148000
* R3 - ADDRESS OF APPROPRIATE MESSAGE TO BE ISSUED 00149000
* R9 - ADDRESS OF MCHAREA 00150000
* 00151000
* EXIT CONDITIONS - 00152000
* DISABLED WAIT STATE FOR COMPLETED SYSTEM TERMINATION 00153000
* 00154000
* ATTACHED PROCESSOR IN STOPPED STATE WHERE THE MAIN PROCESSOR 00155000
* HAS BEEN SIGNALLED TO COMPLETE PROCESSING 00156000
* 00157000
* REGISTER USAGE - 00158000
* SEE MAIN PROLOGUE 00159000
* 00160000
* OPERATION - 00161000
* 1. IF CLOCK ERROR AND NOT IN SUPERVISOR STATE, 00162000
* SIGNAL THE OTHER PROCESSOR FOR 00163000
* AUTOMATIC PROCESSOR RECOVERY (APR). 00164000
* 2. INDICATE TERMINATE VIRTUAL MACHINE IF VIRTUAL 00165000
* MACHINE ACTIVE BY PUTTING ADDRESS OF VMBLOK 00166000
* IN MCTTERM. 00167000
* 3. SIGNAL SELF TO STOP AND STORE STATUS. 00168000
* 4. IF TERMINATION ALREADY IN PROCESS, CALL DMKLOKPS. 00169000
* OTHERWISE, SET TERMINATION IN PROCESS SWITCH. 00170000
* 5. IF NOT ABOVE SITUATION AND NOT ON MAIN PROCESSOR, SIGNAL 00171000
* MAIN PROCESSOR STOP AND STORE STATUS THEN RESTART AT 7. 00172000
* 6. MAIN PROCESSOR - SIGNAL ATTACHED PROCESSOR TO STOP 00173000
* AND STORE STATUS 00174000
* 7. SEND EMERGENCY MESSAGE TO OPERATOR. 00175000
* 8. LOAD DISABLED WAIT STATE. 00176000
* 00177000
* MESSAGES - 00178000
* DMKMCT610W MACHINE CHECK; SUPERVISOR DAMAGE CPUID 00179000
* DMKMCT611W MACHINE CHECK; SYSTEM INTEGRITY LOST CPUID 00180000
* DMKMCT612W MACHINE CHECK; TIMING FACILITIES DAMAGE CPUID 00181000
* DMKMCT616I MACHINE CHECK; USER XXXXXXXX TERMINATED CPUID 00182000
* DMKMCT619I MACHINE CHECK; OPERATION TERMINATED CPUID 00183000
* 00184000
* WAIT STATE CODES 00185000
* 001 UNRECOVERABLE FAILURE ON MAIN PROCESSOR 00186000
* 013 UNRECOVERABLE FAILURE ON ATTACHED PROCESSOR. 00187000
* 00188000
DMKMCTPT DS 0H PROCESSOR TERMINATION @V407510 00189000
USING *,R12 TEMPORARY ADDRESSABILITY @V407510 00190000
L R12,MCTBASE GET COMMON BASE @V407510 00191000
USING DMKMCT,R12 COMMON ADDRESSABILITY @V407510 00192000
USING MCHAREA,R9 ADDRESSABILITY TO MCHAREA @V407510 00193000
TM MCHFLAG1,MCH1TODC TOD CLOCK DAMAGE? @V407510 00194000
BZ TERM NO, TERMINATE SYSTEM @V407510 00195000
TM APSTAT1,PROCIO MAIN PROCESSOR? @V407510 00196000
BZ USERACT NO, BRANCH @V60B7AB 00197100
TM APSTAT1,CSSFEAT IS THE CSS FACILITY AVAILABLE? @V60B7AB 00197200
BNO TERM NO, TERMINATE THE SYSTEM @V60B7AB 00197300
USERACT DS 0H @V60B7AB 00197400
TM MCHFLAG7,MCH7OPSW VIRTUAL USER ACTIVE @V4M0144 00198000
BNO TERM NO, TERMINATE SYSTEM @V4M0144 00199000
ST R11,MCTTERM SAVE VMBLOK ADDRESS TO BE @V407510 00200000
* TERMINATED @V407510 00201000
L R2,PREFIXB GET OTHER PROCESSOR PSA @V4M0199 00202000
MVI EMSPEND-PSA(R2),EMSPQUI INSURE OTHER PROCESSOR @V4M0199 00203000
* WILL DO NO WORK- FORCE QUIESCE @V4M0199 00204000
SIGNAL DS 0H SIGNAL OTHER PROCESSOR @V407510 00205000
SIGNAL APR AUTOMATIC PROCESSOR RECOVERY @V407510 00206000
SIGNAL SSS,CONTROL=AUTO SIGNAL SELF TO STOP AND 00207000
* STORE STATUS @V407510 00208000
TERM DS 0H TERMINATE SYSTEM @V407510 00209000
L R14,PREFIXA GET OWN PREFIX REG @V4M0144 00210000
TS CPTERMLK-PSA(R14) SYS TERMINATION IN PROGRESS @V4M0144 00211000
BZ APTERM NO, TERMINATE AP MODE @V407510 00212000
LA R1,CPTERMLK-PSA(,R14) GET ADDRESS OF LOCK @V4M0144 00213000
O R1,HIGHBIT TURN ON HIGH ORDER BIT @V4M0144 00214000
CALL DMKLOKPS YES, SPIN UNTIL SIGNALLED @V4M0144 00215000
APTERM DS 0H @V407510 00216000
LH R2,IPUADDR GET PROCESSOR ADDRESS @V407510 00217000
CVD R2,WORK CONVERT TO DECIMAL @V407510 00218000
UNPK MSGPROC(LN2),WORKLO(LN2) CONVERT 2 DIGITS @V407510 00219000
OI MSGPROC+ONE,ZONE SET ZONE FOR LAST DIGIT @V407510 00220000
BAL R6,SWTCH GET ON MAIN PROCESSOR @V407510 00221000
B OPCOM ISSUE MSG AND LOAD WAIT STATE @V407510 00222000
SWTCH DS 0H SWITCH TO MAIN PROCESSOR @V407510 00223000
TM APSTAT1,PROCIO MAIN PROCESSOR? @V407510 00224000
BNO ATTTERM NO, BRANCH @V407510 00225000
SIGNAL SSS STOP & STORE STATUS TO @V407510 00226000
* ATTACHED PROCESSOR @V407510 00227000
MCTWAIT DS 0H @V407510 00228000
MVC WAITCODE(LN4),MAINCODE SET UP 001 WAIT STATE @V407510 00229000
BR R6 RETURN TO CALLER @V407510 00230000
ATTTERM DS 0H @V407510 00231000
L R4,PREFIXA GET OWN PREFIX REG @V407510 00232000
STM R0,R15,DUMPSAVE-PSA(R4) SAVE REGS FOR RESTART @V407510 00233000
L R4,PREFIXB GET OTHER PREFIX REG @V407510 00234000
MVC RSRTNPSW-PSA(,R4),RSRTMAIN RESTART NEW PSW @V4M0194 00235000
SIGNAL SSS SIGNAL MAIN PROCESSOR TO STOP @V407510 00236000
SIGNAL RESTART SIGNAL MAIN PROCESSOR TO RESTART @V407510 00237000
SIGNAL STOP,CONTROL=AUTO SIGNAL SELF TO STOP @V407510 00238000
MAINRSRT DS 0H RESTART ON MAIN PROCESSOR @V407510 00239000
L R4,PREFIXA GET OWN PREFIX REGISTER @V407510 00240000
LM R0,R15,DUMPSAVE-PSA(R4) RESTORE REGS @V407510 00241000
BR R6 RETURN TO CALLER ON MAIN @V407510 00242000
EJECT 00243000
* SUBROUTINE NAME - 00244000
* DMKMCTMA 00245000
* 00246000
* FUNCTION - 00247000
* THE FUNCTION OF THIS ENTRY POINT IS TO HANDLE MALFUNCTION 00248000
* ALERT INTERRUPTS. EITHER THE SYSTEM WILL BE TERMINATED OR 00249000
* AUTOMATIC PROCESSOR RECOVERY WILL BE INITIATED. 00250000
* 00251000
* ENTRY CONDITIONS - 00252000
* SEE MAIN PROLOGUE 00253000
* 00254000
* EXIT CONDITIONS - 00255000
* DISABLED WAIT STATE FOR COMPLETED SYSTEM TERMINATION. 00256000
* 00257000
* RETURN TO CALLER AFTER AUTOMATIC PROCESSOR RECOVERY SCHEDULED. 00258000
* 00259000
* REGISTER USAGE - 00260000
* SEE MAIN PROLOGUE 00261000
* 00262000
* OPERATION - 00263000
* 1. IF THE MALFUNCTION ALERT IS FROM A DEAD PROCESSOR, 00264000
* RETURN TO CALLER. 00265000
* 2. IF PROCESSOR TERMINATION WAS IN PROCESS, 00266000
* LOAD A DISABLED WAIT STATE. 00267000
* 3. IF THE MALFUNCTION ALERT WAS FROM THE MAIN PROCESSOR, 00268000
* AND THE CONTROL PROGRAM WAS ACTIVE, 00268100
* OR THE CSS FACILITY IS NOT AVAILABLE, 00268200
* LOAD DISABLED WAIT STATE. 00269000
* 4. IF THE MALFUNCTION ALERT WAS FROM THE ATTACHED PROCESSOR 00270000
* AND THE CONTROL PROGRAM WAS ACTIVE, SEND MESSAGE TO 00271000
* OPERATOR AND LOAD A DISABLED WAIT STATE. 00272000
* 5. INDICATE TERMINATE VIRTUAL MACHINE IF VIRTUAL 00273000
* MACHINE ACTIVE BY PUTTING ADDRESS OF VMBLOK 00274000
* IN MCTTERM. 00275000
* 6. SET QUIESCE PENDING FOR THE MALFUNCTIONING PROCESSOR. 00276000
* 7. TURN ON CPAPRPND FOR AUTOMATIC PROCESSOR RECOVERY. 00277000
* 8. RETURN TO CALLER. 00278000
* 00279000
* MESSAGES - 00280000
* DMKMCT610W MACHINE CHECK; SUPERVISOR DAMAGE CPUID 00281000
* 00282000
* WAIT STATE CODES - 00283000
* 001 UNRECOVERABLE FAILURE ON MAIN PROCESSOR 00284000
* 013 UNRECOVERABLE FAILURE ON ATTACHED PROCESSOR 00285000
* 00286000
DMKMCTMA DS 0H MALFUNCTION ALERT SLIH @V407510 00287000
USING *,R15 SET UP TEMPORARY ADDRESSABILITY @V407510 00288000
STM R0,R15,MFASAVE SAVE CALLERS REGISTERS @V407510 00289000
L R12,MCTBASE LOAD NORMAL BASE REG @V407510 00290000
DROP R15 RELEASE TEMPORARY BASE @V407510 00291000
USING DMKMCT,R12 SET UP NORMAL ADDRESSABILITY @V407510 00292000
TM APSTAT1,APUOPER PROCESSOR ALREADY DEAD? @V407510 00293000
BNO MFAEXIT YES, RETURN TO CALLER @V407510 00294000
MFACONT L R2,PREFIXB GET OTHER PROCESSOR PSA @VA12934 00295000
MVI EMSPEND-PSA(R2),EMSPQUI INSURE OTHER @V407510 00296000
* PROCESSOR WILL DO NO @V407510 00297000
* MORE WORK- FORCE QUIESCE @V407510 00298000
L R3,PREFIXA GET OWN PREFIX REG @V4M0208 00299000
CLI CPTERMLK-PSA(R3),CLEAR SYS TERM IN PROGRESS? @V4M0208 00300000
BNE MFAWAIT YES, LOAD A WAIT STATE @V407510 00301000
TM APSTAT1,PROCIO IS THIS THE MAIN PROCESSOR? @V407510 00302000
BNZ MFASUP YES, CONTINUE CHECKS @V407510 00303000
TM APSTAT1,CSSFEAT CSS FACILITY AVAILABLE? @V60B7AB 00303100
BO MFASUP YES, BRANCH @V60B7AB 00303200
MAINMFA DS 0H @V60B7AB 00303300
MVC WAITCODE,MAINCODE SET UP 001 WAIT STATE @V4M0208 00304000
B MFAWAIT LOAD WAIT STATE @V407510 00305000
MFASUP DS 0H @V407510 00306000
TM CPSTATUS-PSA(R2),CPSUPER OTHER PROCESSOR @V407510 00307000
* IN SUPERVISOR STATE? @V407510 00308000
BNO MFAREC NO, CAN CONTINUE @V407510 00309000
TM CPSTATUS-PSA(R2),CPWAIT OTHER PROCESSOR @V407510 00310000
* ABOUT TO GO INTO WAIT STATE?@V407510 00311000
BO MFAREC YES, CAN CONTINUE @V407510 00312000
TM APSTAT1,PROCIO ON THE MAIN PROCESSOR? @V60B7AB 00312100
BNO MAINMFA NO, BRANCH. NO MESSAGE IS SENT @V60B7AB 00312200
* WHEN THE MAIN HAS MALFUNCTIONED 00312300
LA R3,MSG2 SET UP MSG 610W @V407510 00313000
B OPCOM ISSUE MSG AND TERMINATE @V407510 00314000
MFAREC DS 0H ABLE TO KEEP SYSTEM UP @V407510 00315000
CLC RUNUSER-PSA(,R2),ASYSVM RUNUSER=SYSTEM VMBLOK? @VA07316 00316100
BE MFAAPR YES, DON'T TERMINATE SYS VMBLOK @V407510 00317000
MVC MCTTERM,RUNUSER-PSA(R2) TERMINATE RUNUSER FOR @V407510 00318000
* OTHER PROCESSOR 00319000
MFAAPR DS 0H @V407510 00320000
OI APSTAT4,CPAPRPND APR PENDING @VA07615 00321100
MFAEXIT DS 0H @V407510 00322000
LM R0,R15,MFASAVE RESTORE REGS @V407510 00323000
BR R14 RETURN TO CALLER @V407510 00324000
EJECT 00324010
* SUBROUTINE NAME - 00324020
* DMKMCTFS 00324030
* 00324040
* FUNCTION - 00324050
* THE FUNCTION OF THIS ENTRY POINT IS TO HANDLE NON-ZERO 00324060
* CONDITION CODES FROM THE SIGP INSTRUCTION -- I.E., THE 00324070
* SIGNALLED PROCESSOR IS UNRESPONSIVE. EITHER THE SYSTEM 00324080
* MUST BE TERMINATED OR AUTOMATIC PROCESSOR RECOVERY 00324090
* WILL BE INITIATED. 00324100
* 00324110
* ENTRY CONDITIONS - 00324120
* SEE MAIN PROLOGUE 00324130
* 00324140
* EXIT CONDITIONS - 00324150
* DISABLED WAIT STATE FOR COMPLETED SYSTEM TERMINATION. 00324160
* 00324170
* RETURN TO CALLER AFTER AUTOMATIC PROCESSOR RECOVERY SCHEDULED. 00324180
* 00324190
* REGISTER USAGE - 00324200
* SEE MAIN PROLOGUE 00324210
* 00324220
* OPERATION - 00324230
* 1. THE INDICATOR MCTFS IN MCTFLAG IS SET TO 00324240
* INDICATE THAT DMKMCT WAS ENTERED TO PROCESS 00324250
* A CONDITION CODE 1 OR 2 FROM A SIGP INSTRUCTION. 00324260
* 2. THE ADDRESS OF THE PSA BELONGING TO THE 00324270
* UNRESPONSIVE PROCESSOR IS OBTAINED. ALL OF THE 00324280
* PROCESSOR'S NEW PSWS ARE SET UP TO LOAD A 00324290
* DISABLED WAIT STATE UPON ANY INTERRUPTION. 00324300
* THIS WILL PREVENT THE UNRESPONSIVE PROCESSOR 00324310
* FROM RUNNING MUCH FURTHER IF IT IS STILL ALIVE. 00324320
* THEN PROCESSING WILL CONTINUE AS IF A 00324330
* MALFUNCTION ALERT HAD BEEN RECEIVED FROM THE 00324340
* UNRESPONSIVE PROCESSOR. 00324350
* 00324360
* MESSAGES - 00324370
* NONE 00324380
* 00324390
* WAIT STATE CODES - 00324400
* 001 UNRECOVERABLE FAILURE ON MAIN PROCESSOR 00324410
* 013 UNRECOVERABLE FAILURE ON ATTACHED PROCESSOR. 00324420
* 00324430
DMKMCTFS DS 0H FAILING SIGNAL PROCESSING @VA12934 00324440
USING *,R15 SET UP TEMPORARY ADDRESSABILITY @VA12934 00324450
STM R0,R15,MFASAVE SAVE CALLERS REGISTERS @VA12934 00324460
L R12,MCTBASE LOAD NORMAL BASE REG @VA12934 00324470
DROP R15 RELEASE TEMPORARY BASE @VA12934 00324480
USING DMKMCT,R12 SET UP NORMAL ADDRESSABILITY @VA12934 00324490
OI MCTFLAG,MCTFS INDICATOR FOR DMKMCTFS ENTRY @VA12934 00324500
L R2,PREFIXB ACCESS PSA OF UNRESPONSIVE PROC. @VA12934 00324510
MVC EXNPSW-PSA(8,R2),DISABPSW SET UP THE NEW PSWS @VA12934 00324520
* OF THE UNRESPONSIVE PROCESSOR TO 00324530
* CONTAIN DISABLED WAIT PSWS. THEN, 00324540
* SHOULD THE PROCESSOR STILL BE ALIVE, 00324550
* WE CAN FORCE IT TO STOP RUNNING. 00324560
MVC SVCNPSW-PSA(32,R2),EXNPSW-PSA(R2) PROPAGATE THE @VA12934 00324570
* DISABLED WAIT PSW TO ALL NEW PSWS 00324580
B MFACONT CONTINUE AS FOR MALFUNCTION ALERT@VA12934 00324590
EJECT 00325000
* SUBROUTINE NAME - 00326000
* DMKMCTPR 00327000
* FUNCTION - 00328000
* THE FUNCTION OF THIS ENTRY POINT IS TO ALLOW THE SYSTEM TO 00329000
* REVERT TO UNIPROCESSOR MODE. 00330000
* 00331000
* ENTRY CONDITIONS - 00332000
* MCTTERM (AN INTERNAL INDICATOR) MAY CONTAIN 00333000
* THE ADDRESS OF THE VIRTUAL MACHINE TO BE TERMINATED 00334000
* MCTTERM WOULD HAVE BEEN SET BY DMKMCTPT OR DMKMCTMA 00335000
* 00336000
* EXIT CONDITIONS - 00337000
* RETURN TO CALLER AFTER ATTACHED PROCESSOR REMOVED FROM 00338000
* SYSTEM OPERATION 00339000
* 00340000
* REGISTER USAGE - 00341000
* SEE MAIN PROLOGUE 00342000
* 00343000
* OPERATION - 00344000
* 00345000
* 1. DMKMCTPR WILL TEST FOR AN ACTIVE VARY PROCESSOR FUNCTION 00345300
* (POFFLINE=1). IF ACTIVE, DMKMCTPR WILL ENTER A LOOP. 00345600
* A CPEXBLOK WILL BE STACKED FOR THE CURRENT PROCESSOR TO 00345900
* THE INSTRUCTION TO TEST THE POFFLINE BIT. DMKMCTPR WILL 00346200
* EXIT FROM THE LOOP WHEN POFFLINE IS ZERO. IF AT THIS TIME 00346500
* APUOPER IS STILL ONE, STEPS 2-6 WILL BE TAKEN. IF APUOPER 00346800
* IS ZERO, AND MCTTERM IS NOT ZERO, THE VIRTUAL MACHINE 00347100
* WILL BE TERMINATED AND DMKMCTPR WILL GO TO DMKDSPCH. 00347400
* OTHERWISE, DMKMCTPR WILL GO TO DMKDSPCH. 00347700
* 2. DMKMCTPR WILL ATTEMPT TO OBTAIN THE TEST-AND-SET 00348000
* LOCK CPAPRINP IN ABSOLUTE PAGE ZERO. THIS LOCK 00348060
* WILL PREVENT RECURSION IN AUTOMATIC PROCESSOR 00348120
* RECOVERY. IF THE LOCK IS AVAILABLE, CONTINUE WITH 00348180
* STEP 3. IF THE LOCK IS ALREADY HELD, DMKMCTPR WILL 00348240
* CHECK TO SEE IF IT IS NOW RUNNING ON THE PROCESSOR 00348300
* WHICH CAUSED THE ORIGINAL ENTRY TO APR. IF SO, THIS 00348360
* PROCESSOR IS BEING TERMINATED -- DMKMCTPR WILL SIMPLY 00348420
* LOAD A DISABLED WAIT ON THIS PROCESSOR. IF THE CURRENT 00348480
* PROCESSOR IS THE RECOVERY PROCESSOR, THIS INVOCATION 00348540
* OF DMKMCTPR WILL BE IGNORED -- EXIT WILL BE MADE TO 00348600
* THE DISPATCHER. 00348660
* 3. SEND MESSAGE 620I TO OPERATOR. 00348720
* 4. CALL DMKCPPUP TO HANDLE SHARED SEGMENTS, SYNCHRONIZE 00348780
* VMTTIME, UPDATE THE CLOCK COMPARATOR VALUE WITH THAT 00348900
* VALUE IN THE TOP TRQE, FREE ALL AP RELATED CONTROL 00349200
* BLOCKS AND STOP PREFIXING. 00349500
* 5. LOOP THRU THE VMBLOKS TO RESET ANY AFFINITY SET FOR 00349800
* THE ATTACHED PROCESSOR, ISSUE MSG TO USER, AND PUT 00350100
* USER IN CONSOLE FUNCTION MODE. 00350400
* 6. TERMINATE THE VIRTUAL MACHINE, IF ONE IS SPECIFIED 00350700
* RESET THE CPU TIMER, RELEASE ALL LOCKS, AND GO TO 00350800
* THE DISPATCHER. 00350900
* 00358000
* MESSAGES - 00359000
* DMKMCT621I MACHINE CHECK; AFFINITY SET OFF. 00360000
* DMKMCT620I MACHINE CHECK; ATTACHED PROCESSOR NOT BEING USED. 00361000
* DMKMCT623I CHANNEL SET CONNECTED TO PROCESSOR NN. 00361500
* 00362000
* WAIT STATE CODES - 00363000
* 016 - THE CHANNEL SET SWITCHING FACILITY HAS FAILED 00364000
* 019 - THE PROCESSOR TERMINATION ROUTINE WAS 00364200
* ENTERED ON THIS PROCESSOR WHILE THIS 00364400
* PROCESSOR WAS BEING TERMINATED. 00364600
* 00365000
DMKMCTPR DS 0H PROCESSOR RECOVERY ROUTINE @V407510 00366000
USING *,R12 TEMPORARY ADDRESSABILITY @V407510 00367000
L R12,MCTBASE GET COMMON BASE @V407510 00368100
USING DMKMCT,R12 SET UP COMMON ADDRESSABILITY @V407510 00368110
NI APSTAT4,OFF-CPAPRPND TURN OFF APR PENDING FLAG @V5BC0AB 00368120
MVI EMSPEND,CLEAR CLEAR SIGNAL INDICATOR @V5CC0AB 00368130
MVI XCPEND,CLEAR CLEAR SIGNAL INDICATOR @V5CC0AB 00368140
TESTPOFF DS 0H @V5BC0AB 00369002
TM APSTAT4,POFFLINE VARY PROC IN PROCESS? @V5BC0AB 00369006
BZ TSTAPUOP NO, BRANCH @V5BC0AB 00369010
LA R0,CPEXSIZE GET SIZE OF CPEXBLOK @V5BC0AB 00369014
CALL DMKFREE OBTAIN STORAGE @V5BC0AB 00369018
SPACE 00369022
USING CPEXBLOK,R1 @V5BC0AB 00369026
SPACE 00369030
STM R0,R15,CPEXREGS SAVE REGISTERS @V5BC0AB 00369034
LA R15,TESTPOFF ADDRESS OF RETURN POINT @V5BC0AB 00369038
ST R15,CPEXADD SET UP RETURN POINT @V5BC0AB 00369042
SPACE 00369046
DROP R1 00369050
SPACE 00369054
CALL DMKSTKMP STACK BLOCK FOR THIS PROCESSOR @V5BC0AB 00369058
GOTO DMKDSPCH GO TO THE DISPATCHER @V5BC0AB 00369062
TSTAPUOP DS 0H @V5BC0AB 00369066
TM APSTAT1,APUOPER IN AP MODE? @V5BC0AB 00369070
BNO PREXIT NO, BRANCH @VMH0025 00369075
L R2,PREFIXA SET UP FOR ACCESS OF ABS. ZERO @VA12934 00369082
TS CPAPRINP-PSA(R2) TRY FOR 'APR IN PROCESS' LOCK @VA12934 00369282
* THIS PREVENTS MCTPR RECURSION. 00369482
BZ SAVFPROC CONTINUE -- LOCK OBTAINED @VA12934 00369682
CLC MCTFPROC(2),LPUADDR THE LOCK WAS HELD -- CHECK @VA12934 00369882
* TO SEE IF THIS ENTRY IS FOR SAME 00370082
* PROCESSOR THAT FAILED LAST TIME 00370282
BE MCTWT019 WE ARE RUNNING ON THE PROCESSOR @VA12934 00370482
* FOR WHICH AUTOMATIC PROCESSOR 00370682
* RECOVERY IS IN PROCESS. LOAD A 00370882
* WAIT ON THIS PROCESSOR TO STOP 00371082
* IT FROM RUNNING. 00371282
GOTO DMKDSPCH WE ARE ALREADY PERFORMING @VA12934 00371482
* AUTOMATIC PROCESSOR RECOVERY FOR 00371682
* THE OTHER PROCESSOR. IGNORE THIS 00371882
* ENTRY. 00372082
SAVFPROC MVC MCTFPROC(2),LPUADDRX SAVE THE ADDRESS OF THE @VA12934 00372282
* FAILING PROCESSOR 00372482
TSSYSLOK DS 0H @VA12934 00372682
L R2,=A(DMKLOKSY+LN2) GET ADDRESS OF LOCKWORD+2 @VA07316 00373100
CLC LPUADDR,0(R2) SYSTEM LOCK ALREADY HELD? @V4M0199 00374000
BE PRCLEAR YES, SKIP LOCK OBTAIN @V4M0199 00375000
LOCK OBTAIN,TYPE=SYS,SPIN=NO @V4M0199 00376000
BNZ MCTABEND LOCK NOT OBTAINED, ABEND @V4M0199 00377000
PRCLEAR DS 0H @V4M0199 00378000
SCNDSPRQ LOCK OBTAIN,TYPE=DS,SPIN=NO OBTAIN LOCK ON DSP QUEUES@VA12934 00382000
BNZ MCTWT019 OTHER PROCESSOR HAS CONTINUED @VA12934 00382010
* TO RUN AND NOW HOLDS A LOCK. 00382020
* LOAD A WAIT STATE -- TO CONTINUE 00382030
* MIGHT JEOPARDIZE SYSTEM INTEGRITY 00382040
L R15,MCTDSPRQ ADDRESS OF DISPATCHER'S QUEUES @VA12934 00382050
C R15,CPEXFPNT-CPEXBLOK(,R15) IS CPEXBLOK QUEUE @VA12934 00382060
* EMPTY? 00382070
BE TESTIO YES -- ALL DONE @VA12934 00382080
LR R1,R15 ADDRESS OF CPEXBLOK TO REG 1 @VA12934 00382090
USING CPEXBLOK,R1 ADDRESSABILITY TO CPEXBLOK @VA12934 00382100
NXTCPXBK DS 0H @VA12934 00382110
L R1,CPEXFPNT ADDRESS OF NEXT CPEXBLOK ON Q. @VA12934 00382120
CR R1,R15 AT END OF QUEUE? @VA12934 00382130
BE TESTIO YES -- ALL DONE @VA12934 00382140
MVC CPEXPROC,LPUADDR MAKE THIS CPEXBLOK FOR THIS @VA12934 00382150
* PROCESSOR 00382160
B NXTCPXBK DO NEXT CPEXBLOK @VA12934 00382170
DROP R1 00382180
TESTIO DS 0H @VA12934 00382190
LOCK RELEASE,TYPE=DS @VA12934 00382200
TM APSTAT1,PROCIO IS THIS THE I/O PROCESSOR? @VA12934 00382210
BO SEND620I YES -- NO NEED TO SWITCH CHANNELS@VA12934 00382220
LH R1,CSADDR GET CHANNEL SET ADDRESS @VA12934 00382230
* DISCS 0(R1) DISCONNECT FROM MAIN PROCESSOR @VA12934 00382240
DC X'B2011000' ACTUAL DISCONNECT INSTRUCTION @VA12934 00382250
BNZ WAIT016 DISC. CHANNEL SET WAS NOT @VA12934 00382260
* SUCCESSFUL -- LOAD DISABLED WAIT 00382270
CONNECT DS 0H @VA12934 00382280
* CONCS 0(R1) CONNECT THE CHANNEL SET @VA12934 00382290
DC X'B2001000' ACTUAL CONNECT INSTRUCTION @VA12934 00382300
BNZ WAIT016 THE CONNECT CHANNEL SET FAILED --@VA12934 00382310
* LOAD A DISABLED WAIT -- NO I/O 00382320
* CAPABILITY 00382330
OI APSTAT1,PROCIO INDICATE THIS IS THE I/O PROC. @VA12934 00382340
L R15,PREFIXB ADDRESS OF OTHER PROC'S PSA @VA12934 00382350
NI APSTAT1-PSA(R15),X'FF'-PROCIO OTHER PROC DOES @VA12934 00382360
* NOT HAVE I/O CAPABILITY 00382370
LCTL C2,C2,FFS ENABLE FOR I/O INTERRUPTS @VA12934 00382380
L R2,MCTDMPMA ADDRESS OF DMKDMPMA VALUE @VA12934 00382390
MVC 0(2,R2),IPUADDR THIS PROC IS NOW PROCIO @VA12934 00382400
L R2,MCTDMPAA ADDRESS OF DMKDMPMA VALUE @VA12934 00382410
MVC 0(2,R2),IPUADDRX OTHER PROC IS NON-PROCIO @VA12934 00382420
L R2,MCTDMPSA ADDRESS OF DMP'S PSA ADDRESSES @VA12934 00382430
LM R6,R7,PREFIXA LOAD PSA ADDRESSES @VA12934 00382440
STM R6,R7,0(R2) STORE PROCIO'S PSA @ FIRST @VA12934 00382450
LH R1,IPUADDR GET PROCESSOR ADDRESS @VA12934 00382460
CALL DMKCVTBH CONVERT TO PRINTABLE FORM @VA12934 00382470
STCM R1,B'0011',MCTID623 MOVE IN PROC. ADDRESS @VA12934 00382480
LA R0,MCT623LN GET LENGTH OF MESSAGE @VA12934 00382490
LA R1,MCT623MG GET ADDRESS OF MESSAGE TEXT @VA12934 00382500
CALL DMKQCNWT,PARM=NORET+OPERATOR @VA12934 00382510
SEND620I MVI MSGBUF,BLANK BLANK OUT BUFFER @VA12934 00382520
MVC MSGBUF+ONE(L'MSGBUF-1),MSGBUF CLEAR BUFFER @V407510 00383000
MVC MSGCDE(LN3),MSG9 SETUP MESSAGE ID IN BUFFER @VA07837 00384100
MVC MSGBUF(MSG9L),MSG9B MOVE MESSAGE INTO BUFFER @V407510 00385000
LA R0,MCMSGL GET LENGTH OF MESSAGE @V407510 00386000
LA R1,MCTMSG GET ADDRESS OF BUFFER @V407510 00387000
CALL DMKQCNWT,PARM=OPERATOR+NORET @V407510 00388000
CALLCPP CALL DMKCPPUP GO TAKE CARE OF AP DEPENDENCIES @VA12934 00388010
PREXIT DS 0H @V407510 00445000
OC MCTTERM,MCTTERM VIRT. MACH. TO BE TERMINATED @VA08235 00457010
BZ NOTERM NO - NO MACHINE TO TERMINATE @VA08235 00457020
CHARGE SWITCH,MCTTERM START CHARGING USER @VA08235 00457030
BAL R6,VIRTERM TERMINATE VIRTUAL USER @VA08235 00457040
CHARGE STOP STOP CHARGING @VA08235 00457050
CHARGE START RESET CPU TIMER @VA07837 00457100
NOTERM EQU * @VMH0025 00457102
TM MCTFLAG,MCTFS WAS MCT ENTERED AT MCTFS ENTRY? @VA12934 00457105
BO AFFCHECK YES -- LOCKWORDS HAVE ALREADY @VA12934 00457106
* BEEN SET TO LOOK AS IF THEY 00457107
* ARE OWNED BY THE RECOVERY PROC. 00457108
SR R0,R0 CLEAR REGISTER 0 @VA12934 00457109
L R2,=A(DMKLOKDS) GET ADDR OF DSP QUEUES LOCK @V5BC0AB 00457110
ST R0,0(,R2) FREE THE DSP QUEUES LOCK @VMH0022 00457116
L R2,=A(DMKLOKTR) GET ADDR OF TRQ LOCKS @V5BC0AB 00457120
ST R0,0(,R2) FREE THE TRQ LOCK @VMH0022 00457126
L R2,=A(DMKLOKRL) GET ADDR OT RUN LIST LOCK @V5BC0AB 00457130
ST R0,0(,R2) FREE THE RUN LIST LOCK @VMH0022 00457136
L R2,=A(DMKLOKFR) GET ADDR OF FREE STORAGE LOCK @V5BC0AB 00457140
ST R0,0(,R2) FREE THE FREE STORAGE LOCK @VMH0022 00457146
B AFFCHECK GO CHECK FOR USERS WITH AFFINITY @VMH0033 00458100
* TO THE FAILING PROCESSOR 00458200
MCTABEND DS 0H @V4M0199 00459000
ABEND 001 MCT001 ABEND @V4M0199 00460000
WAIT016 MVC WAITCODE(4),CSSWAIT SET UP WAIT CODE 16 @VA12934 00460020
B MFAWAIT GO LOAD DISABLED WAIT PSW @VA12934 00460023
MCTWT019 DS 0H @VA12934 00460026
LPSW DISABPSW THIS PROCESSOR IS BEING @VA12934 00460029
* TERMINATED -- STOP IT FROM RUNNING 00460032
EJECT 00460035
DMKMCTAF DS 0H @VMH0033 00460040
SPACE 00460060
USING *,R12 @VMH0033 00460080
SPACE 00460100
L R12,MCTBASE @VMH0033 00460120
SPACE 00460140
USING DMKMCT,R12 @VMH0033 00460160
SPACE 00460180
AFFCHECK DS 0H @VMH0033 00460200
L R11,ASYSVM GET SYSTEM VMBLOK ADDRESS @VMH0033 00460220
L R11,VMPNT GET FIRST VMBLOK IN CYCLIC CHAIN @VMH0033 00460240
LR R10,R11 SAVE ENDING ADDRESS @VMH0033 00460260
AFFMSGCF DS 0H @VMH0033 00460280
TM VMAFF,VMAFFON AFFINITY SET? @VMH0033 00460300
BZ NOAFFMSG NO, BRANCH @VMH0033 00460320
TM VMOSTAT,VMKILL USER TO BE LOGGED OFF? @VMH0033 00460340
BO NOAFFMSG YES, BRANCH @VMH0033 00460360
TM VMRSTAT,VMLOGON+VMLOGOFF @VMH0033 00460380
BNZ NOAFFMSG BRANCH IF EITHER IS ON @VMH0033 00460400
SR R1,R1 CLEAR REGISTER 1 @VMH0033 00460420
IC R1,VMAFF GET AFFINITY BYTE @VMH0033 00460440
N R1,=A(X'3F') LEAVE ONLY PROCESSOR ADDRESS @VMH0033 00460460
CH R1,IPUADDR AFFINITY TO THIS PROCESSOR? @VMH0033 00460480
BE NOAFFMSG YES, BRANCH @VMH0033 00460500
MVC VMAFF(1),ZEROES CLEAR AFFINITY BYTE @VMH0033 00460520
LA R0,MCTAFFLN GET LENGTH OF MESSAGE @VMH0033 00460540
LA R1,MCTAFFMG GET ADDRESS OF MESSAGE @VMH0033 00460560
CALL DMKQCNWT,PARM=PRIORITY SEND MESSAGE IMMEDIATELY @VMH0033 00460580
CALL DMKCFMBK PUT IN CONSOLE FUNCTION MODE @VMH0033 00460600
NOAFFMSG DS 0H @VMH0033 00460620
L R11,VMPNT GET ADDRESS OF NEXT VMBLOK @VMH0033 00460640
CLR R11,R10 END OF CHAIN? @VMH0033 00460660
BNE AFFMSGCF NO, BRANCH @VMH0033 00460680
MVI CPAPRINP,X'00' RESET APR RECURSION LOCK @VA12934 00460685
NI MCTFLAG,X'FF'-MCTFS RESET ENTRY POINT INDICATOR @VA12934 00460690
MVC MCTFPROC(2),ZEROES CLEAR FAILING PROC ADDRESS @VA12934 00460695
GOTO DMKDSPCH GO TO THE DISPATCHER @VMH0033 00460700
EJECT 00461000
SPACE 00462000
***************************************************************@V407510 00463000
* VIRTUAL MACHINE TERMINATION ROUTINE @V407510 00464000
***************************************************************@V407510 00465000
SPACE 00466000
VIRTERM DS 0H @V407510 00467000
MVC MSGCDE(LN3),MSG1 SETUP MESSAGE ID IN BUFFER @VA07837 00468100
MVC MSGBUF(MSG1L),MSG1B MOVE MESSAGE INTO BUFFER @V407510 00469000
LA R0,MCMSGL GET LENGTH OF MESSAGE @V407510 00470000
LA R1,MCTMSG GET THE ADDRESS OF THE MESSAGE @V407510 00471000
CALL DMKQCNWT,PARM=NORET @V407510 00472000
MVC MSGCDE(LN3),MSG8 SETUP THE MESSAGE ID @V407510 00473000
MVC MSG8ID(LN8),VMUSER MOVE THE USERID INTO BUFFER @V407510 00474000
MVC MSGBUF(MSG8L),MSG8A MOVE MESSAGE INTO BUFFER @V407510 00475000
LA R0,MCMSGL GET LENGTH OF MESSAGE TEXTS @V407510 00476000
LA R1,MCTMSG GET THE MESSAGE BUFFER ADDRESS @V407510 00477000
CALL DMKQCNWT,PARM=OPERATOR+ALARM @V407510 00478000
C R11,AVMREAL IS THIS THE V=R USER? @V4M0132 00479000
BNE RESET NO, RESET VIRTUAL USER @V407510 00480000
OI VMOSTAT,VMKILL DMKDSPCH WILL LOGOFF USER @V407510 00481000
OI VMSVSTAT,VMLGFORC INDICATE USER WAS FORCED OFF @VA13026 00481500
BR R6 RETURN TO CALLER @V407510 00482000
SPACE 00483000
RESET DS 0H @V407510 00484000
CALL DMKCFPRR RESET THE VIRTUAL USER SYSTEM @V407510 00485000
SR R2,R2 IND CLEAR OPTION @V407510 00486000
CALL DMKPGSPO RELEASE USERS VIRTUAL STORAGE @V407510 00487000
NI VMRSTAT,OFF-VMEXWAIT MARK USER DISPATCHABLE @V407510 00488000
CALL DMKCFMBK PUT USER IN CONSOLE FUNCTION MODE @V407510 00489000
BR R6 RETURN TO CALLER @V407510 00490000
EJECT 00491000
* SUBROUTINE NAME - 00492000
* DMKMCTST 00493000
* FUNCTION - 00494000
* THE FUNCTION OF THIS ENTRY POINT IS TO TERMINATE THE SYSTEM 00495000
* ATTACHED PROCESSOR MODE 00496000
* 00497000
* ENTRY CONDITIONS - 00498000
* R0 - LENGTH OF MESSAGE TO BE ISSUED 00499000
* R1 - ADDRESS OF MESSAGE TEXT 00500000
* R2 - WAIT STATE CODE TO BE LOADED 00501000
* 00502000
* EXIT CONDITIONS - 00503000
* DISABLED WAIT STATE LOADED 00504000
* 00505000
* REGISTER USAGE - 00506000
* SEE MAIN PROLOGUE 00507000
* 00508000
* OPERATION - 00509000
* 1. GET ON MAIN PROCESSOR 00510000
* 2. CALL DMKOPRWT TO ISSUE MESSAGE 00511000
* 3. LOAD DISABLED WAIT STATE 00512000
* 00513000
SPACE 2 00514000
DMKMCTST DS 0H SYSTEM TERMINATION ROUTINE @V407510 00515000
USING *,R12 TEMPORARY ADDRESSABILITY @V407510 00516000
L R12,MCTBASE GET COMMON BASE REG @V407510 00517000
USING DMKMCT,R12 COMMON ADDRESSABILITY @V407510 00518000
ST R2,WAITCODE SET UP APPROPRIATE WAIT STATE @V407510 00519000
BAL R6,SWTCH GET ON MAIN PROCESSOR @V407510 00520000
B CALLOPR BRANCH TO ISSUE MSG @V407510 00521000
*********************************************************************** 00522000
* OPERATOR COMMUNICATION ROUTINE 00523000
*********************************************************************** 00524000
SPACE 00525000
OPCOM DS 0H 00526000
L R2,0(0,R3) PICK UP MESSAGE NUMBER AND LEN @V407510 00527000
STCM R2,B'1110',MSGCDE PUT CODE INTO THE MSG HDR @V407510 00528000
N R2,F255 SAVE ONLY THE MESSAGE LENGTH @V407510 00529000
S R2,F3 SUBTRACT 3 FROM LENGTH @V4M0217 00530000
* 2 FOR CONTROL, 1 FOR EXECUTE @V4M0217 00531000
MVI MSGBUF,BLANK BLANK OUT BUFFER @VA12934 00531300
MVC MSGBUF+ONE(L'MSGBUF-1),MSGBUF CLEAR BUFFER @V407510 00531600
EX R2,EMSGMVC MOVE THE MESSAGE TEXT TO 'MSGBUF'@V407510 00532000
LA R0,MCMSGL SET UP LENGTH OF MESSAGE @V407510 00533000
LA R1,MCTMSG START OF THE MESSAGE DATA @V407510 00534000
CALLOPR DS 0H @V407510 00535000
CALL DMKOPRWT,PARM=ALARM EMERGENCY WRITE TO OPER @V407510 00536000
SPACE 00537000
SPACE 00538000
MFAWAIT DS 0H PUT SYSTEM IN WAIT STATE @V407510 00539000
L R2,PREFIXA GET OWN PREFIX REG @V407510 00540000
CLC CPID-PSA(,R2),WARM IS WARM INDICATED IN ID @V4M0144 00541000
BNE MFAWAIT1 NO, DO NOT CHANGE ID @V407510 00542000
MVC CPID-PSA(,R2),CPCP MOVE ID IN FOR CHECKPOINT @V4M0144 00543000
MFAWAIT1 DS 0H @V407510 00544000
LPSW WAITMCT ENTER DISABLED WAIT STATE @V407510 00545000
EMSGMVC MVC MSGBUF(*-*),LN4(R3) MOVE MSG TO BUFFER @V407510 00546000
EJECT 00547000
* EQUATES @V407510 00548000
SPACE 00549000
ONE EQU 1 DISPLACEMENT OF 1 @V407510 00550000
ZONE EQU X'F0' ZONE USED FOR CONVERSION @V407510 00551000
LN2 EQU 2 LENGTH OF 2 @V407510 00552000
LN3 EQU 3 LENGTH OF 3 @V407510 00553000
LN4 EQU 4 LENGTH OF 4 @V407510 00554000
LN8 EQU 8 LENGTH OF 8 @V407510 00555000
CLEAR EQU X'00' SET FIELD TO ZERO @V407510 00556000
OFF EQU X'FF' MASK TO TURN BIT OFF @V407510 00557000
BLANK EQU X'40' BLANK CHARACTER @V407510 00558000
FORCE EQU X'02' FORCED LOGOFF BY SYSTEM @VA08667 00558200
SPACE 00559000
* DEFINE STORAGE CONSTANTS @V407510 00560000
WARM DC CL4'WARM' CPID VALUE OF WARM @V407510 00561000
CPCP DC CL4'CPCP' CPID VALUE OF CPCP @V407510 00562000
DS 0F FULL WORD ALIGNMENT @V4M0144 00563000
HIGHBIT DC X'80000000' MASK TO TURN ON HIGH BIT @V4M0144 00564000
WORK DC D'0' WORK AREA FOR CONVERSION @V407510 00565000
WORKLO EQU WORK+6 SIGNIFICANT DIGITS AFTER UNPK @V407510 00566000
RSRTMAIN DS 0D RESTART PSW FOR MAIN PROCESSOR @V407510 00567000
DC X'00080000' DO NOT ALLOW MACHINE CHECKS @V407510 00568000
DC A(MAINRSRT) RESTART AT MAINRSRT @V407510 00569000
WAITMCT DS 0D 013 WAIT STATE PSW @V407510 00570000
DC X'0002',X'0000' @V407510 00571000
WAITCODE DC X'00000013' WAIT STATE CODE @V407510 00572000
* FOR ATTACHED PROCESSOR @V407510 00573000
MAINCODE DC X'00000001' WAIT STATE FOR MAIN PROCESSOR @V407510 00574000
CSSWAIT DC X'00000016' CHANNEL SET SWITCH FAILURE @VA12934 00575000
DISABPSW DS 0D DISABLED WAIT PSW @VA12934 00575070
DC X'00020000',X'00000019' @VA12934 00575140
DMKMCTPF DC F'0' ADDRESS OF PSA PAGE OF TERMINATED@VA12934 00575210
* PROCESSOR 00575280
DMKMCTVM DC F'0' TERMINATE VIRTUAL USER ADDRESS @VA12934 00575350
MCTTERM EQU DMKMCTVM INTERNAL LABEL TO REFERENCE @VA12934 00575420
* ADDRESS OF USER TO BE TERMINATED 00575490
MCTFPROC DC H'0' ADDRESS OF FAILING (UNRESPONSIVE)@VA12934 00575560
* PROCESSOR 00575630
DMKMCTFL DC X'00' DMKMCT FLAGS @VA12934 00575700
MCTFLAG EQU DMKMCTFL INTERNAL LABEL TO REFERENCE FLAGS@VA12934 00575770
MCTFS EQU X'80' FLAG TO INDICATE THAT DMKMCT WAS @VA12934 00575840
* ENTERED AT DMKMCTFS ENTRY POINT @VA12934 00575910
MCTBASE DC A(DMKMCT) COMMON BASE VALUE @V407510 00576000
MCTDMPMA DC A(DMKDMPMA) PROC. ADDRESS OF PROCIO @VA12934 00576200
MCTDMPAA DC A(DMKDMPAA) PROC. ADDRESS OF NON-PROCIO @VA12934 00576400
MCTDMPSA DC A(DMKDMPSA) DMP'S POINTER TO PSA ADDRESSES @VA12934 00576600
MCTDSPRQ DC A(DMKDSPRQ) ADDRESS OF DISPATCHER'S QUEUES @VA12934 00576800
EJECT 00577000
********************************************************************** 00578000
SPACE 00579000
SPACE 00580000
SPACE 00581000
SPACE 00582000
MCTMSG DC X'151515' @V407510 00583000
MCTID DC C'DMKMCT6' @V407510 00584000
MSGCDE DC C'10W ' @V4M0217 00585000
DC C'MACHINE CHECK' @V407510 00586000
MSGBUF DC CL35' ' @V4M0217 00587000
MSGPROC DC CL2' ' PROCESSOR ADDRESS @V407510 00588000
DC XL2'1515' CONTROL CHARACTERS @V4M0217 00589000
MCMSGL EQU *-MCTMSG LENGTH OF MESSAGE @V407510 00590000
MSG1 DC C'19I' @V407510 00591000
MSG1A DC X'17' @V407510 00592000
MSG1B DC C'; OPERATION TERMINATED' @V407510 00593000
MSG1L EQU *-MSG1B @V407510 00594000
MSG2 DC C'10W' @V4M0217 00595000
MSG2A DC X'15' @V407510 00596000
MSG2B DC C'; SUPERVISOR DAMAGE',X'1515' @V407510 00597000
MSG2L EQU *-MSG2B @V407510 00598000
MSG3 DC C'11W' @V4M0217 00599000
MSG3A DC X'19' @V407510 00600000
MSG3B DC C'; SYSTEM INTEGRITY LOST',X'1515' @V407510 00601000
MSG3L EQU *-MSG3B @V407510 00602000
MSG4 DC C'12W' @V407510 00603000
MSG4A DC X'1C' @V407510 00604000
MSG4B DC C'; TIMING FACILITIES DAMAGE',X'1515' @V407510 00605000
MSG4L EQU *-MSG4B @V407510 00606000
MSG8 DC C'16I' @V407510 00607000
MSG8A DC C'; USER ' @V407510 00608000
MSG8ID DC CL8'XXXXXXXX' @V407510 00609000
DC C' TERMINATED',X'1515' @V407510 00610000
MSG8L EQU *-MSG8A @V407510 00611000
MSG9 DC C'20I' @V407510 00612000
MSG9A DC X'23' @V407510 00613000
MSG9B DC C'; ATTACHED PROCESSOR NOT BEING USED' @V407510 00614000
MSG9L EQU *-MSG9B @V407510 00615000
MCTAFFMG DC X'151515' @VMH0033 00616100
DC C'DMKMCT621I AFFINITY SET OFF' @VMH0033 00616200
DC X'1515' @VMH0033 00616300
MCTAFFLN EQU *-MCTAFFMG @VMH0033 00616400
MCT623MG DC X'151515' @VA12934 00620000
DC C'DMKMCT623I CHANNEL SET CONNECTED TO PROCESSOR ' @VA12934 00620200
MCTID623 DC C' ' @VA12934 00620400
DC X'1515' @VA12934 00620600
MCT623LN EQU *-MCT623MG @VA12934 00620800
********************************************************************** 00621000
EJECT 00622000
LTORG 00623000
EJECT 00624000
COPY VMBLOK @V407510 00625000
COPY SAVE @V4M0175 00626000
PSA @V407510 00627000
COPY EQU @V407510 00628000
COPY MCHAREA @V407510 00629000
COPY TIMER @V407510 00630000
END 00631000