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