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