MCH TITLE 'DMKMCH (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE SEQUENCEING OF INPUT @V200820 00002000 *. 00003000 * MODULE NAME - 00004000 * 00005000 * DMKMCH 00006000 * 00007000 *FUNCTION - 00008000 * 00009000 * THE FUNCTION OF THIS ROUTINE IS TO DETERMINE THE SEVERITY OF 00010000 * A MACHINE CHECK AND ATTEMPT TO CORRECT THE MALFUNCTION. 00011000 * DIAGNOSTIC MESSAGES FOR THE SYSTEM OPERATOR, AND ERROR DATA 00012000 * FOR THE F.E. PERSONNEL USE WILL BE PRODUCED AS OUTPUT. 00013000 * 00014000 *ATTRIBUTES - 00015000 * 00016000 * RESIDENT,ENTERED DIRECTLY VIA MC NEW PSW 00017000 * 00018000 *ENTRY POINTS- 00019000 * 00020000 * 00021000 * DMKMCHIN - PROCESS A MCH INTERRUPT 00022000 * 00023000 * DMKMCHST - TERMINATE THE SYSTEM 00027000 * 00028000 * DMKMCHSE - CONTINUE PROCESSING SOFT ERRORS WITH SYSTEM LOCK 00029000 * 00030000 * 00031000 *ENTRY CONDITIONS - 00032000 * 00033000 * NONE 00034000 * 00035000 *EXIT CONDITIONS- 00036000 * 00037000 * - RETURN TO INTERRUPTED PROGRAM ON OCCURANCE OF SOFT MACHINE 00038000 * CHECK (AFTER RECORDING) 00039000 * 00040000 * - DISABLED WAIT STATE ON ERRORS THAT CAUSE SYSTEM TERMINATION 00041000 * 00042000 * - TO DISPATCH ON ALL OTHER CONDITIONS 00043000 * 00044000 *CALLS TO OTHER ROUTINES - 00045000 * 00046000 * DMKIOEMC - TO RECORD FORMATTED MACHINE CHECK RECORDS 00047000 * GPR6 = FORMATTED MACHINE CHECK RECORD ADDRESS 00048000 * GPR7 = LENGTH OF MACHINE CHECK RECORD 00049000 * DMKQCNWT - TO SEND MESSAGES TO A VIRTUAL MACHINE AND THE 00050000 * SYSTEM OPERATOR 00051000 * DMKPTRFT - TO PURGE DEFECTIVE PAGE IN STORAGE 00052000 * DMKFREE - TO GET STORAGE FOR CPEXBLOKS 00053000 * DMKSTKOP - TO STACK A CPEXBLOK FOR THE OTHER PROCESSOR 00054000 * DMKPGSPO - TO RELEASE USER'S VIRTUAL STORAGE 00055000 * DMKCFMBK - TO PUT USER IN CONSOLE FUNCTION MODE 00056000 * DMKCFPRR - TO RESET VIRTUAL MACHINE 00057000 * DMKOPRWT - TO WRITE EMERGENCY MESSAGE TO SYSTEM OPERATOR 00058000 * DMKMCTPT - TERMINATE THE AILING PROCESSOR 00062000 * DMKMCTST - TERMINATE THE SYSTEM 00063000 * 00064000 *EXTERNAL REFRENCES 00065000 * PSA FIELDS 00066000 * CPPTLBR - PTLB REQUIRED 00067000 * CPMCHLK - UNSTACK FIRST PROCESSOR DEPENDENT BLOCK, DONOT 00068000 * DISPATCH ANY OTHER WORK. 00069000 * PREFIXA - ADDRESS OF PREFIX REGISTER FOR CURRENT PROCESSOR 00070000 * RECMODE - RECORDING MODE FOR THIS PROCESSOR 00071000 * INTRC - EXTERNAL DAMAGE REASON CODE 00071100 * 00072000 *TABLES AND WORK AREAS - 00073000 * 00074000 * CORETABLE, PAGTABLE, SWPTABLE, PSA 00075000 * MCHAREA,MCRECORD,VMBLOK 00076000 * 00077000 *MACROS - 00078000 * 00079000 * LOCK OBTAIN,TYPE=SYS,SPIN=NO 00080000 * 00081000 * SIGNAL 00082000 * STOP 00083000 * START 00084000 * 00085000 * CALL NAME,AFFINITY 00086000 * 00087000 *REGISTER USEAGE _ 00088000 * 00089000 * GPR0-11 = SCRATCH 00090000 * 12 = MCH BASE 00091000 * 13 = SCRATCH 00092000 * 14 = LINKAGE 00093000 * 15 = LINKAGE 00094000 * 00095000 *NOTES - 00096000 * WILL SUPPORT SYSTEM/370 MODEL 135, 135-3, 138, 145, 145-3, 00097000 * 148, 155-2, 158, 158-2, 165-2, 168, AND 3033, 3032 AND 00098100 * 3031, AND THE 4331 AND 4341 PROCESSORS. 00098200 * 00099000 *OPERATION - 00100000 * 00101000 * DMKMCHIN 00102000 * 1. RECEIVES CONTROL WHEN A MACHINE CHECK INTERRUPT CAUSES THE 00103000 * MC NEW PSW TO BE LOADED 00104000 * 00105000 * 2. INITALLY DISABLES BOTH HARD AND SOFT MACHINE CHECKS WHILE 00106000 * DETERMINING THE SEVERITY OF THE ERROR. WHEN IT IS DETERMINED 00107000 * THAT THE ERROR IS NOT ONE THAT REQUIRES SYSTEM TERMINATION 00108000 * THEN HARD MACHINE CHECK INTERRUPTS WILL BE RE-ENABLED. 00109000 * 00110000 * 3. IF THE ERROR IS ONE THAT SHOULD TERMINATE SYSTEM OPERATION, 00111000 * AND THE SYSTEM IS IN ATTACHED PROCESSOR MODE, CONTROL WILL 00112000 * BE GIVEN TO DMKMCTPT, THE PROCESSOR TERMINATION ROUTINE FOR 00113000 * ATTACHED PROCESSING. FOR UNIPROCESSING MODE, 00114000 * A DIRECT I/O OPERATION TO THE SYSTEM OPERATOR INFORMING 00115000 * HIM OF THE FAILURE, AND RECOMMENDED ACTION TO BE PERFORMED 00116000 * WILL BE DONE IF CONSOLE IS ACCESSABLE, FOLLOWED BY DMKMCH 00117000 * PLACING THE SYSTEM IN A DISABLED WAIT STATE. 00118000 * IF THE ERROR AFFECTS ONLY THE VIRTUAL USER, THE ERROR WILL 00119000 * BE RECORDED AND A MESSAGE WILL BE SENT TO THE AFFECTED USER. 00120000 * THE VIRTUAL MACHINE WILL BE RESET AND PLACED IN 00121000 * CP CONSOLE FUNCTION MODE. THE VIRTUAL= REAL USER 00122000 * WILL BE TERMINATED AND LOGGED OFF IF A STORAGE ERROR 00123000 * HAS OCCURRED. 00124000 * 00125000 * 4. BEFORE ANY SYSTEM FUNCTIONS ARE USED, THE MACHINE CHECK 00126000 * HANDLER WILL ATTEMPT TO GET THE GLOBAL SYSTEM LOCK. IF THE 00127000 * LOCK IS UNAVAILABLE, CPMCHLK WILL BE SET TO ALLOW PROCESSING 00128000 * TO CONTINUE WHEN THE LOCK IS AVAILABLE. DMKMCHSE WILL RECEIVE 00129000 * CONTROL FROM THE DISPATCHER WHEN CPMCHLK IS ON. 00130000 * IF ANY MACHINE CHECKS OCCUR DURING THIS PROCESSING, THEY 00131000 * WILL BE VIEWED AS RECURSIVE MACHINE CHECKS. 00132000 * CPMCHLK PREVENTS THE DISPATCHER FROM DISPATCHING ANY 00133000 * NEW WORK FOR THAT PROCESSOR UNTIL THE MACHINE CHECK 00134000 * INTERRUPT IS HANDLED. 00135000 * 00136000 * 00137000 * 5. ON SOFT ERRORS THE SYSTEM OPERATOR WILL BE INFORMED, A TEST 00138000 * WILL BE MADE TO DETERMINE IF ANY SOFT ERROR THRESHOLDS HAVE 00139000 * BEEN EXCEEDED, THE ERROR WILL BE RECORDED, AND CONTROL WILL 00140000 * BE RETURNED TO THE INTERRUPTED PROGRAM. 00141000 * 00142000 * 6. ON SPF AND MULTI-BIT ECC ERRORS AN ANALYSIS WILL BE MADE TO 00143000 * DETERMINE IF THE DAMAGE CAN BE REFRESHED OR NOT. ADDITIONALLY 00144000 * A FUNCTIONAL TEST OF THE FAILING FRAME OF STORAGE WILL BE 00145000 * PERFORMED TO DETERMINE IF THAT FRAME SHOULD BE REMOVED FROM 00146000 * SYSTEMS USE. 00147000 * 00148000 * 7. A THRESHOLD COUNT FOR ALL SOFT MACHINE CHECKS WILL 00149000 * BE KEPT AND WHEN THE THRESHOLD COUNT EXCEED THE 00150000 * MAX. VALUE, THE SOFT MACHINE CHECKS WILL BE DISABLE 00151000 * FOR SOFT INTERRUPTS FOR BOTH PROCESSORS. 00152000 * 00153000 * 8. THE SYSTEM OPERATOR WILL BE INFORMED OF ANYTIME 00154000 * THE MACHINE IS DISABLED FOR SOFT MACHINE CHECKS. 00155000 * 00156000 *MESSAGES - 00163000 * 00164000 * DMKMCH610I MACHINE CHECK; SUPERVISOR DAMAGE CPUID 00165000 * 00166000 * DMKMCH611I MACHINE CHECK; SYSTEM INTEGRITY LOST CPUID 00167000 * 00168000 * DMKMCH612W MACHINE CHECK; TIMING FACILITIES DAMAGE CPUID 00169000 * 00170000 * DMKMCH613I SOFT MACHINE CHECK RECORDING DISABLED CPUID 00171000 * 00172000 * DMKMCH614I MACHINE CHECK; DAMAGED PAGE NOW DELETED CPUID 00173000 * 00174000 * DMKMCH615I MACHINE CHECK RECORDING FAILURE CPUID 00175000 * 00176000 * DMKMCH616I MACHINE CHECK; USER XXXXXXXX TERMINATED CPUID 00177000 * 00178000 * DMKMCH617I MACHINE CHECK; BUFFER OR DLAT DAMAGE CPUID 00179000 * 00180000 * DMKMCH619I MACHINE CHECK; OPERATION TERMINATED CPUID 00184000 * 00185000 * DMKMCH622W MACHINE CHECK; MULTIPLE CHANNEL ERRORS 00185100 * 00185200 * WAIT STATE CODES 00190000 * 00191000 * 001 - UNRECOVERABLE ERROR ON MAIN PROCESSOR 00192000 * 00193000 *. 00194000 EJECT 00195000 COPY OPTIONS 00196000 COPY LOCAL 00197000 SPACE 3 00198000 DMKMCH START 00199000 SPACE 00200000 ENTRY DMKMCHIN 00201000 ENTRY DMKMCHSE SOFT ERROR RETURN FROM DMKDSPCH @V407510 00202000 ENTRY DMKMCHST SYSTEM TERMINATION @V407510 00203000 ENTRY DMKMCHLM COUNT FIELD FOR SOFT ERRORS @VA10453 00203100 SPACE 00204000 EXTRN DMKIOEMC 00205000 EXTRN DMKQCNWT 00207000 EXTRN DMKOPRWT @V200820 00208000 EXTRN DMKPTRFT 00212000 EXTRN DMKPGSPO 00213000 EXTRN DMKCFPRR @V200820 00214000 EXTRN DMKCFMBK 00215000 EXTRN DMKSTKOP @V407510 00219000 AIF (NOT &AP).MCTST4 00220900 EXTRN DMKMCTST @V407510 00221000 EXTRN DMKMCTPT @V407510 00222000 EXTRN DMKDSPRU @V407510 00223000 .MCTST4 ANOP 00223100 SPACE 00224000 USING *,R12 SETUP ADDRESSABILITY FOR MCH HANDLER 00225000 USING MCHAREA,R9 SETUP ADDRESSABILITY FOR @V407510 00226000 * MCH COMMUNICATION AREA @V407510 00227000 USING MCRECORD,R8 SETUP ADDRESSABILITY FOR @V407510 00228000 * MCH RECORD @V407510 00229000 USING VMBLOK,R11 SETUP ADDRESSABILITY FOR USER VMBLOK 00230000 USING SAVEAREA,R13 SETUP ADDRESSABILITY FOR SAVE AREA 00231000 USING CORTABLE,R10 SETUP ADDRESSABILITY FOR CORTABLE 00232000 USING PSA,R0 SETUP ADDRESSABILITY FOR PSA AREA 00233000 SPACE 00234000 EJECT 00235000 DMKMCHIN DS 0D 00236000 LM R0,R15,C0 CLEAR BAD PARITY IN GENERAL REGISTERS 00237000 BALR R15,R0 SETUP ADDRESSABILITY FOR M. C. HANDLER 00238000 USING *,R15 MACHINE CHECK HANDLER 00239000 L R12,MCHBASE GET COMMON BASE REGISTER FOR MCH @V407510 00240000 DROP R15 DROP ORIGINAL BASE REGISTER 00241000 USING DMKMCH,R12 SETUP ADDRESSABILITY FOR M. C. HANDLER 00242000 L R9,AMCHAREA GET THE ADDRESS OF MCHAREA @V407510 00243000 L R8,MCHREC GET ADDRESS OF MCH RECORD @V407510 00244000 XC MCHRESEV(MCHLEN),MCHRESEV CLEAR THE MCHAREA @V407510 00245000 LCTL R14,R14,CR14MSK DISABLE SOFT MACHINE CHECKS 00246000 LCTL R8,R8,CPCREG8 REFLECT CP MONITOR CALL MASK @VA06356 00247000 MVC MCFXDLOG(256),FLA SAVE THE INDEPENDENT LOGOUT AREA 00248000 MVC MCFXDLOG+256(24),FLA+256 00249000 MVC MCOLDPW(8),MCOPSW SAVE MACHINE CHECK OLD PSW 00250000 MVC MCNPSW(8),STGSVE SETUP SECONDARY M.C. HANDLER 00251000 LPSW HARDPSW ENABLE HARD MACHINE CHECKS 00252000 ENBHARD EQU * 00253000 NI APSTAT2,OFF-CPPTLBR TURN OFF PTLB PENDING @V407510 00255000 * FOR THIS PROCESSOR @V407510 00256000 PTLB PURGE TLB @VA07615 00256100 TM APSTAT1,APUOPER IN AP MODE? @V407510 00257000 BZ CLEAR NO, GO TO CLEAR MCHAREA @V407510 00258000 L R7,PREFIXB GET PREFIX ADDR FOR OTHER @V407510 00259000 * PROCESSOR @V407510 00260000 OI APSTAT2-PSA(R7),CPPTLBR INDICATE PTLB TO BE @V407510 00261000 * DONE FOR OTHER PROCESSOR @V407510 00262000 CLEAR DS 0H @V407510 00263000 XC MCHRESEV(MCHLEN),MCHRESEV CLEAR THE M.C.H. FLAGS 00264000 L R13,MCFXDLOG+204 GET THE ADDRESS OF THE SAVE AREA 00265000 LCTL R0,R0,CPCREG0 GET CONTROL REGISTER 0 @VM08879 00266000 MVC QUANTUMR,TIMER SAVE LOCATION 80 TIMER @VM08879 00267000 L R11,ASYSVM GET ADDRESS OF SYSTEM'S VMBLOK @VM08879 00268000 TM MCOPSW+CMWP,PROBMODE SYSTEM IN PROBLEM STATE? @V4M0144 00269000 BZ CHKWAIT NO, CHECK FOR WAIT STATE @V4M0144 00270000 OI MCHFLAG7,MCH7OPSW SET VIRTUAL USER FLAG @VM08879 00271000 L R11,RUNUSER GET ADDRESS OF USER'S VMBLOK @VM08879 00272000 MVC VMTMOUTQ(8),XD8 GET THE CPU TIMER VALUE @VM08879 00273000 MVC VMGPRS(64),MCFXDLOG+152 SAVE THE USER'S REGISTERS 00274000 MVC VMFPRS(32),MCFXDLOG+120 SAVE FLOATING POINT REGISTERS 00275000 MVC VMPSW+4(4),MCOPSW+4 MOVE ADDR. OF MC OLD PSW @VA01435 00276000 * IN VMBLOK 00277000 IC R1,MCOPSW+2 GET CONDITION CODE & PROGRAM MASK@VA01435 00278000 TM VMESTAT,VMEXTCM IS VIRTUAL MACHINE IN EC MODE @VA01435 00279000 BZ VMNONDI1 NO, BYPASS BC MODE HANDLING @VA01435 00280000 STC R1,VMPSW+2 SAVE CONDITION CODE & PROGRAM @VA01435 00281000 * MASK 00282000 B VMNONDIS SET VIRTUAL USER NON-DISPATCHABLE@VA01435 00283000 CHKWAIT DS 0H @V407510 00284000 CLI CPSTATUS,CPWAIT SYSTEM IN WAIT STATE? @V4M0144 00285000 BNE MCHSYSIL NO, SET UP TRACE ENTRY @V4M0175 00286000 MVC WAITEND,XD8 STORE CPU TIMER @V407510 00287000 B MCHSYSIL GO SET UP TRACE ENTRY @V407510 00288000 VMNONDI1 EQU * @VA01435 00289000 STC R1,VMPSW+4 SAVE CONDITION CODE & PROGRAM @VA01435 00290000 * MASK 00291000 VMNONDIS EQU * 00292000 OI VMRSTAT,VMEXWAIT SET THE VIRTUAL USER 00293000 * NON-DISPATCHABLE 00294000 MCHSYSIL EQU * 00295000 AIF (NOT &TRACE(9)).TR1 ** AIF ** @VA01166 00296000 TM TRACFLG1,TRAC04 TRACING ACTIVE? @V407510 00297000 BZ NOTRAC1 BRANCH IF NOT @VA01166 00298000 TRACE CODE=TRCMCH,R15,R2,R3 @V407510 00299000 STCM R11,L3B,ONE(R15) SAVE USER VMBLOK ADDRESS @V407510 00300000 MVC 4(4,R15),INTMC SAVE MACHINE CHECK INT CODE @VA01166 00301000 MVC 8(8,R15),MCOPSW SAVE THE OLD PSW @VA01166 00302000 NOTRAC1 DS 0H @V407510 00303000 .TR1 ANOP @V407510 00304000 SR R4,R4 INDICATE NO TERMINATION @V407510 00305000 TM MCHFLAG7,MCH7OPSW VIRTUAL USER ACTIVE? @V407510 00306000 BNO TESTSUP NO, TEST FOR SUPERVISOR @V407510 00307000 LA R4,MCH7VRTM SET UP TO TERMINATE USER @V407510 00308000 B ANALYSIS START TO ANALYZE ERROR @V407510 00309000 TESTSUP DS 0H @V407510 00310000 CLI CPSTATUS,CPWAIT SYSTEM IN WAIT STATE? @V4M0144 00311000 BE ANALYSIS YES, START TO ANALYZE ERROR @V4M0144 00312000 LA R4,MCH7SYST INDICATE TERMINATE SYSTEM @V407510 00313000 ANALYSIS DS 0H ANALYZE ERROR @V407510 00314000 LA R3,MSG3 SETUP MESSAGE FOR SYSTEM INTEGRITY LOST 00315000 TM MCIC,X'FD' IS THE M.C.I.C. VALID 00316000 BZ FORCESYS NO, TERMINATE SYSTEM @V4M0144 00317000 TM VALID1,WPBIT+MSBIT ARE THE EMWP, KEY & PSW MK VALID 00318000 BNO FORCESYS NO, TERMINATE SYSTEM @V4M0144 00319000 LA R3,MSG2 SET UP SYSTEM DAMAGE MSG @V4M0200 00320000 TM VALID1,PMBIT+IABIT IAR & PGM MASK VALID? @V4M0200 00321000 BNO MCHINVAL NO, TERMINATE APPROPRIATELY @V4M0200 00322000 TM VALID2,FPBIT+GRBIT+CRBIT+STBIT REGS & STORAGE @V4M0200 00323000 * LOGICAL VALID? @V4M0200 00324000 BO MCHSYSD YES, TEST FOR SYSTEM DAMAGE @V4M0200 00325000 MCHINVAL DS 0H @V4M0200 00326000 EX R4,SETTERM SET APPROPRIATE TERMINATION FLAG @V4M0200 00327000 MCHSYSD EQU * 00329000 TM MCIC,SDBIT IS SYSTEM DAMAGE INDICATED ? 00330000 BO PRETERM YES, TERMINATE APPROPRIATELY @V407510 00331000 TM MCIC,CDBIT IS T.O.D. CLOCK DAMAGE INDICATED ? 00332000 BZ MCHTIMER NO, GO CHECK FOR TIMER DAMAGE 00333000 LA R3,MSG4 SET UP TIMING FACILITIES @V4M0200 00334000 * DAMAGE MESSAGE @V4M0200 00335000 OI MCHFLAG1,MCH1TODC INDICATE TIME OF CLOCK DAMGE 00336000 FORCESYS DS 0H FORCE SYSTEM TERMINATION @V4M0144 00337000 OI MCHFLAG7,MCH7SYST FORCE SYSTEM TERMINATION @V407510 00338000 B PRETERM TERMINATE APPROPRIATELY @V407510 00339000 ***************************************************************@V407510 00340000 SETTERM OI MCHFLAG7,ZERO TURN ON APPROPRIATE FLAG @V407510 00341000 ***************************************************************@V407510 00342000 MCHTIMER EQU * 00343000 TM MCIC,TDBIT IS CPU CLOCK DAMAGE INDICATED @V5088AA 00344050 BZ GROUPERR IF NOT, CHECK FOR GROUP ERROR @V5088AA 00344100 LA R3,MSG4 SETUP MSG FOR TIMING FACILITIES @V4M0200 00344150 * DAMAGE 00344200 B PRETERM TERMINATE APPROPRIATELY @V5088AA 00344250 GROUPERR EQU * @V5088AA 00344300 CLI MCHMODEL,MOD3033 IS PROCESSOR A 3033/3032/3031? @V5088AA 00344350 BNE TSTTERM IF NOT, DON'T CHECK FOR GROUP ERR@V5088AA 00344400 TM MCIC,EDBIT EXTERNAL DAMAGE INDICATED? @V5088AA 00344450 BZ TSTTERM NO, TEST RESULT OF ANALYSIS @V5088AA 00344500 TM VALID2,ECBIT IS EXT. DAMAGE REASON CODE VALID @V5088AA 00344550 BZ TSTTERM NO, GO TEST RESULT OF ANALYSIS @V5088AA 00344600 TM INTRC,EXDRESVD IS BIT 0 OF REASON CODE = 0? @V5088AA 00344650 BO TSTTERM BRANCH IF NOT @V5088AA 00344700 TM INTRC,EXDCNO+EXDCCF IS A GROUP ERROR INDICATED? @V5088AA 00344750 BZ TSTTERM IF NOT, TEST ANALYSIS RESULTS @V5088AA 00344800 OI MCHFLAG1,MCH1GERR FLAG GROUP ERROR IN MCHAREA @V5088AA 00344850 LA R3,MSG17 SET UP MSG. FOR GROUP ERROR @V5088AA 00344900 LA R4,MCH7SYST INDICATE SYSTEM TERMINATION @V5088AA 00344950 PRETERM DS 0H @V407510 00348000 EX R4,SETTERM SET APPROPRIATE TERMINATION FLG @V407510 00349000 TSTTERM DS 0H @V407510 00350000 TM MCHFLAG7,MCH7SYST SYSTEM TERMINATION? @V407510 00351000 BO OPCOM YES, TERMINATE @V407510 00352000 CHARGE START START CHARGING VIRTUAL USER @V407510 00353000 TM MCHFLAG7,MCH7VRTM HAS TERMINATION BEEN SET FOR THE 00354000 * VIRTUAL USER 00355000 BO VIRTERM YES, GO TERMINATE THE VIRTUAL USER 00356000 TM MCIC,PDBIT HAS INSTRUCTION PROCESSING 00357000 * DAMAGE OCCURED ? 00358000 BO MCHSPF YES, GO CHECK FOR SPF ERROR 00359000 SR R0,R0 CLEAR REGISTER 0 FOR NO MESSAGE 00360000 OI MCHFLAG0,MCH0HDWR SET INDICATOR FOR HARDWARE 00361000 * RECOVERY 00362000 TM MCIC,SRBIT IS SYSTEM RECOVERY INDICATED ? 00363000 BZ OPMSG3 NO, THAN IT'S EXTERNAL DAMAGE @VA08088 00364100 *********************************************************************** 00364200 * THE 4331/4341 PROCESSORS SET BIT 17(SCBIT) TO ZERO AND * 00364300 * THEREFORE IT SHOULD NOT BE CHECKED SINCE IT HAS NO VALIDITY. * 00364400 *********************************************************************** 00364500 CLI MCHMODEL,MOD4331 MODEL 4331 OR 4341 ??? @V60A6B6 00364600 BE MCHENABL YES BIT 17 IS QUESTIONABLE @V60A6B6 00364700 TM STOERR,SCBIT WAS IT A RECOVERED STORAGE ERROR ? 00365000 BO SOFTSTG YES, GO CHECK FOR MODEL NUMBER 00366000 OI MCHFLAG1,MCH1PROC SET THE INDICATOR FOR PROCESSOR 00367000 * ERROR 00368000 CLI MCHMODEL,MODEL145 IS THIS A MOD. 145/148? @V386298 00369000 BNE MCHENABL NO, GO SCHEDULE MESSAGE 00370000 TM VALID2,RCBIT IS THE REGION CODE VALID ? 00371000 BZ MCHENABL NO, GO SCHEDULE MESSAGE 00372000 TM REGION,MSRECOVR WAS THE FAILURE IN MAIN STORAGE 00373000 BO MCHENABL YES, GO SCHEDULE THE MESSAGE 00374000 OI MCHFLAG1,MCH1COST SET INDICATOR FOR CONTROL STORAGE 00375000 B MCHENABL GO SCHEDULE MESSAGE 00376000 SOFTSTG EQU * 00377000 CLI MCHMODEL,MODEL135 IS THIS A MOD. 135/138? @V386298 00378000 BNE MCHMAIN NO, GO SET INDICATOR FOR MAIN 00379000 * STORAGE 00380000 OI MCHFLAG1,MCH1COST SET INDICATOR FOR CONTROL STORAGE 00381000 B MCHENABL GO SCHEDULE MESSAGE 00382000 MCHMAIN EQU * 00383000 OI MCHFLAG3,MCH3DATA SET THE INDICATOR FOR DATA 00384000 OI MCHFLAG1,MCH1MAIN SET THE INDICATOR FOR MAIN STORAGE 00385000 MCHENABL EQU * 00386000 COUNT CPULIMIT,R3,R4 UPDATE SOFT ERROR COUNT @V407510 00387000 CLI SOFTCT,MAXSOFT COUNT EXCEEDS 12? @V407510 00388000 BNE OPMSG2 NO, SCHEDULE MESSAGE @V407510 00389000 BAL R5,GETLOCK OBTAIN SYSTEM LOCK @V407510 00390000 LR R5,R11 SAVE VALUE OF R11 @V407510 00392000 L R11,ASYSVM STACK FOR SYSTEM @V407510 00393000 BAL R6,STKOP IF AP, DISABLE OTHER PROCESSOR @V407510 00394000 LR R11,R5 RESTORE R11 USER @V407510 00395000 NI MCFXDLOG+272,X'FF'-RECOVRPT DISABLE SOFT MACHINE CHKS 00396000 OI MCHFLAG0,MCH0QUIT SYSTEM IN QUIET STATUS 00397000 LA R0,53 GET THE LENGTH OF THE MESSAGE 00398000 MVC MSGCDE(43),MSG15 MOVE IN SOFT ERROR MESSAGE 00399000 B OPMSG2 @VA08088 00399100 OPMSG3 EQU * @VA08088 00399200 MVC MSGCDE(3),VMS24 SETUP MSG ID @VA09504 00399310 MVC MSGBUF(19),MSG2C MOVE MESSAGE INTO BUFFER @VA08088 00399400 LA R0,46 GET LENGTH OF MESSAGE TEXT @VA08088 00399500 OPMSG2 EQU * 00400000 BAL R7,OPMSG GO TO SYSTEM OPERATOR RTN @V407510 00401000 SPACE 00402000 *********************************************************************** 00403000 * SOFT RECORDING ROUTINE 00404000 *********************************************************************** 00405000 SPACE 00406000 SOFTREC EQU * 00407000 BAL R4,FUMAT GO FORMAT THE MACHINE CHECK RECORD 00408000 NORMSG EQU * 00409000 TM MCHFLAG7,MCH7OPSW WAS VIRTUAL USER ACTIVE 00410000 BNO USERNOGO NO, GO RETURN TO DISPATCHER 00411000 NI VMRSTAT,X'FF'-VMEXWAIT MARK USER DISPATCHABLE 00412000 USERNOGO EQU * 00413000 MCHDISP DS 0H @V407510 00414000 MVC MCNPSW+PSWA(LNADDR),MCHBASE RESTORE MC NEW PSW @V407510 00415000 LCTL R14,R15,MCFXDLOG+MCCR14 RESTORE CR14 & CR15 @V407510 00416000 * REGS 14 & 15 @V407510 00417000 GOTO DMKDSPCH RETURN TO DISPATCHER @V407510 00418000 EJECT 00419000 *********************************************************************** 00420000 * COMMON ROUTINE TO TEST FOR AND/OR OBTAIN 00421000 * THE GLOBAL SYSTEM LOCK 00422000 *********************************************************************** 00423000 SPACE 1 00424000 GETLOCK DS 0H @V407510 00425000 TM APSTAT1,APUOPER AP MODE? @V4M0144 00426000 BZ CONVPROC NO, CONVERT PROCESSOR ADDR @V407510 00427000 TM MCHFLAG7,MCH7SUP LOCK ALREADY HELD? @V407510 00428000 BOR R5 YES, RETURN TO CALLER @V407510 00429000 TM MCHFLAG7,MCH7OPSW VIRTUAL USER ACTIVE @V4M0144 00430000 BNO CALLSTK1 NO, MUST GIVE UP CONTROL @V4M0144 00431000 LOCK OBTAIN,TYPE=SYS,SPIN=NO,SAVE TRY TO GET LOCK @VA09129 00432100 BNZ CALLSTK1 BRANCH IF LOCK NOT OBTAINED @V407510 00433000 LOCKOBT DS 0H @V407510 00434000 OI MCHFLAG7,MCH7SUP INDICATE LOCK HELD @V407510 00435000 CONVPROC DS 0H @V407510 00436000 LH R2,IPUADDR GET PROCESSOR ADDRESS @V407510 00437000 CVD R2,WORK CONVERTPROCESSOR ADDRESS @V407510 00438000 UNPK MSGPROC(LN2),WORKLO(LN2) CONVERT 2 DIGITS @V407510 00439000 OI MSGPROC+ONE,ZONE SET ZONE FOR LAST DIGIT @V407510 00440000 BR R5 RETURN TO CALLER @V407510 00441000 CALLSTK1 DS 0H @V407510 00442000 LR R6,R5 RESET RETURN REG FOR STACK RTN @V407510 00443000 SPACE 2 00447000 *********************************************************************** 00448000 * COMMON ROUTINE TO INITIALIZE CPEXBLOK FOR RETURN TO 00449000 * DMKMCH HOLDING SYSTEM LOCK 00450000 *********************************************************************** 00451000 SPACE 1 00452000 STACK DS 0H @V407510 00453000 L R1,MCHCPEX GET ADDRESS OF CPEXBLOK @V407510 00454000 USING CPEXBLOK,R1 ADDRESSABILITY FOR CPEXBLOK @V407510 00455000 STM R0,R15,CPEXREGS SAVE REGISTERS @V407510 00456000 OI APSTAT4,CPMCHSE SET MCH INDICATOR IN PSA @VA07615 00457100 AIF (NOT &AP).APCHK4 00457130 TM APSTAT1,APUOPER IS AP OPERATIONAL @VA07615 00457150 BO NOMIC1 YES @VA07615 00457200 .APCHK4 ANOP 00457220 OI APSTAT2,CPMCHLK SET FOR ECPS IN UP MODE @VA07615 00457250 AIF (NOT &AP).DSPRU4 00457280 NOMIC1 DS 0H @VA07615 00457300 TM MCHFLAG7,MCH7OPSW @VA07834 00457400 BNO SOFTSUP @VA07834 00457500 GOTO DMKDSPRU @VA07834 00457600 SPACE 3 00458000 ********************************************************************** 00459000 SOFTSUP EQU * 00460000 .DSPRU4 ANOP 00460100 MVC MCOPSW(8),MCOLDPW RESTORE MACHINE CHECK OLD 00461000 * PSW 00462000 LCTL C0,C13,MCFXDLOG+216 RESTORE CONTROL REGISTERS 00463000 AIF (NOT &FLOATPT).NOFP1 **AIF** 00464000 LD Y0,MCFXDLOG+120 RESTORE FLOATING-POINT REGS @V200820 00465000 LD Y2,MCFXDLOG+128 ... @V200820 00466000 LD Y4,MCFXDLOG+136 ... @V200820 00467000 LD Y6,MCFXDLOG+144 ... @V200820 00468000 .NOFP1 ANOP @V200820 00469000 RESETSUP DS 0H @V407510 00477000 CHARGE STOP STOP CHARGING SYSTEM @V4M0217 00478000 SPT XD8 SET CPU TIMER FROM LOGOUT @V4M0217 00479000 LM R0,R15,MCFXDLOG+152 RESTORE GENERAL REGS @V200820 00480000 LPSW MCOPSW RESTART WHATEVER WAS STOPPED@V200820 00481000 ********************************************************************** 00482000 SPACE 3 00483000 SPACE 00484000 DMKMCHSE DS 0H @V407510 00485000 L R9,AMCHAREA GET MCHAREA ADDRESS @V407510 00486000 L R1,MCHCPEX GET CPEXBLOK ADDRESS @V407510 00487000 LM R0,R15,CPEXREGS RESTORE REGISTERS @V407510 00488000 C R11,ASYSVM IS THIS SYSTEM VMBLOCK? @VA08054 00488100 BE NOLOCK YES - DONT LOCK IT @VA08054 00488200 LH R5,LPUADDR LOAD PROCESSOR ADDRESS @VA08054 00488300 CH R5,VMLOCK+2-VMBLOK(,R11) IS VMBLOK LOCKED @VA08054 00488400 BE NOLOCK YES - DONT LOCK IT @VA08054 00488500 LR R1,R11 PREPARE VMBLOCK FOR LOCK @VA08054 00488600 LOCK OBTAIN,TYPE=VMBLOK,SPIN=NO GET VMBLOK LOCK @VA08054 00488700 NOLOCK EQU * @VA08054 00488800 NI APSTAT4,X'FF'-CPMCHSE TURN OFF MCH INDICATOR @VA07615 00489100 TM APSTAT1,APUOPER RUNNING AS AP @VA07615 00489150 BO NOMIC2 YES @VA07615 00489200 NI APSTAT2,X'FF'-CPMCHLK RESET FOR ECPS - UP ONLY @VA07615 00489250 NOMIC2 DS 0H @VA07615 00489300 LR R5,R6 SET UP TO EXIT FROM GETLOCK @V407510 00490000 B LOCKOBT BRANCH TO END OF GETLOCK @V407510 00491000 SPACE 2 00492000 *********************************************************************** 00493000 * COMMON ROUTINE TO USE NORMAL SYSTEM FACILITIES @V407510 00494000 * TO COMMUNICATE WITH THE PRIMARY SYSTEM OPERATOR @V407510 00495000 *********************************************************************** 00496000 SPACE 1 00497000 OPMSG DS 0H @V407510 00498000 TM MCHFLAG7,MCH7SUP CHECK FOR SYSTEM LOCK @VA07775 00498100 BO MCHMSGW YES,BYPASS GETTING CPEXBLOK AGAIN@VA07775 00498200 TM MCHFLAG7,MCH7OPSW VIRTUAL USER ACTIVE? @V4M0144 00499000 BNO CALLSTK NO, STACK CPEXBLOK @V4M0144 00500000 BAL R5,GETLOCK OBTAIN SYSTEM LOCK @V407510 00501000 B MCHMSGW PUT MESSAGE OUT @V407510 00502000 CALLSTK DS 0H @V407510 00503000 BAL R6,STACK STACK CPEXBLOK @V407510 00504000 MCHMSGW DS 0H @V407510 00505000 LTR R0,R0 IS THE MESSAGE LENGTH ZERO 00506000 BZ 0(R7) YES, NO MESSAGE FOR OPERATOR @V407510 00507000 LA R0,MSGLN GET LENGTH OF FULL AREA @V407510 00508000 LA R1,MCHMSG GET ADDRESS OF MESSAGE BUFFER 00509000 CALL DMKQCNWT,PARM=OPERATOR+NORET+ALARM,AFFINITY @V407510 00510000 MVI MSGBUF,BLANK CLEAR BUFFER @V407510 00511000 MVC MSGBUF+ONE(L'MSGBUF-1),MSGBUF CLEAR BUFFER @V407510 00512000 MVC MSGCDE+4(13),VMSGTA RESTORE THE MESSAGE IN THE BUFFER 00513000 BR R7 RETURN TO CALLER @V407510 00514000 SPACE 00515000 STKOP DS 0H STACK BLOCK FOR OTHER PROCESSOR @V407510 00520000 AIF (NOT &AP).APCHK5 00520900 TM APSTAT1,APUOPER AP MODE? @V407510 00521000 BZR R6 NO, RETURN @V407510 00522000 LA R0,CPEXSIZE SIZE OF CPEXBLOK @V407510 00523000 CALL DMKFREE GET STORAGE @V407510 00524000 USING CPEXBLOK,R1 ADDRESSABILITY TO CPEXBLOK @V407510 00525000 LA R15,STKRETN ADDR OF ROUTINE TO GET CONTROL @V407510 00526000 ST R15,CPEXADD SET UP RETURN ADDRESS @V407510 00527000 STM R0,R15,CPEXREGS SAVE REGISTERS @V407510 00528000 CALL DMKSTKOP STACK FOR OTHER PROCESSOR @V407510 00529000 DROP R1 RELEASE REG @V407510 00530000 .APCHK5 ANOP 00530100 BR R6 RETURN TO CALLER @V407510 00531000 AIF (NOT &AP).APCHK6 00531900 STKRETN DS 0H @V407510 00532000 STCTL R14,R14,CR14ENB SAVE CONTROL REG 14 @V407510 00548000 NI CR14ENB,OFF-RECOVRPT DISABLE IN CR14 @V407510 00549000 LCTL R14,R14,CR14ENB RESTORE CR14 @V407510 00550000 .APCHK6 ANOP 00550100 MCEXIT DS 0H @V407510 00551000 GOTO DMKDSPCH RETURN TO DISPATCHER @V407510 00552000 EJECT 00553000 ************************************************************* 00554000 MCHSPF EQU * 00555000 MVC MCHFSAR(4),FSA SAVE THE FAILING STORAGE ADDRESS 00556000 TM STOERR,PEBIT IS UNCORRECTED PROTECTION ERROR 00557000 * INDICATED ? 00558000 BO MCHFSA YES, GO CHECK FAILING STORAGE ADDR. 00559000 * VALIDITY FLAG 00560000 MCHMSG2 EQU * 00561000 LA R3,MSG2 SETUP THE SUPERVISOR DAMAGE 00562000 * MESSAGE 00563000 TM MCHFLAG7,MCH7OPSW WAS THE VIRTUAL USER ACTIVE 00564000 BO MCHNXT YES, MAKE MORE CHECKS @V407510 00565000 OI MCHFLAG7,MCH7SYST INDICATE SYSTEM TERMINATION @V407510 00566000 B OPCOM TERMINATE SYSTEM @V407510 00567000 MCHNXT DS 0H @V407510 00568000 TM STOERR,SEBIT+PEBIT IS SPF/STORAGE ERROR INDICATED ? 00569000 BNZ MCHFSA YES, GO CHECK FAILING STORAGE 00570000 * ADDRESS VALIDITY FLAG 00571000 OI MCHFLAG1,MCH1PROC INDICATE PROCESSOR DAMAGE 00572000 MCHCPU EQU * 00573000 TM MCHFLAG7,MCH7OPSW WAS THE VIRTUAL USER ACTIVE ? 00574000 BZ MCHMSG2 NO, GO PUT SYSTEM IN WAIT STATE 00575000 MCHSW EQU * 00576000 OI MCHFLAG7,MCH7VRTM SET TERMINATION FLAG FOR USER 00577000 B VIRTERM GO TERMINATE THE USER 00578000 MCHFSA EQU * 00579000 TM VALID2,FABIT IS THE FAILING STORAGE ADDRESS 00580000 * VALID ? 00581000 BO MCHBACK YES, GO CHECK BACKUP FLAG 00582000 OI MCHFLAG5,MCH5IFSA INDICATE THE FAILING STORAGE 00583000 * ADDRESS IS INVALID 00584000 B MCHCPU GO SEE IF USER IS ACTIVE 00585000 MCHBACK EQU * 00586000 ********************************************************************** 00586100 * IF THIS IS A 4331OR 4341 PROCESSOR, THEN BIT 14(BVBIT) IS * 00586200 * STORED AS A ZERO AND THEREFORE HAS NO MEANING. DO NOT TEST IT. * 00586300 ********************************************************************** 00586400 CLI MCHMODEL,MOD4331 MODEL 4331 OR 4341 @V60A6B6 00586500 BE CKBIT16 YES BIT 14 IS QUESTIONABLE. @V60A6B6 00586600 TM TENSE,BVBIT IS THE BACKUP FLAG ON ? 00587000 BZ MCHCPU NO, GO SEE IF USER IS ACTIVE 00588000 CKBIT16 EQU * @V60A6B6 00588100 NI MCHFSAR+3,X'F0' PUT THE FAILING STORAGE ADDRESS 00589000 * ON A QUADWORD BOUNDARY 00590000 TM STOERR,SEBIT IS STORAGE ERROR INDICATED ? 00591000 BZ SPFTEST NO, GO SETUP FOR SPF ERROR 00592000 SPACE 2 00593000 ********************************************************************** 00594000 SPACE 00595000 SPACE 00596000 *********************************************************************** 00597000 SPACE 00598000 REFRESH EQU * 00599000 OI MCHFLAG1,MCH1MAIN INDICATE MAIN STORAGE DAMAGE 00600000 OI MCHFLAG3,MCH3DATA INDICATE DATA HAS BEEN DAMAGED 00601000 TM MCOPSW,TRANMODE WAS THE CPU IN RELOCATE MODE ? 00602000 BNO MCHSW NO, GO TERMINATE VIRTUAL USER 00603000 BAL R5,GETLOCK OBTAIN SYSTEM LOCK @V407510 00604000 L R2,MCHFSAR GET THE FAILING STORAGE ADDRESS 00605000 * THAT'S ON A 4K BOUNDARY 00606000 SRL R2,12 PUT THE FAILING STORAGE ADDRESS 00607000 SLL R2,12 ON A 4K BOUNDARY 00608000 LR R3,R2 SAVE THE FAILING STORAGE ADDRESS 00609000 LA R3,2048(R3) ADD 2K TO GET THE NEXT KEY 00610000 SR R1,R1 CLEAR REGISTER 1 00611000 ISK R1,R2 GET THE FIRST KEY FROM STORAGE 00612000 SLL R1,8 MAKE ROOM FOR NEXT KEY 00613000 ISK R1,R3 GET SECOND KEY FROM STORAGE 00614000 N R1,=A(X'202') ARE THE CHANGE BITS ON IN KEYS 00615000 BNZ STGTEST YES, GO SET CHANGE INDICATOR 00616000 BAL R14,CORTBLR GO GET THE CORTABLE ADDRESS 00617000 L R3,CORSWPNT GET THE SWPTABLE ENTRY ADDRESS 00618000 USING SWPFLAG,R3 SETUP ADDRESSABILITY FOR SWPTABLE 00619000 TM SWPFLAG,SWPCHG1+SWPCHG2 ARE CHANGE FLAGS ON IN TABLE 00620000 BZ STGTEST1 NO, REFRESH IS POSSIBLE 00621000 DROP R3 DROP BASE REGISTER FOR SWPTABLE 00622000 STGTEST EQU * 00623000 OI MCHPDAR6,MCHP6CBA INDICATE THE CHANGE BIT IS ON 00624000 B STORA GO TO STORAGE EXERCISE ROUTINE @V5088AB 00624100 STGTEST1 EQU * 00625000 CLI MCHMODEL,MOD3031 IS THIS A 3031/3032/3033 @V5088AB 00625100 * PROCESSOR? 00625200 BE MCHSOLID IF SO, TREAT MULTI-BIT ECC ERRORS@V5088AB 00625300 * AS SOLID ERRORS 00625400 STORA EQU * @V5088AB 00625500 BAL R3,MCHSTORA GO TO THE STORAGE EXERCISE RTN. 00626000 OI MCHFLAG3,MCH3INTE INDICATE INTERMITTENT ERROR 00627000 OI MCHPDAR1,MCHP1IDE INDICATE INTERMITTENT STORAGE 00628000 * ERROR 00629000 B VRTSPF GO CHECK FOR V=R USER 00630000 ******************************************************************** 00631000 * THE STORAGE TEST RESULTED IN A MC INTERRUPT,IF THE 00632000 * FAILURE IS IN THE SAME FRAME THEN THE DEFECTIVE FRAME WILL 00633000 * BE REMOVED FROM SYSTEM USE 00634000 ********************************************************************* 00635000 SPACE 00636000 MCHSTORA EQU * 00637000 STCTL R14,R14,SAVECR14 SAVE CONTENT OF CONTROL REGISTER 15 00638000 CLI MCHMODEL,MODEL155 IS THIS A MODEL 155 00639000 BE MCDIABUF YES, GO ENABLE ECC LOGIC 00640000 CLI MCHMODEL,MODEL165 IS THIS A MODEL 165 00641000 BNE MCHSKIP NO, GO SETUP EXERCISE HANDLER 00642000 DC X'8300' ENABLE THE ECC LOGIC 00643000 DC S(ECCENA65) FOR THE MODEL 165 00644000 B MCENCR14 GO ENABLE THE RECOVERY REPORT 00645000 * IN CONTROL REGISTER 14 00646000 MCDIABUF EQU * 00647000 DC X'8300' ENABLE THE ECC LOGIC 00648000 DC S(ECCENA55) FOR THE MODEL 155 00649000 MCENCR14 EQU * 00650000 LA R2,MCHSKIP GET THE ADDRESS OF THE EXERCISE 00651000 * HANDLER THAT BLEED OFF INTERRUPT 00652000 ST R2,MCNPSW+4 CHANGE MACHINE CHECK NEW PSW 00653000 * TO THE ADDRESS OF THE HANDLER 00654000 OI MCNPSW+1,MCHEK ENABLE MACHINE CHECK NEW FOR 00655000 * MACHINE CHECKS 00656000 OI SAVECR14,RECOVRPT ENABLE THE RECOVERY REPORT IN 00657000 * CONTROL REGISTER 14 00658000 LCTL R14,R14,SAVECR14 RESTORE CONTROL REGISTER 14 00659000 MCHSKIP EQU * 00660000 LA R2,HANDLER GET THE ADDRESS OF THE EXERCISE 00661000 * HANDLER TO INTERCEPT MACHINE CHECKS 00662000 ST R2,MCNPSW+4 CHANGE MACHINE CHECK NEW PSW 00663000 LA R6,X'FF' SETUP COUNTER FOR EXERCISE ROUTINE 00664000 ******************************************************************* 00664100 * THE FOLLOWING FEW INSTRUCTIONS VALIDATES STORAGES USING THE * 00664200 * MVCL COMMAND. REG 2 CONTAINS THE ADDRESS OF THE AREA TO BE * 00664300 * TESTED ROUNDED DOWN TO A 2K BOUNDARY. REG 3 CONTAINS THE LENGTH* 00664400 * OF THE MOVE(2K). REG 4 CONTAINS MOVE FROM ADDR(IN THIS CASE 0) * 00664500 * REG 5 CONTAINS PAD CHAR AND LENGTH OF 0. STOREXE1 AND STOREXE0* 00664600 * EXERCISE THE STORAGE IN QUESTION TO FORCE MACHINE CHECK IF A * 00664700 * STORAGE PROBLEM EXISTS. * 00664800 ******************************************************************* 00664900 STM R2,R3,MCREGS SAVE USER @VA11098 00665010 L R2,MCHFSAR GET ADDR OF TEST AREA @V60A6B6 00665100 L R4,MCHMASK SET UP MASK FOR ROUNDING TO 2K @V60A6B6 00665200 NR R2,R4 ROUNDS DOWN TO 2K BOUNDARY @V60A6B6 00665300 LH R3,TWOK LOAD 2K LENGTH @V60A6B6 00665400 SR R4,R4 SET REG 4 AND 5 FOR MVCL @V60A6B6 00665500 SR R5,R5 .... @V60A6B6 00665600 MVCL R2,R4 NOW VALIDATE @V60A6B6 00666000 LM R2,R3,MCREGS RESTORE USER @VA11098 00667010 STOREXE1 EQU * 00668000 LM R4,R5,FFS PUT THE ONES PATTERN IN THE REGISTERS 00669000 STM R4,R5,0(R2) STORE INTO THE FAILING STORAGE @V60A6B6 00670000 STM R4,R5,8(R2) LOCATION ONES @V60A6B6 00671000 LM R4,R5,0(R2) FETCH FROM THE FAILING STORAGE @V60A6B6 00672000 LM R4,R5,8(R2) LOCATION ONES @V60A6B6 00673000 STOREXE0 EQU * 00674000 LM R4,R5,ZEROES PUT THE ZEROS PATTERN IN THE REGISTERS 00675000 STM R4,R5,0(R2) STORE INTO THE FAILING STORAGE @V60A6B6 00676000 STM R4,R5,8(R2) LOCATION ZEROS @V60A6B6 00677000 LM R4,R5,0(R2) FETCH FROM THE FAILING STORAGE @V60A6B6 00678000 LM R4,R5,8(R2) LOCATION ZEROS @V60A6B6 00679000 SWITCLR EQU * 00680000 MVI SWITCH,X'00' CLEAR SWITCH WHEN EXERCISE IS FINISHED 00681000 BCT R6,STOREXE1 GO START EXERCISE SECTION AGAIN 00682000 CLEANUP EQU * 00683000 NI SAVECR14,X'FF'-RECOVRPT MASK OFF THE RECOVERY REPORT 00684000 * IN CONTROL REGISTER 14 00685000 LCTL R14,R14,SAVECR14 RESTORE CONTROL REGISTER 14 00686000 CLI MCHMODEL,MODEL155 IS THIS A MODEL 155 00687000 BE MCHECC YES, GO CHECK THE MODE FLAG 00688000 CLI MCHMODEL,MODEL165 IS THIS A MODEL 165 00689000 BNE MCREPSW NO, GO RESTORE THE MACHINE CHECK 00690000 * NEW PSW 00691000 TM APSTAT4,RECMODE SYSTEM ENABLED FOR ECC @VA07615 00692100 BO MCREPSW YES, RESTORE MACHINE CHK NEW PSW @V407510 00693000 DC X'8300' DISABLE THE ECC LOGIC 00694000 DC S(ECCDIS65) ON THE MODEL 165 00695000 B MCREPSW GO RESTORE MACHINE CHECK NEW PSW 00696000 MCHECC EQU * 00697000 TM APSTAT4,RECMODE SYSTEM ENABLED FOR ECC @VA07615 00698100 BO MCREPSW YES, RESTORE MACHINE CHK NEW PSW @V407510 00699000 DC X'8300' DISABLE THE ECC LOGIC 00700000 DC S(ECCDIS55) ON THE MODEL 155 00701000 MCREPSW EQU * 00702000 MVC MCNPSW(8),STGSVE RESTORE MACHINE CHECK 00703000 * NEW PSW WITH SECONDARY HANDLER 00704000 BR R3 RETURN TO INLINE CODE 00705000 ********************************************************************** 00706000 ********************************************************************** 00707000 SPACE 2 00708000 ********************************************************************** 00709000 ********************************************************************** 00710000 HANDLER EQU * 00711000 TM STOERR,SEBIT IS THIS A MULT-BIT STORAGE ERROR 00712000 BO MCHSOLID YES, GO TO CLEANUP ROUTINE AND 00713000 * INDICATE SOLID ERROR 00714000 *********************************************************************** 00714100 * THE 4331 OR 4341 PROCESSORS STORE BIT 17 AS A ZERO AND THERE * 00714200 * FORE IT SHOULD NOT BE CHECKED SINCE IT DOES NOT HAVE ANY VALIDITY.* 00714300 *********************************************************************** 00714400 CLI MCHMODEL,MOD4331 MODEL 4331 OR 4341 ? @V60A6B6 00714500 BE MCHSOLID YES BIT 17 IS QUESTIONABLE. @V60A6B6 00714600 TM STOERR,SCBIT IS THIS A SOFT ERROR ? 00715000 BZ MCHSOLID NO, GO TO CLEANUP ROUTIE AND 00716000 * INDICATE SOLID ERROR 00717000 LTR R5,R5 IS THE ZERO PATTERN IN REGISTER 5 00718000 BZ TESTSWIT YES, GO CHECK TEST SWITCH 00719000 OI SWITCH,X'80' THE TEST SWITCH IS SET WHEN EXERCISE 00720000 * EXERCISING THE ONES PATTERN 00721000 B STOREXE0 GO EXERCISE THE ZERO PATTERN 00722000 TESTSWIT EQU * 00723000 TM SWITCH,X'80' IS THE TEST SWITCH SET ? 00724000 BZ SWITCLR NO, GO CLEAR TEST SWITCH 00725000 MCHSOLID EQU * 00726000 BAL R3,CLEANUP GO RESTORE THE STATUS OF THE SYSTEM 00727000 OI MCHFLAG3,MCH3SOLD INDICATE SOLID ERROR IN 00728000 * THE DAMAGE ASSESSMENT AREA 00729000 OI MCHPDAR1,MCHP1SDE INDICATE SOLID STORAGE ERROR 00730000 VRTSPF EQU * 00731000 ICM R4,15,AVMREAL GET THE VIRTUAL V=R USER ADDRESS 00732000 BZ MCHCORT IF ZERO, GO GET CORTABLE ADDRESS 00733000 CR R4,R11 IS THE VMBLOK THE SAME AS RUNUSER 00734000 BNE MCHCORT NO, GO GET THE CORTABLE ADDRESS 00735000 OI MCHFLAG7,MCH7VEQR INDICATE TERMINATION OF V=R USER 00736000 TM MCHFLAG3,MCH3SOLD IS THIS A SOLID ERROR ? 00737000 BZ VIRTERM NO, GO TERMINATE VIRTUAL=REAL USER 00738000 MVC AVMREAL(4),FFS SET THE INDICATOR TO REMOVE THE 00739000 * VIRTUAL=REAL PAGE 00740000 L R14,PREFIXB GET PREFIX ADDR OF OTHER PROC @V4M0132 00741000 MVC AVMREAL-PSA(,R14),FFS SET AVMREAL IN OTHER PSA @V4M0132 00742000 B VIRTERM GO TERMINATE THE V=R USER 00743000 MCHCORT EQU * 00744000 BAL R14,CORTBLR GO GET THE CORTABLE ADDRESS 00745000 USING PAGCORE,R6 SETUP ADDRESSABILITY FOR PAGE TABLE 00746000 * ENTRY 00747000 L R6,CORPGPNT GET THE PAGE TABLE ENTRY ADDRESS 00748000 MVI PAGCORE,X'00' CLEAR THE REAL STORAGE ADDRESS 00749000 NI PAGCORE+1,X'0F' 00750000 OI PAGCORE+1,PAGINVAL INVALIDATE THE PAGE TABLE ENTRY 00751000 SR R6,R6 CLEAR THE PAGE TABLE ENTRY POINTER 00752000 ST R6,CORPGPNT CLEAR PTE IN CORTABLE 00753000 DROP R6 DROP BASE FOR PTE 00754000 OI VMESTAT,VMINVPAG INVALIDATE SHADOW PAGE TABLE 00755000 SPACE 00756000 TM VMMCR6,VMMVTMR IS TIMER ASSIST BEING USED ? @V3M5014 00757000 BZ UNCHAIN NO EXTRA CHECKS NECESSARY... @V3M5014 00758000 ICM R15,B'0111',VMMADDR VM ASSIST ON FOR USER ? @V3M5014 00759000 BZ UNCHAIN NO TIMER ASSIST IF NO VM ASSIST @V3M5014 00760000 USING MICBLOK,R15 ADDRESSABILITY TO POINTER LIST @V3M5014 00761000 LCTL C1,C1,VMSEG GET CORRECT SEGMENT TABLE ORIGIN @V3M5014 00762000 LRA R1,TIMER-PSA PAGE ZERO CURRENTLY INVALID ? @V3M5014 00763000 BZ STMICTMR NO, TIMER ASSIST POINTER O.K. @V3M5014 00764000 LA R1,VMTIMER POINT TIMER ASSIST HERE... @V3M5014 00765000 STMICTMR ST R1,MICVTMR FOR UPDATING VIRTUAL TIMER VALUE @V3M5014 00766000 DROP R15 @V3M5014 00767000 SPACE 00768000 UNCHAIN DS 0H 00769000 TM MCHFLAG3,MCH3SOLD IS THIS A SOLID ERROR ? 00770000 BZ REFPAG NO, GO PURGE AFFECTED PAGE 00771000 MVI CORFLAG,CORDISA DISABLE THE DEFECTIVE FRAME 00772000 MVC MSGCDE(3),MSG13 SETUP MESSAGE NUMBER 00773000 MVC MSGBUF(28),MSG13B MOVE THE MESSAGE INTO THE BUFFER 00774000 LA R1,MCHMSG GET THE ADDRESS OF THE MESSAGE 00775000 LA R0,56 GET THE LENGTH OF THE MESSAGE 00776000 CALL DMKQCNWT,PARM=ALARM+OPERATOR+NORET,AFFINITY @V407510 00777000 TM MCHPDAR1,MCHP1SKE IS THIS A SOLID SPF ERROR ? 00778000 BO MCHSW YES, GO TERMINATE THE VIRTUAL USER 00779000 B MCHCHANG GO CHECK THE CHANGE FLAG 00780000 REFPAG EQU * 00781000 OI MCHPDAR7,MCH7PURG SET PURGE PAGE INTERFACE'S FLAG 00782000 LR R7,R10 GET THE ADDRESS OF THE CORTABLE 00783000 CALL DMKPTRFT,AFFINITY @V407510 00784000 NI MCHPDAR7,X'FF'-MCH7PURG CLEAR PURGE INTERFACE'S FLAG 00785000 MCHCHANG EQU * 00786000 TM MCHPDAR6,MCHP6CBA IS THE CHANGE FLAG ACTIVE ? 00787000 BO MCHSW YES, GO TERMINATE THE VIRTUAL USER 00788000 B SOFTREC GO BUILD ERROR RECORD 00789000 ********************************************************************* 00790000 * THIS ROUTINE FINDS THE CORTABLE ASSOCIATED WITH THE FAILING 00791000 * STORAGE ADDRESS AND DETERMINES IF THE LOCKBIT IS ON FOR 00792000 * THE PAGE 00793000 ********************************************************************* 00794000 SPACE 00795000 CORTBLR EQU * 00796000 SR R10,R10 CLEAR REGISTER 10 00797000 ICM R10,C3,MCHFSAR+1 GET THE FAILING STORAGE 00798000 * ADDRESS 00799000 SRL R10,4 CLEAR THE LOW ORDER BITS 00800000 SLL R10,4 SETUP ADDRESS FOR CORETABLE 00801000 A R10,ACORETBL ADD CORTABLE ORIGN POINTER TO ENTRY 00802000 TM MCHPDAR1,MCHP1IKE IS THIS AN INTERMITTENT SPF ERROR 00803000 BC 1,0(R14) YES, RETURN TO IN LINE CODE 00804000 TM CORFLAG,CORIOLCK IS THE PAGE LOCKED IN STORAGE ? 00805000 BO MCHSW YES, TERMINATE THE VIRTUAL USER 00806000 BR R14 NO,RETURN(R10=ADDR. OF CORTABLE) 00807000 ********************************************************************* 00808000 EJECT 00809000 ********************************************************************** 00810000 * SPF FAILURE ANALYSIS ROUTINE 00811000 ********************************************************************** 00812000 SPACE 00813000 SPFTEST EQU * 00814000 SR R8,R8 CLEAR REGISTER 8 00815000 MR R4,R8 CLEAR TWO REGISTERS 00816000 OI MCHFLAG3,MCH3PROT SET THE INDICATOR FOR PROTECT 00817000 L R3,MCHFSAR GET THE FAILING STORAGE ADDRESS 00821000 LA R7,SPFTERM GET THE ADDRESS OF HANDLER 00822000 ST R7,MCNPSW+4 CHANGE MACHINE CHECK NEW PSW 00823000 * TO SPF SECONDARY HANDLER 00824000 TM MCHFLAG7,MCH7OPSW VIRTUAL MACHINE ACTIVE ? @VA08064 00824100 BO SIG0014U YES, CONTINUE PROCESSING @VA08064 00824400 SIGNAL STOP STOP THE OTHER PROCESSOR @V4M0144 00825000 SIG0014U DS 0H @VA08064 00825500 LA R7,5 SETUP THE COUNT FOR THE EXERCISE 00826000 LA R6,16 SETUP THE COUNT FOR THE NUMBER OF KEYS 00827000 SPFEXEC EQU * 00828000 SSK R4,R3 EXECERCISE THE 00829000 ISK R4,R3 FAILING STORAGE LOCATION BY DURING 00830000 * STORES AND FETCHS FROM THE KEY 00831000 * LOCATION IN STORAGE 00832000 BCT R7,SPFEXEC GO EXERCISE THE KEY FIVE TIMES 00833000 LA R4,16(R4) GET THE NEXT KEY VALUE 00834000 LR R5,R4 SAVE THE NEW KEY 00835000 LA R7,5 RE-INITIALIZE THE COUNT 00836000 BCT R6,SPFEXEC GO EXERCISE THE NEW KEY 00837000 SPFMSG EQU * 00838000 MVC MCNPSW(8),STGSVE RESTORE MACHINE CHECK NEW 00839000 * PSW TO THE SECONDARY HANDLER 00840000 OI MCHFLAG3,MCH3INTE INDICATE INTERMITTENT ERROR 00841000 * IN THE DAMAGE ASSESSMENT AREA 00842000 OI MCHPDAR1,MCHP1IKE INDICATE INTERMITTENT SPF ERROR 00843000 TM MCHFLAG7,MCH7OPSW WAS THE VIRTUAL USER ACTIVE ? 00844000 BO SPFCORT YES, CALL CORTBLR @V407510 00845000 SIGNAL START RESTART OTHER PROCESSOR @V407510 00846000 B CPUSPF CONTINUE PROCESSING @V407510 00847000 SPFCORT DS 0H @V407510 00848000 BAL R14,CORTBLR GO GET THE CORTABLE ADDRESS 00849000 ICM R7,C7,CORSWPNT+1 GET SWAPTABLE ENTRY FROM CORTABLE 00850000 USING SWPFLAG,R7 SETUP ADDRESSABILITY FOR SWPTABLE 00851000 IC R8,SWPKEY1 GET THE KEY FOR THE EVEN HALF PAGE 00852000 TM FSA+3,X'08' IS THE HALF PAGE EVEN OR ODD ? 00853000 BZ CPUSPF YES, THE HALF PAGE IS EVEN 00854000 IC R8,SWPKEY2 GET THE KEY FOR THE ODD HALF PAGE 00855000 CPUSPF EQU * 00856000 SRL R3,11 PUT THE FAILING STORAGE ADDRESS 00857000 SLL R3,11 ON A 2K BOUNDARY 00858000 O R8,F6 TURN ON THE CHANGE AND REFERENCE 00859000 * BITS 00860000 SSK R8,R3 RESTORE THE PROPER KEY TO THE 00861000 * FAILING STORAGE LOCATION 00862000 L R8,MCHREC RELOAD MCH RECORD PTR @V4M0144 00863000 OI MCHFLAG0,MCH0SFTR INDICATE SOFTWARE RECOVERY 00864000 OI MCHFLAG4,MCH4REPA INDICATE REPAIR IN THE DAMAGE 00865000 * ASSESSMENT AREA 00866000 SR R0,R0 SEND NO MESSAGE TO THE OPERATOR 00867000 B OPMSG2 GO TO OPERATOR MESSAGE ROUTINE 00868000 SPFTERM EQU * 00869000 TM MCHFLAG7,MCH7OPSW IS VIRTUAL MACHINE ACTIVE ? @VA08064 00869100 BO SIG0016U YES, CONTINUE PROCESSING @VA08064 00869400 SIGNAL START RESTART THE OTHER PROCESSOR @V4M0144 00870000 SIG0016U DS 0H @VA08064 00870500 L R8,MCHREC RELOAD MCH RECORD PTR @V4M0144 00871000 MVC MCNPSW(8),STGSVE RESTORE MACHINE CHECK NEW PSW 00872000 * TO THE SECONDARY HANDLER 00873000 LPSW SPFDIE ENABLE FOR HARD MACHINE CHECKS 00874000 SPFTERMA EQU * 00875000 OI MCHFLAG3,MCH3SOLD INDICATE SOLID ERROR 00876000 * IN DAMAGE ASSESSMENT AREA 00877000 OI MCHPDAR1,MCHP1SKE INDICATE SOLID SPF ERROR 00878000 TM MCHFLAG7,MCH7OPSW WAS THE VIRTUAL USER ACTIVE ? 00879000 BZ MCHCPU NO, PUT SYSTEM DOWN @V407510 00880000 BAL R5,GETLOCK OBTAIN SYSTEM LOCK @V407510 00881000 B VRTSPF MAKE PAGE UNAVAILABLE @V407510 00882000 EJECT 00883000 SPACE 00884000 SPACE 00885000 *********************************************************************** 00886000 * VIRTUAL MACHINE TERMINATION ROUTINE 00887000 *********************************************************************** 00888000 SPACE 00889000 VIRTERM EQU * 00890000 BAL R5,GETLOCK OBTAIN SYSTEM LOCK @V4M0144 00891000 OI MCHFLAG0,MCH0USAD SET THE USER ABORTED FLAG 00892000 BAL R4,FUMAT GO FORMAT THE MACHINE CHECK RECORD 00893000 ******************************************************************** 00894000 NOURMSG EQU * 00895000 MVC MSGCDE(3),VMS19 SETUP MESSAGE ID IN BUFFER 00896000 MVC MSGCDE+4(35),VMSGTA MOVE MESSAGE INTO BUFFER 00897000 LA R0,MSGLN GET LENGTH OF FULL AREA @V407510 00898000 LA R1,MCHMSG GET THE ADDRESS OF THE MESSAGE TEXTS 00899000 CALL DMKQCNWT,PARM=NORET,AFFINITY @V407510 00900000 MVI MSGBUF,BLANK CLEAR BUFFER @V407510 00901000 MVC MSGBUF+ONE(L'MSGBUF-1),MSGBUF CLEAR BUFFER @V407510 00902000 MVC MSGCDE(3),MSG8 SETUP THE MESSAGE ID IN THE BUFFER 00903000 MVC MSG8A+7(8),VMUSER MOVE THE USERID INTO BUFFER 00904000 MVC MSGBUF(28),MSG8A MOVE MESSAGE TEXTS INTO BUFFER 00905000 LA R0,MSGLN GET LENGTH OF FULL AREA @V407510 00906000 LA R1,MCHMSG GET THE MESSAGE BUFFER ADDRESS 00907000 OI MCHPDAR7,MCH7EXIT SET EXIT INTERFACE'S FLAG 00908000 CALL DMKQCNWT,PARM=OPERATOR+ALARM,AFFINITY @V407510 00909000 MVI MSGBUF,BLANK CLEAR BUFFER @V407510 00910000 MVC MSGBUF+ONE(L'MSGBUF-1),MSGBUF CLEAR BUFFER @V407510 00911000 NI MCHPDAR7,X'FF'-MCH7EXIT CLEAR EXIT INTERFACE'S FLAG 00912000 TM MCHFLAG7,MCH7VEQR IS TERMINATION SET FOR V=R USER 00913000 BZ MCHRESET NO, GO RESET VIRTUAL USER 00914000 OI VMOSTAT,VMKILL DMKDSPCH WILL LOGOFF USER @V200820 00915000 OI VMSVSTAT,VMLGFORC INDICATE HE WAS FORCED OFF @VA13026 00915500 B MCHDISP GO RETURN TO THE DISPATCHER 00916000 MCHRESET EQU * 00917000 OI MCHPDAR7,MCH7RSRE SET THE RESET AND RELEASE 00918000 * INTERFACE'S FLAG 00919000 SPACE 00920000 CALL DMKCFPRR,AFFINITY @V407510 00921000 SR R2,R2 IND CLEAR OPTION 00922000 CALL DMKPGSPO,AFFINITY @V407510 00923000 NI VMRSTAT,X'FF'-VMEXWAIT MARK USER DISPATCHABLE 00924000 CALL DMKCFMBK,AFFINITY @V407510 00925000 NI MCHPDAR7,X'FF'-MCH7RSRE CLEAR THE RESET AND RELEASE 00926000 * INTERFACE'S FLAG 00927000 B MCHDISP GO TO DISPATCHER @V407510 00928000 *********************************************************************** 00929000 * FORMAT THE MACHINE CHECK RECORD 00930000 *********************************************************************** 00931000 SPACE 00932000 FUMAT EQU * 00933000 BAL R5,GETLOCK OBTAIN SYSTEM LOCK @V4M0144 00934000 CLI MCHMODEL,MODEL145 IS THIS A MODEL 145/148 @V386298 00935000 BE MCHFORT YES, GO FORMAT THE RECORD 00936000 CLI MCHMODEL,MODEL135 IS THIS A MODEL 135/138 @V386298 00937000 BE MCHFORT YES, GO FORMAT THE RECORD 00938000 TM MCIC,DGBIT IS THE DEGRADATION INDICATOR ON ? 00939000 BZ MCHFORT NO, GO FORMAT THE RECORD 00940000 OI MCHFLAG1,MCH1BUFF SET THE INDICATOR FOR BUFFER 00941000 * ERROR 00942000 OI MCHFLAG4,MCH4BURE INDICATE BUFFER RECONFIGURATION 00943000 MVC MSGCDE(3),MSG16 MOVE MESSAGE ID INTO BUFFER 00944000 MVC MSGBUF(MSG16L),MSG16B MOVE TEXT INTO BUFFER @V4M0200 00945000 LA R0,MSGLN GET LENGTH OF FULL AREA @V407510 00946000 LA R1,MCHMSG GET THE ADDRESS OF THE BUFFER 00947000 * ERROR MESSAGE 00948000 CALL DMKQCNWT,PARM=OPERATOR+ALARM+NORET,AFFINITY @V407510 00949000 MVI MSGBUF,BLANK CLEAR BUFFER @V407510 00950000 MVC MSGBUF+ONE(L'MSGBUF-1),MSGBUF CLEAR BUFFER @V407510 00951000 MCHFORT EQU * 00952000 XC MCREC(40),MCREC CLEAR MACHINE CHECK RECORD HEADER 00953000 MVC MCRECTYP(8),HEADERFD GET THE HEADER INFORMATION 00954000 MVC MCCPUID(8),CPUID MOVE CPUID INTO RECORD 00955000 MVC MCPROGID(8),VMUSER MOVE USER NAME INTO RECORD 00956000 TM MCHFLAG7,MCH7OPSW WAS VIRTUAL USER ACTIVE ? 00957000 BO MCHRECOD YES, GO SETUP RECORD LENGTH 00958000 MVC MCPROGID(8),CPEYED MOVE CP/370 NAME INTO RECORD 00959000 MCHRECOD EQU * 00960000 LR R6,R8 GET THE ADDRESS OF THE MACHINE @V4M0196 00961000 * CHECK RECORD 00962000 LH R7,MCFXDLOG+6 GET THE LENGTH OF THE EXTENDED LOGOUT 00963000 LA R7,MCHFIX(R7) ADD THE LENGTH OF THE FIXED 00964000 * LOGOUT AND RECORD HEADER 00965000 LA R7,MCHLEN1(R7) ADD THE LENGTH OF THE DAMAGE 00966000 * ASSESSMENT AREA 00967000 A R7,F8 PUT LENGTH ON A DOUBLEWORD BOUNDARY 00968000 SRL R7,3 DIVIDE BY 8 00969000 OI MCHPDAR7,MCH7IOEM SET THE INTERFACE'S FLAG FOR 00970000 * THE RECORDER 00971000 SR R0,R0 CLEAR RETURN CODE REGISTER @VA03358 00972000 CALL DMKIOEMC,AFFINITY @V407510 00973000 NI MCHPDAR7,X'FF'-MCH7IOEM CLEAR THE INTERFACE'S 00974000 * FLAG FOR THE RECORDER 00975000 * RECORD 00976000 LTR R0,R0 WAS THE RECORDING SUCCESSFUL ? 00977000 BC 8,0(R4) YES, GO RETURN TO IN LINE CODE 00978000 LA R0,MSG10L GET THE LENGTH OF THE MESSAGE 00979000 LA R1,MSG10B GET THE ADDRESS OF THE MESSAGE 00980000 CALL DMKQCNWT,PARM=OPERATOR+ALARM+NORET,AFFINITY @V407510 00981000 MVI MSGBUF,BLANK CLEAR BUFFER @V407510 00982000 MVC MSGBUF+ONE(L'MSGBUF-1),MSGBUF CLEAR BUFFER @V407510 00983000 BR R4 RETURN TO IN LINE CODE 00984000 SPACE 00985000 SPACE 00986000 ********************************************************************* 00987000 EJECT 00988000 ********************************************************************** 00989000 * TERM ROUTINE 00990000 ********************************************************************** 00991000 SPACE 00992000 TERM EQU * 00993000 BALR R15,R0 ESTABLISH ADDRESSABILITY FOR HANDLER 00994000 USING *,R15 00995000 L R12,=A(DMKMCH) RESET THE BASE 00996000 DROP R15 00997000 USING DMKMCH,R12 00998000 MVC MCNPSW(8),WAITMCH MOVE WAIT PSW INTO MACHINE 00999000 * CHECK NEW PSW 01000000 LPSW MCHTERM1 ENABLE FOR HARD MACHINE CHECKS 01001000 MCHTERM2 EQU * 01002000 L R9,AMCHAREA GET ADDRESS OF MCHAREA @VA09061 01003300 L R8,MCHREC GET ADDRESS OF MCH RECORD @VA09061 01003600 L R11,MCFXDLOG+152+4*R11 GET THE VMBLOK ADDRESS @VM08879 01004000 LA R3,MSG3 SETUP MESSAGE FOR SYSTEM INTEGRITY 01005000 * LOST 01006000 TM MCHFLAG7,MCH7SMCR IS THE RECURSION INDICATOR ON ? 01007000 BO OPCOM YES, GO SCHEDULE SYSTEM MESSAGE 01008000 OI MCHFLAG7,MCH7SMCR SET THE RECURSION INDICATOR 01009000 TM MCHPDAR7,X'FE' IS THE MACHINE CHECK 01010000 * HANDLER ACTIVE ? 01011000 BNZ OPCOM NO, GO SCHEDULE SYSTEM MESSAGE 01012000 TM MCHFLAG0,MCH0HDWR IS THE HARDWARE RECOVERY 01013000 * INDICATOR ACTIVE ? 01014000 BZ OPCOM NO, GO SCHEDULE SYSTEM MESSAGE 01015000 MVC MCNPSW(8),STGSVE RESTORE THE ADDRESS OF THE 01016000 * SECONDARY HANDLER 01017000 SR R0,R0 SEND NO MESSAGE 01018000 B OPMSG2 GO TO THE MESSAGE ROUTINE 01019000 SPACE 01020000 *********************************************************************** 01021000 * OPERATOR COMMUNICATION ROUTINE 01022000 *********************************************************************** 01023000 DMKMCHST DS 0H SYSTEM TERMINATION @V407510 01024000 USING *,R12 TEMPORARY ADDRESSABILITY @V4M0175 01025000 L R12,MCHBASE GET COMMON BASE REGISTER @V407510 01026000 USING DMKMCH,R12 COMMON ADDRESSABILITY @V407510 01027000 ST R2,WAITCODE SAVE WAIT STATE CODE @V4M0175 01028000 AIF (NOT &AP).MCTST5 01028900 TM APSTAT1,APUOPER AP MODE? @V407510 01029000 BZ CALLOPR NO, CALL DMKOPRWT @V407510 01030000 GOTO DMKMCTST YES, USE AP MODULE TO TERMINATE @V407510 01031000 AGO .MCTST6 01031100 .MCTST5 ANOP 01031200 B CALLOPR CALL DMKOPRWT @V407510 01031300 .MCTST6 ANOP 01031400 SPACE 01032000 OPCOM EQU * 01033000 AIF (NOT &AP).MCTPT4 01033900 TM APSTAT1,APUOPER AP MODE? @V407510 01034000 BZ SETMSG NO, SET UP MSG @V407510 01035000 GOTO DMKMCTPT YES, USE AP TERMINATION @V407510 01036000 .MCTPT4 ANOP 01036100 SETMSG DS 0H @V407510 01037000 MVI MSGBUF,BLANK CLEAR BUFFER @V407510 01038000 MVC MSGBUF+ONE(L'MSGBUF-1),MSGBUF CLEAR BUFFER @V407510 01039000 OI MCHFLAG0,MCH0TERM THE OPERATING SYSTEM TERMINATED 01040000 MVI MCHFLAG6,MCHCODE PUT WAIT STATE CODE IN @V4M0175 01041000 * DAMAGE ASSESSMENT AREA @V4M0175 01042000 L R2,0(0,R3) PICK UP MESSAGE NUMBER AND LENGTH@V200820 01043000 STCM R2,B'1110',MSGCDE PUT CODE INTO THE MSG HDR @V200820 01044000 N R2,F255 SAVE ONLY THE MESSAGE LENGTH @V200820 01045000 S R2,F3 SUBTRACT 3 FROM LENGTH @V407510 01046000 * 2 FOR CONTROL, 1 FOR EXECUTE @V407510 01047000 EX R2,EMSGMVC MOVE THE MESSAGE TEXT TO 'MSGBUF'@V200820 01048000 LA R0,MSGLN GET LENGTH OF MESSAGE @V407510 01049000 LA R1,MCHMSG START OF THE MESSAGE DATA @V200820 01050000 CALLOPR DS 0H @V407510 01051000 CALL DMKOPRWT,PARM=ALARM EMERGENCY WRITE TO OPERATO@V200820 01052000 L R14,PREFIXA GET OWN PREFIX REG @V4M0175 01056000 CLC CPID-PSA(4,R14),WARM IS WARM INDICATED IN ID @V4M0144 01057000 BNE MCHCKP NO, DON'T CHANGE ID @VA00881 01058000 MVC CPID-PSA(4,R14),CPCP MOVE ID IN FOR CHECKPOINT @V4M0144 01059000 MCHCKP EQU * @VA00881 01060000 LPSW WAITMCH ENTER DISABLED WAIT 01061000 SPACE 01062000 EMSGMVC MVC MSGBUF(*-*),4(R3) @V200820 01063000 EJECT 01064000 WAITMCH DS 0D 01246000 DC X'0002',X'0000' WAIT PSW, RUN SEREP @V4M0175 01247000 WAITCODE DC X'00000001' WAIT STATE CODE @V4M0175 01248000 SPACE 01249000 HARDPSW DS 0D 01250000 DC X'000C0000' ALLOW HARD MACHINE CHECKS 01251000 DC A(ENBHARD) 01252000 MCHTERM1 DS 0D 01253000 DC X'000C0000' 01254000 DC A(MCHTERM2) ALLOW HARD MACHINE CHECKS IN TERM 01255000 SPFOKPSW DS 0D 01256000 DC X'000C0000' 01257000 DC A(SPFMSG) 01258000 SPFDIE DS 0D 01259000 DC X'000C0000' 01260000 DC A(SPFTERMA) 01261000 STGSVE DS 0D 01262000 DC X'00080000' 01263000 DC A(TERM) ADDRESS OF THE SECONDARY HANDLER 01264000 CR14MSK DC X'80400000' MASK TO PREVENT SOFT MACHINE CHECKS 01265000 * IN V=R AREA 01266000 * REFERENCE BITS 01267000 SAVECR14 DC F'0' SAVE AREA FOR CONTROL REGISTER 14 01268000 CR14ENB DC F'0' WORK AREA TO STORE CONTROL 01270000 * REGISTER 14 01271000 TWOK DC H'2048' LENGTH FOR STORAGE VALIDATION @VA09891 01271150 DS 0F 01271200 MCHMASK DC X'00FFF800' MASK TO ROUND TO 2K BOUNDARY @V60A6B6 01271300 ********************************************************************** 01272000 CPEYED DC C' CP/370' PROGRAM ID FOR CP 01274000 HEADERFD DC X'1066400000000000' MCH RECORD HEADER INFO. @VA10800 01278150 ********************************************************************** 01279000 MCREGS DS 2F @VA11098 01279010 EJECT 01280000 SWITCH DC X'00' SWITCH FOR MAIN STORAGE EXERCISE RTN. 01281000 OFF EQU X'FF' MASK TO TURN BIT OFF @V407510 01284000 DMKMCHLM EQU * @VA10453 01284100 CPULIMIT DC F'0' COUNT FIELD FOR SOFT ERRORS @V407510 01285000 SOFTCT EQU CPULIMIT+3 LOW BYTE OF CPULIMIT @V407510 01286000 MCHBASE DS 0F COMMON BASE VALUE @V407510 01287000 DC X'0' @V407510 01288000 DC AL3(DMKMCH) DMKMCH BASE ADDRESS @V407510 01289000 WARM DC CL4'WARM' CHARACTERS FOR CPID @V4M0144 01290000 CPCP DC CL4'CPCP' CHARACTERS FOR CPID @V4M0144 01291000 SPACE 2 01292000 * THE FOLLOWING FIELD IS SERIALIZED BY SYSTEM LOCK 01293100 SPACE 01294000 WORK DC D'0' WORK AREA FOR CONVERSION @V407510 01295000 WORKLO EQU WORK+6 SIGNIFICANT DIGITS AFTER UNPK @V407510 01296000 ********************************************************************** 01302000 * THE DIAGNOSE SUPPORT FOR ALL 01303000 * THE MACHINE MODELS 01304000 ********************************************************************** 01305000 DS 0D 01306000 ECCDIS55 DC X'0300D100' DISABLE ECC FOR MODEL 155 01311000 DS 0D 01312000 ECCENA55 DC X'0400D100' ENABLE ECC FOR THE MODEL 155 01313000 DS 0D 01314000 ECCDIS65 DC X'0200000003000000' DISABLE ECC FOR MODEL 165 01317000 ECCENA65 DC X'0200000000000000' ENABLE ECC FOR MODEL 165 01318000 ********************************************************************** 01320000 MCHCODE EQU X'01' WAIT STATE CODE FOR DMKMCH @V4M0175 01321000 EJECT 01322000 *********************************************************************** 01323000 * EQUATES TO LOW CORE INFORMATION 01324000 ********************************************************************** 01325000 SPACE 01326000 MCIC EQU 232 MACHINE CHECK INTERRUPT CODE 01327000 SPACE 01328000 SUBCLASS EQU 232 SUBCLASS CODES 01329000 SDBIT EQU X'80' SYSTEM DAMAGE BIT 01330000 PDBIT EQU X'40' PROCESSING DAMAGE BIT 01331000 SRBIT EQU X'20' SYSTEM RECOVERY BIT 01332000 TDBIT EQU X'10' TIMER DAMAGE 01333000 CDBIT EQU X'08' CLOCK DAMAGE 01334000 EDBIT EQU X'04' EXTERNAL DAMAGE 01335000 ERBIT EQU X'02' EXTERNAL RECOVERY (NOT USED) 01336000 DGBIT EQU X'01' DEGRADATION BIT 01337000 SPACE 01338000 TENSE EQU 233 TENSE CODES 01339000 BVBIT EQU X'02' VALID RETRY CONDITION EXISTS 01340000 DLBIT EQU X'01' MACHINE CHECK CODE=OR'ED VALUE 01341000 SPACE 01342000 STOERR EQU 234 STORAGE ERROR CODES,BITS 0-3 01343000 SEBIT EQU X'80' UNCORRECTED STORAGE ERROR 01344000 SCBIT EQU X'40' CORRECTED STORAGE ERROR 01345000 PEBIT EQU X'20' UNCORRECTED PROTECTION ERROR 01346000 SPACE 01347000 VALID1 EQU 234 PSW VALIDITY CODES, BITS 4-7 01348000 WPBIT EQU X'08' BITS 12-15 OF MC OLD PSW ARE VALID 01349000 MSBIT EQU X'04' SYSTEM MASK OF MC OLD PSW VALID 01350000 PMBIT EQU X'02' PROGRAM MASK OF MC OLD PSW VALID 01351000 IABIT EQU X'01' IAR OF MC OLD PSW IS VALID 01352000 SPACE 01353000 VALID2 EQU 235 MISC VALIDITY CODES,BITS 0-7 01354000 FABIT EQU X'80' FAILING STORAGE ADDRESS IS VALID 01355000 RCBIT EQU X'40' REGION CODE IS VALID (ECC OR CWA 01356000 ECBIT EQU X'20' EXT. DAMAGE REASON CODE VALID @V5088AA 01356100 FPBIT EQU X'10' FP REGISTERS STORED ARE VALID 01357000 GRBIT EQU X'08' GP REGISTERS STORED ARE VALID 01358000 CRBIT EQU X'04' CONTROL REGISTERS STORED ARE VALID 01359000 LGBIT EQU X'02' EXTENDED LOGOUT AREA IS VALID 01360000 STBIT EQU X'01' INST. MODIFIED STORAGE IS VALID 01361000 SPACE 01362000 VALID3 EQU 236 RESERVED 01363000 SPACE 01364000 MCELL EQU 238 EXTENDED LOGOUT LENGTH 01365000 SPACE 01366000 RES2 EQU 240 RESERVED AREA 2 01367000 FSA EQU 248 FAILING STORAGE ADDRESS 01368000 CWA EQU 252 CONTROL WORD ADDRESS 01369000 ECCBITS EQU 254 ERROR CORRECTION CODE BITS 01370000 SPACE 01371000 REGION EQU 255 REGION CODE (FOR 145) 01372000 CSFATAL EQU X'08' MULTI-BIT CONTROL STORAGE ERROR 01373000 CSTHRESH EQU X'04' CONTROL STG. THRESHOLD EXCEEDED (145) 01374000 CSRECOVR EQU X'03' SINGLE BIT FAILURE IN CONTROL STORAGE 01375000 MSRECOVR EQU X'02' SINGLE BIT FAILURE IN MAIN STORAGE 01376000 SPACE 01377000 FLA EQU 232 FIXED LOGOUT AREA 01378000 XD8 EQU X'D8' MACHINE CHECK CPU TIMER AREA @VM08879 01379000 PSWA EQU 4 LENGTH OF ADDRESS IN PSW @V407510 01380000 LNADDR EQU 4 LENGTH OF ADDRESS @V407510 01381000 ZERO EQU 0 CONSTANT OF ZERO @V407510 01382000 MCCR14 EQU 272 CR 14 IN LOG OUT AREA @V407510 01383000 MAXSOFT EQU 12 MAXIMUM SOFT ERROR COUNT @V407510 01384000 L3B EQU 7 STCM MASK FOR LOW 3 BYTES @V407510 01385000 ONE EQU 1 DISPLACEMENT OF 1 @V407510 01386000 LN2 EQU 2 LENGTH OF 2 @V407510 01389000 ZONE EQU X'F0' ZONE USED FOR CONVERSION @V407510 01390000 BLANK EQU X'40' BLANK CHARACTER @V407510 01391000 CMWP EQU 1 PSW CMWP FIELD @V4M0144 01397000 *********************************************************************** 01398000 EJECT 01399000 ********************************************************************** 01400000 SPACE 01401000 SPACE 01402000 SPACE 01403000 SPACE 01404000 MCMSGL EQU 27 01405000 MCHMSG DC X'151515' 01406000 MCHID DC C'DMKMCH6' 01407000 MSGCDE DC C'10W ' @V4M0217 01408000 DC C'MACHINE CHECK' 01409000 MSGBUF DC CL35' ' @V4M0217 01410000 MSGPROC DC 2C' ' PROCESSOR ADDRESS @V407510 01411000 DC XL2'1515' CONTROL CHARACTERS @V4M0217 01412000 MSGLN EQU *-MCHMSG LENGTH OF MESSAGE @V407510 01413000 VMSGTA DC C'MACHINE CHECK; OPERATION TERMINATED' 01414000 VMSGT EQU *-VMSGTA 01415000 VMS19 DC C'19I' 01416000 MSG2 DC C'10W' @V4M0217 01417000 MSG2A DC X'15' 01418000 MSG2B DC C'; SUPERVISOR DAMAGE ' @VA09163 01419100 MSG2C DC C'; EXTERNAL DAMAGE ' @VA09163 01419600 MSG3 DC C'11W' @V4M0217 01420000 MSG3A DC X'19' 01421000 MSG3B DC C'; SYSTEM INTEGRITY LOST ' @VA09163 01422500 VMS24 DC C'24I' @VA13689 01422600 MSG4 DC C'12W' 01423000 MSG4A DC X'1C' 01424000 MSG4B DC C'; TIMING FACILITIES DAMAGE ' @VA09163 01425500 MSG8 DC C'16I' 01426000 MSG8A DC C'; USER XXXXXXXX TERMINATED ' @VA09163 01427500 MSG10B DC X'1515' 01428000 DC C'DMKMCH615I MACHINE CHECK RECORDING FAILURE',X'1515' 01429000 MSG10L EQU *-MSG10B 01430000 MSG13 DC C'14I' 01431000 MSG13B DC C'; DAMAGED PAGE NOW DELETED ' @VA09163 01432500 MSG15 DC C'13I SOFT MACHINE CHECK RECORDING DISABLED ' @VA09163 01433500 MSG16 DC C'17I' 01434000 MSG16B DC C'; BUFFER OR DLAT DAMAGE ' @VA09163 01435500 MSG16L EQU *-MSG16B LENGTH OF DMKMCH616I @V4M0200 01436000 MSG17 DC C'22W' @V5088AA 01446100 MSG17A DC X'1B' @V5088AA 01446200 MSG17B DC C'; MULTIPLE CHANNEL ERRORS ' @VA09163 01446500 ********************************************************************** 01447000 EJECT 01448000 LTORG 01449000 EJECT 01450000 COPY MCHAREA @V407510 01451000 COPY MCRECORD 01452000 COPY SAVE 01453000 COPY VMBLOK 01454000 COPY MICBLOK 01455000 PSA 01456000 COPY CORE 01457000 COPY EQU 01458000 COPY RBLOKS 01459000 COPY DEVTYPES 01460000 END DMKMCH @V200820 01461000