ibm:vm370-lib:cp:dmkclk.assemble_src
Table of Contents
DMKCLK Source
References
- Fixes Applied : 3
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC004DK]
Source Listing
- DMKCLK.ASSEMBLE.txt
- CLK TITLE 'DMKCLK (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
- * MODULE NAME - 00003000
- * 00004000
- * DMKCLK 00005000
- * 00006000
- * FUNCTION - 00007000
- * 00008000
- * SYNCHRONIZE THE TOD CLOCKS IN AN ATTACHED PROCESSOR SYSTEM. 00009000
- * 00010000
- * ATTRIBUTES - 00011000
- * 00012000
- * SERIAL-REUS, PAGEABLE, ENTERED VIA SVC FROM DMKCPI DURING REAL 00013000
- * MACHINE INITIALIZATION OR DMKEXT ON RECEIPT OF A TOD SYNC 00014000
- * CHECK. 00015000
- * 00016000
- * ENTRY POINTS - 00017000
- * 00018000
- * DMKCLKCK - DETERMINE IF THE CLOCKS SHOULD BE SYNCHRONIZED. 00019000
- * ENTERED FORM DMKCPI VIA SVC. 00020000
- * DMKCLKCC - INFORMS SENDER THE STATE OF THE APU CLOCK. 00021000
- * ENTERED VIA EMS SIGP ON THE APU. 00022000
- * DMKCLKMP - MASTER ROUTINE FOR CLOCK SYNCHRONIZATION. 00023000
- * ENTERED VIA SVC ON THE MAIN PROCESSOR. 00024000
- * DMKCLKAP - ACTS AS THE SLAVE ROUTINE FOR DMKCLKMP. SETS THE 00025000
- * CLOCK ON THE APU. ENTERED VIA EMS SIGP ON THE APU. 00026000
- * DMKCLKSC - TOD SYNC CHECK PROCESSOR. 00027000
- * ENTERED VIA SVC BY THE EXT SLIH FOLLOWING TOD SYNC 00028000
- * CHECK. 00029000
- * 00030000
- * ENTRY CONDITIONS - DMKCLKCK, DMKCLKMP, DMKCLKSC 00031000
- * 00032000
- * GPR12 - DMKCLK ENTRY POINT ADDRESS. 00033000
- * GPR13 - SAVEAREA ADDRESS. 00034000
- * SYSTEM LOCK HELD. 00035000
- * 00036000
- * ENTRY CONDITIONS - DMKCLKCC, DMKCLKAP 00037000
- * 00038000
- * GPR12 - DMKCLK ENTRY POINT ADDRESS. 00039000
- * SYSTEM LOCK HELD. 00040000
- * 00041000
- * EXIT CONDITIONS - DMKCLKCK, DMKCLKMP, DMKCLKSC 00042000
- * 00043000
- * NORMAL - RETURN TO CALLER VIA SVC. 00044000
- * 00045000
- * ERROR - ABEND 3 (CLOCK ERROR). 00046000
- * 00047000
- * EXIT CONDITIONS - DMKCLKCC, DMKCLKAP 00048000
- * 00049000
- * NORMAL - LOAD ENABLED WAIT STATE. 00050000
- * 00051000
- * ERROR - ABEND 3 (CLOCK ERROR). 00052000
- * 00053000
- * CALLS TO OTHER ROUTINES - 00054000
- * 00055000
- * DMKQCNWT - WRITE INDICATIVE CLOCK MESSAGES. 00056000
- * 00057000
- * EXTERNAL REFERENCES - 00058000
- * 00059000
- * NONE. 00060000
- * 00061000
- * TABLES/WORK AREAS - 00062000
- * 00063000
- * PSA 00064000
- * TODCLK - STCK WORK AREAS USED BY DMKCLK. 00065000
- * 00066000
- * MACROS - 00067000
- * 00068000
- * RELOC, SWITCH, SIGNAL (CLKCHK), SIGNAL (SYNC), ABEND, CALL, 00069000
- * EXIT, SIGNAL (QUIESCE), SIGNAL (RESUME). 00070000
- * 00071000
- * REGISTER USAGE - 00072000
- * 00073000
- * R11 - VMBLOK POINTER 00074000
- * R12 - BASE REGISTER 00075000
- * R13 - SAVEAREA POINTER 00076000
- * 00077000
- * NOTES - 00078000
- * 00079000
- * DMKCLKCK WILL ONLY BE INVOKED IN AN AP ENVIRONMENT. SINCE IT 00080000
- * IS POSSIBLE FOR BOTH PROCESSORS TO SHARE THE SAME CLOCK, 00081000
- * CODE IS INSERTED TO ENSURE NO ATTEMPT IS MADE TO SYNCHRONIZE 00082000
- * IN A ONE-CLOCK SYSTEM. ATTEMPTS TO SYNCHRONIZE COULD CAUSE 00083000
- * THE CLOCK IN A ONE-CLOCK SYSTEM TO ENTER THE STOPPED STATE. 00084000
- * 00085000
- * THE SYSTEM WILL RUN DISABLED FOR TOD SYNC CHECKS ON THE APU. 00086000
- * 00087000
- * ERROR MESSAGES - 00088000
- * 00089000
- * NONE. 00090000
- * 00091000
- * GENERAL MESSAGES - 00092000
- * 00093000
- * DMKCLK970W TOD CLOCK SYNC CHECK RECEIVED. 00094000
- * CLOCK SYNCHRONIZATION - PRESS 'TOD ENABLE SET' 00095000
- * 00096000
- * WAIT STATE CODES - 00097000
- * 00098000
- * NONE - NOTE HOWEVER, THAT THE APU ROUTINES LOAD ENABLED WAIT 00099000
- * PSW'S DURING THEIR PROCESSING AS THEY DO NOT EXIT TO 00100000
- * THE DISPATCHER. 00101000
- * 00102000
- * ABENDS - 00103000
- * 00104000
- * CLK003 - AN ERROR HAS OCCURRED WHILE STORING OR SETTING THE TOD 00105000
- * CLOCK. 00106000
- * 00107000
- EJECT 00108000
- DMKCLK CSECT @V407595 00109000
- COPY OPTIONS @V407595 00110000
- DC CL8'DMKCLK' MODULE NAME @V4M0106 00111000
- N0 EQU 0 @V407595 00112000
- N1 EQU 1 @V407595 00113000
- N2 EQU 2 @V407595 00114000
- N4 EQU 4 @V407595 00115000
- N8 EQU 8 @V407595 00116000
- L8 EQU 8 @V407595 00117000
- N16 EQU 16 @V407595 00118000
- FF EQU X'FF' @V407595 00119000
- EXTRN DMKPSADU @V407595 00120000
- EJECT 00121000
- * 00122000
- * OPERATION - DMKCLKCK 00123000
- * 00124000
- * 1. ISSUE A SWITCH MACRO TO ENSURE RUNNING ON THE MAIN PROC. 00125000
- * 2. ISSUE A CLKCHK EMS (DMKCLKCC) TO DETERMINE IF THE CLOCKS 00126000
- * SHOULD BE SYNCHRONIZED. 00127000
- * 3. IF DMKCLKCC INDICATES THAT THE CLOCKS SHOULD BE 00128000
- * SYNCHRONIZED A MESSAGE IS WRITTEN TO THE OPERATOR 00129000
- * REQUESTING ENABLEMENT OF THE 'TOD ENABLE SET' KEY. DMKCLKMP 00130000
- * IS INVOKED TO SYNCHRONIZE CLOCKS. DMKCLKCK RETURNS TO 00131000
- * CALLER. 00132000
- * 4. IF DMKCLKCC INDICATES THAT THE CLOCK ON THE APU (OR MAIN 00133000
- * PROC ON A ONE-CLOCK MULTI-PROCESSOR SYSTEM) IS RUNNING, 00134000
- * MUST THEN TEST TO ENSURE THE HIGH ORDER 32 BYTES ARE IN 00135000
- * SYNC. NOTE THAT A TOD SYNC CHECK WILL ONLY BE RECEIVED WHEN 00136000
- * THE TOD CLOCKS ARE OUT OF LOW ORDER SYNCHRONIZATION. 00137000
- * 5. IF THE CLOCKS ARE OUT OF HIGH ORDER SYNCHRONIZATION, THE 00138000
- * CLOCK ARE SYNCHRONIZED AS IN STEP 3. 00139000
- * 6. IF THE CLOCKS ARE IN HIGH ORDER SYNCHRONIZATION OR IF THE 00140000
- * ATTACHED PROCESSOR INSTALLATION SHARES A COMMON CLOCK, 00141000
- * CR0 IS ENABLED FOR TOD SYNC CHECKS AND DMKCLKCK RETURNS 00142000
- * TO CALLER. NOTE THAT IF THE CLOCKS ARE OUT OF LOW ORDER 00143000
- * SYNC, A TOD SYNC CHECK WILL BE RECEIVED WHEN EXT INTERRUPTS 00144000
- * ARE ENABLED. THIS WILL RESULT IN AN ENTRY TO DMKCLKSC TO 00145000
- * SYNCHRONIZE THE TOD CLOCKS. 00146000
- * 00147000
- SPACE 5 00148000
- USING SAVEAREA,R13 @V407595 00149000
- DMKCLKCK RELOC EXECUTES ON MAIN-SVC ENTRY @V407595 00150000
- USING PSA,R0 @V407595 00151000
- SWITCH ENSURE RUNNING ON MAIN PROCESSOR @V4M0143 00152000
- MVI CLKFLAG1,N0 CLEAR INTERNAL FLAG BYTE @V407595 00153000
- CLKSTORE EQU * @V407595 00154000
- STCK TODCLKA STORE TOD CLOCK @V407595 00155000
- BC 8,CLKSET1 CC=0, CLOCK IS SET @V407595 00156000
- B CLKABEND CC=1,2,3 IS ERROR SINCE CLOCK @V407595 00157000
- * SHOULD BE RUNNING AT THIS POINT. 00158000
- CLKSET1 EQU * @V407595 00159000
- * 00160000
- * NOW DETERMINE IF CLOCKS SHOULD BE SYNCHRONIZED. 00161000
- * 00162000
- SIGNAL CLKCHK CALL DMKCLKCC @V407595 00163000
- TM CLKFLAG1,CLKSYNC SHOULD CLOCKS BE SYNCHRONIZED? @V407595 00164000
- BO CLKSYN YES- DMKCLKCC INDICATES CLOCKS @V407595 00165000
- * SHOULD BE SYNCHRONIZED. 00166000
- STCK TODCLKC STORE TOD CLOCK @V407595 00167000
- BC 8,CLKSET2 CC=0, CLOCK IS SET @V407595 00168000
- CLKABEND EQU * @V407595 00169000
- ABEND 3 CC=1,2,3 - ERROR @V407595 00170000
- CLKSET2 EQU * @V407595 00171000
- L R1,TODCLKAL LOAD HIGH ORDER CLOCK WORD @V407595 00172000
- AL R1,ONESEC ADD 1 SEC TO HIGH ORDER COUNT @V407595 00173000
- ST R1,TODCLKAL AND SAVE. @V407595 00174000
- CLC TODCLKC,TODCLKA IF > 1 SECOND TRANSPIRED THEN @V407595 00175000
- * CANNOT TEST HIGH ORDER SYNCHRONIZATION 00176000
- BNL CLKSTORE YES- TRY AGAIN @V407595 00177000
- * NO- TEST HIGH ORDER SYNCHRONIZATION 00178000
- SL R1,ONESEC DECREMENT BY 1 SEC @V407595 00179000
- ST R1,TODCLKAL RESTORE ORIGINAL CLOCK VALUE @V407595 00180000
- CLC TODCLKA,TODCLKB IS 1ST MAIN PROC STCK LESS THAN @V407595 00181000
- * THE APU STCK 00182000
- BNL CLKSYN (NO- SYNCHRONIZE CLOCKS) @V407595 00183000
- CLC TODCLKB(L8),TODCLKC AND THE APU STCK IS > THE @V407595 00184000
- * 2ND MAIN PROCESSOR STCK, THEN 00185000
- BNL CLKSYN SYNC THE TOD CLOCKS; ELSE @V407595 00186000
- * DO NOT SYNC THE TOD CLOCKS. THE @V405795 00187000
- * CLOCKS ARE IN HIGH ORDER SYNCHRONIZATION. 00188000
- * ATTEMPTS TO SYNCHRONIZE COULD CAUSE 00189000
- * THE CLOCK IN A ONE CLOCK MULTIPROCESSING 00190000
- * SYSTEM TO ENTER THE STOPPED STATE. 00191000
- LCTL C0,C0,CR0INTMN ENABLE FOR TOD SYNC CHECKS @V407595 00192000
- STCTL C0,C0,CPCREG0 DITTO IN PSA @V407595 00193000
- B NOSYNC BYPASS CLOCK SYNCHRONIZATION @V407595 00194000
- * NOTE IF CLOCKS ARE SYNCHRONIZED 00195000
- * DMKCLKMP WILL ENABLE SYNC CHECKS IN CR0. 00196000
- CLKSYN EQU * CLOCKS OUT OF HIGH ORDER SYNC OR @V407595 00197000
- * APU CLOCK NOT SET, IN ERROR OR STOPPED. 00198000
- LA R1,SETMSG MESSAGE TO ENABLE TOD ENABLE SET @V407595 00199000
- * SWITCH. 00200000
- LA R0,SETMSGL LENGTH OF MESSAGE @V407595 00201000
- CALL DMKQCNWT,PARM=NOTIME+OPERATOR ISSUE MSG @V407595 00202000
- CALL DMKCLKMP SYNCHRONIZE THE TOD CLOCKS @V407595 00203000
- NOSYNC EQU * @V407595 00204000
- EXIT RETURN TO CALLER @V407595 00205000
- EJECT 00206000
- * 00207000
- * OPERATION - DMKCLKCC 00208000
- * 00209000
- * 1. CLEAR EMS CLKCHK PENDING FLAG IN PSA. 00210000
- * 2. STORE THE TOD CLOCK TO TIMESTAMP CURRENT APU CLOCK VALUE. 00211000
- * THIS WILL BE SUBSEQUENTLY USED IN TESTING HIGH ORDER CLOCK 00212000
- * SYNCHRONIZATION. 00213000
- * 3. IF THE CLOCK IS SET DO STEPS 4-6; ELSE GO TO STEP 7. 00214000
- * 4. TURN ON CPWAIT AND CPSUPER, AND TURN OFF THE OTHER BITS. 00215500
- * 5. EMS CLKCHK RECEIVED IS SET ON IN THE PSA. 00218000
- * 6. DMKCLKCC LOADS AN ENABLED WAIT STATE PSW. 00219000
- * 7. IF THE CC FROM THE STCK INDICATES THE CLOCK IS NOT SET, 00220000
- * OR IS SET BUT IN ERROR, OR IS IN THE STOPPED STATE SET AN 00221000
- * INTERNAL BIT IN DMKCLK TO INFORM THE CALLER THAT THE CLOCKS 00222000
- * SHOULD BE SYNCHRONIZED. GO TO STEP 5. 00223000
- * 8. IF THE CC INDICATES THAT THE CLOCK IS NOT OPERATIONAL, 00224000
- * ISSUE ABEND 3. 00225000
- * 00226000
- SPACE 5 00227000
- ENTRY DMKCLKCC @V407595 00228000
- DMKCLKCC DS 0H EXECUTES ON APU - SIGP CLKCHK @V407595 00229000
- USING *,R12 @V407595 00230000
- SL R12,CLKCC ESTABLISH BASE FROM MOD START @V407595 00231000
- USING DMKCLK,R12 @V407595 00232000
- L R11,ASYSOP RUN UNDER OPERATOR VMBLOK @V4M0106 00233000
- NI EMSPEND,FF-EMSPCLKC TURN OFF CLKCHK EMS PENDING @V407595 00234000
- STCK TODCLKB TIMESTAMP FOR CHECKING HIGH @V407595 00235000
- * ORDER SYNCHRONIZATION. 00236000
- BC 8,CCEXIT CC=0, (CLOCK SET) @V407595 00237000
- BC 6,SETSYNC CC=1, (NOT SET) OR CC=2 (ERROR) @V407595 00238000
- * TELL SENDER CLOCKS SHOULD BE SYN'D. 00239000
- * CC=3 (STOPPED OR NOT OPERATIONAL) 00240000
- CLC TODCLKB,ZEROES NOT OPERATIONAL ? @V407595 00241000
- BNE SETSYNC NO- (IN STOPPED STATE) @V407595 00242000
- ABEND 03 YES- TERMINATE- CLOCK NOT OPER @V407595 00243000
- SETSYNC EQU * @V407595 00244000
- OI CLKFLAG1,CLKSYNC TELL SENDER TO SYNCHRONIZE TOD @V407595 00245000
- * CLOCKS AND TERMINATE SPIN LOOP. 00246000
- CCEXIT EQU * @V407595 00247000
- MVI CPSTATUS,CPWAIT+CPSUPER INDICATE PROCESSOR IN @VA11576 00248500
- * SUPERVISOR AND WAIT STATE, 00249500
- * AND CLEAR OTHER FLAGS. 00250500
- OI EMSREC,EMSRCLKC TURN ON CLKCHK RECEIVED @V407595 00256000
- LPSW ENABLEWT ENABLE FOR EXTERNAL INTERRUPTS @V407595 00257000
- EJECT 00258000
- * 00259000
- * OPERATION - DMKCLKMP, DMKCLKAP 00260000
- * 00261000
- * SYNCHRONIZE THE TOD CLOCKS AS FOLLOWS : 00262000
- * 00263000
- * 1. DMKCLKMP - STORE THE TOD CLOCK + 1 SEC. THIS VALUE WILL BE 00264000
- * SET IN THE APU CLOCK BY DMKCLKAP. 00265000
- * 2. DMKCLKMP - ISSUE SYNC EMS TO INVOKE DMKCLKAP TO RUN ON THE APU. 00266000
- * 3. DMKCLKAP - TURN OFF SYNC EMS PENDING IN THE PSA. 00267000
- * 4. DMKCLKAP - TURN ON THE TOD SYNC CONTROL BIT IN CR0. WHEN THIS 00268000
- * BIT IS ON AND THE CLOCK IS IN THE STOPPED STATE 00269000
- * (APU'S CLOCK ENTERS STOPPED STATE ON SCK) THE APU'S 00270000
- * CLOCK WILL ENTER THE SET STATE (I.E., RUNNING) WHEN 00271000
- * MAIN PROCESSOR'S CLOCK INCREMENTS TO ALL ZEROES IN 00272000
- * BIT POSITIONS 32-63. THE CLOCKS WILL THEN BE IN LOW 00273000
- * ORDER SYNCHRONIZATION. 00274000
- * 5. DMKCLKAP - ISSUE SCK TO SET THE VALUE PASSED BY DMKCLKMP 00275000
- * (TOD CLOCK VALUE + 1 SEC). 00276000
- * 6. DMKCLKAP - CHECK THE CC FROM THE SCK. 00277000
- * CLOCK IN 'SECURE POSITION' - REISSUE THE SCK. 00278000
- * CLOCK NOT OPERATIONAL - ABEND 3. 00279000
- * CLOCK IS SET - ZERO CPWAIT AND CPSUPER. 00280000
- * 7. DMKCLKAP - TURN ON SYNC EMS RECEIVED AND LOAD AN ENABLED WAIT 00281000
- * STATE PSW. 00282000
- * 8. DMKCLKMP - OBTAIN CLOCK VALUE ON RETURN FROM DMKCLKAP. 00283000
- * IF THIS VALUE IS > ORIGINAL +1 SEC VALUE AS PASSED 00284000
- * TO DMKCLKAP, THEN CLOCK ARE NOT IN HIGH ORDER SYNC. 00285000
- * REPEAT WITH STEP 1. 00286000
- * 9. DMKCLKMP - LOOP FOR 1 SEC THEN ENABLE CR0 FOR TOD SYNC CHECKS. 00287000
- * 10. DMKCLKMP - RETURN TO CALLER. 00288000
- * 00289000
- EJECT 00290000
- DMKCLKMP RELOC EXECUTES ON MAIN - SVC ENTRY @V407595 00291000
- CLKSYNMP EQU * @V407595 00292000
- STCK TODCLKA STORE TOD CLOCK @V407595 00293000
- BC 7,CLKERRMP ERROR - TERMINATE - CLOCK SHOULD @V407595 00294000
- * BE RUNNING. 00295000
- SR R1,R1 CLEAR WORK REG @V407595 00296000
- ST R1,TODCLKAR CLEAR LOW ORDER 32 BITS @V407595 00297000
- LA R1,N1 SET 1 TO WORK REG @V407595 00298000
- AL R1,TODCLKAL ADD 1 SEC TO HIGH ORDER 32 BITS @V407595 00299000
- ST R1,TODCLKAL AND SAVE @V407595 00300000
- SIGNAL SYNC CALL DMKCLKAP TO RUN ON APU @V407595 00301000
- STCK TODCLKB TIMESTAMP INTERVAL BETWEEN 1ST @V407595 00302000
- * STCK AND NOW. 00303000
- BC 7,CLKERRMP ERROR - TERMINATE - CLOCK SHOULD @V407595 00304000
- * BE RUNNING. 00305000
- CLC TODCLKB,TODCLKA IF 2ND STCK IS > ORIGINAL +1 @V407595 00306000
- * CLOCKS ARE NOT IN SYNC- @V407595 00307000
- BH CLKSYNMP TRY AGAIN. @V407595 00308000
- STCK TODCLKC SET TIMESTAMP FOR LOOP CONTROL @V407595 00309000
- BC 7,CLKERRMP ERROR - TERMINATE - CLOCK SHOULD @V407595 00310000
- * BE RUNNING. 00311000
- LA R1,2 SET WORK VALUE TO 2 SECONDS @VMV0004 00312100
- AL R1,TODCLKCL ADD 2.08 SEC TO HIGH ORDER TIME @V407595 00312200
- * TO ENSURE THAT A MINIMUM OF 1 00312300
- * SECOND WILL HAVE ELASPED AFTER THE 00312400
- * CLOCKS ARE SYNCHRONIZED. 00312500
- ST R1,TODCLKCL AND SAVE @V407595 00314000
- CLKCHK1S EQU * @V407595 00315000
- STCK TODCLKB GET TOD CLOCK VALUE @V407595 00316000
- BC 7,CLKERRMP ERROR - TERMINATE - CLOCK SHOULD @V407595 00317000
- * BE RUNNING. 00318000
- CLC TODCLKB,TODCLKC HAS ONE SECOND ELAPSED? @V407595 00319000
- BL CLKCHK1S NO- CONTINUE LOOPING @V407595 00320000
- LCTL C0,C0,CR0INTMN ENABLE FOR SYNC CHECKS. @V407595 00321000
- STCTL C0,C0,CPCREG0 SAVE IN REAL 0 FOR CP @V4M0143 00322000
- EXIT RETURN @V407595 00323000
- CLKERRMP EQU * @V407595 00324000
- ABEND 003 @V407595 00325000
- EJECT 00326000
- DMKCLKAP DS 0H ENTERED VIA SYNC EMS ON APU @V407595 00327000
- ENTRY DMKCLKAP @V407595 00328000
- BALR R12,R0 ESTABLISH BASE @V407595 00329000
- USING *,R12 @V407595 00330000
- L R11,ASYSOP RUN UNDER OPERATOR VMBLOK @V4M0106 00331000
- NI EMSPEND,FF-EMSPSYNC TURN OFF SYNC PENDING @V407595 00332000
- LCTL C0,C0,C0TODSYN SET THE TOD SYNCHRONIZATION BIT @V407595 00333000
- CLKSECRE EQU * @V407595 00334000
- SCK TODCLKA SET TOD AS PASSED BY MAIN PROC @V407595 00335000
- BC 8,CLKSET CC=0, CLOCK SET @V407595 00336000
- BC 4,CLKSECRE CC=1, CLOCK SECURE - LOOP @V407595 00337000
- * CC=3, CLOCK NOT OPERATIONAL @V407595 00338000
- ABEND 0003 TERMINATE @V407595 00339000
- CLKSET EQU * @V407595 00340000
- MVI CPSTATUS,CPWAIT+CPSUPER INDICATE PROCESSOR IN @VA11576 00341500
- * SUPERVISOR AND WAIT STATE. 00342500
- * ALSO CLEAR ALL OTHER FLAGS. 00343500
- * THIS WILL ENSURE CLOCK SYNC SO 00344500
- * THAT WORK CAN BE DISPATCHED TO 00345500
- * THE APU. 00346500
- OI EMSREC,EMSRSYNC LET MAIN PROCESSOR CONTINUE @V407595 00349000
- LPSW ENABLEWT ENABLE FOR EMS INTERRUPTS @V407595 00350000
- EJECT 00351000
- * 00352000
- * OPERATION - DMKCLKSC 00353000
- * 00354000
- * 1. ISSUE A SWITCH MACRO TO ENSURE RUNNING ON THE MAIN PROCESSSOR. 00355000
- * THIS IS NECESSARY SINCE THIS ROUTINE IS PAGEABLE AND IS INVOKED 00356000
- * VIA SVC FROM THE EXT SLIH. 00357000
- * 2. IF THE TOD SYNC CHECK IS ALREADY BEING PROCESSED (PROCSCHK=1) 00358000
- * THIS ROUNTINE EXITS TO CALLER. NOTE THAT SYNC CHECK INTERRUPTS 00359000
- * WILL CONTINUE TO BE RECEIVED UNTIL THE CLOCKS ARE SYNCHRONIZED 00360000
- * OR THE INTERRUPT IS DISABLED. 00361000
- * 3. IF PROCSCHK=0, SET PROCSCHK=1 AND DISABLE FOR TOD SYNC CHECKS. 00362000
- * 4. MESSAGE 970W IS ISSUED TO INFORM THE INSTALLATION OF THE SYNC 00363000
- * CHECK. 00364000
- * 5. A SECOND MESSAGE IS ISSUED REQUESTING THE SYSTEM OPERATOR TO 00365000
- * PRESS THE 'TOD ENABLE SET' KEY. 00366000
- * 6. THE APU IS QUIESCED. 00367000
- * 7. DMKCLKMP IS INVOKED TO SYNC THE TOD CLOCKS. 00368000
- * 8. PROCSCHK IS SET OFF, AND THE ATTACHED PROCESSOR IS RESUME'D. 00369000
- * 9. DMKCLKSC EXITS TO CALLER. 00370000
- * 00371000
- SPACE 5 00372000
- DMKCLKSC RELOC @V407595 00373000
- SWITCH ENSURE RUNNING ON MAIN PROCESSOR @V4M0143 00374000
- TM APSTAT4,PROCSCHK TOD SYNC CHECK ALREADY BEING @VA07615 00375100
- * PROCESSED ? 00376000
- BO SCEXIT YES - EXIT @V407595 00377000
- OI APSTAT4,PROCSCHK NO- INDICATE BEING PROCESSED @VA07615 00378100
- LCTL C0,C0,NOSYNCHK INHIBIT SYN CHECKS @V407595 00379000
- STCTL C0,C0,CPCREG0 UNTIL CLOCKS ARE RESYNCHRONIZED @V407595 00380000
- LA R1,CLK970W SYNC CHECK WARNING MSG @V407595 00381000
- LA R0,CLK970WL LENGTH OF MSG @V407595 00382000
- CALL DMKQCNWT,PARM=NOTIME+OPERATOR+ALARM ISSUE MSG @V407595 00383000
- LA R1,SETMSG SYNC CHK- ENABLE TOD SET SWITCH @V407595 00384000
- LA R0,SETMSGL LENGTH OF MESSAGE @V407595 00385000
- CALL DMKQCNWT,PARM=NOTIME+OPERATOR ISSUE MSG @V407595 00386000
- SIGNAL QUIESCE QUIESCE THE APU @V407595 00387000
- CALL DMKCLKMP SYNCHRONIZE THE TOD CLOCKS @V407595 00388000
- STCTL C0,C0,CPCREG0 ENABLE SYNC CHECKS FOR SYSTEM. @V407595 00389000
- * NOTE DMKCLKMP RE-ENABLES SYNC CHECKS IN 00390000
- * CR0. 00391000
- NI APSTAT4,FF-PROCSCHK CLEAR SYNC BEING PROCESSED @VA07615 00392100
- * INDICATOR. 00393000
- SIGNAL RESUME CONTINUE PROCESSING ON APU @V407595 00394000
- SCEXIT EQU * @V407595 00395000
- EXIT RETURN TO CALLER @V407595 00396000
- EJECT 00397000
- DS 0D @V407595 00398000
- CLKRSTNW DC A(MCHEKENB,DMKPSADU) SYSTEM RESTART NEW PSW @V407595 00399000
- XWAIT4 DC X'0002000000000015' INDICATE SIGP ERROR @V407595 00400000
- XWAIT5 DC X'0002000000000016' TOD CLOCK ERROR ON APU @V407595 00401000
- ENABLEWT DC X'010E000000000000' ENABLE WAIT STATE @V407595 00402000
- C0TODSYN DC AL1(BLKMPX+TODSYNC+NOSSKCK,PAGE4K) HRC004DK 00403490
- DC AL1(MFAMASK+EMSMASK+XCMASK) ENABLE MFA/EMS/XC @V407595 00404000
- DC AL1(0) @V407595 00405000
- CR0INTMN DC AL1(BLKMPX+NOSSKCK,PAGE4K) HRC004DK 00406490
- DC AL1(MFAMASK+EMSMASK+XCMASK+SYNCMASK+CKCMASK+CPTMASK) 00407000
- DC AL1(INTMASK+KEYMASK) BITMASK FOR CR0 ON MAIN PR @V407595 00408000
- NOSYNCHK DC AL1(BLKMPX+NOSSKCK,PAGE4K) HRC004DK 00409490
- DC AL1(MFAMASK+EMSMASK+XCMASK+CKCMASK+CPTMASK) @V4M0143 00410000
- DC AL1(INTMASK+KEYMASK) CR0 WITHOUT TOD SYNC CHK @V407595 00411000
- SPACE 2 00412000
- TODCLKA DS D STCK WORK AREA @V407595 00413000
- ORG TODCLKA @V407595 00414000
- TODCLKAL DS F LEFTMOST 32 BITS OF TOD CLOCK @V407595 00415000
- TODCLKAR DS F RIGHTMOST 32 BITS OF TOD CLOCK @V407595 00416000
- TODCLKB DS D STCK WORK AREA @V407595 00417000
- ORG TODCLKB @V407595 00418000
- TODCLKBL DS F LEFTMOST 32 BITS OF TOD CLOCK @V407595 00419000
- TODCLKBR DS F RIGHTMOST 32 BITS OF TOD CLOCK @V407595 00420000
- TODCLKC DS D STCK WORK AREA @V407595 00421000
- ORG TODCLKC @V407595 00422000
- TODCLKCL DS F LEFTMOST 32 BITS OF TOD CLOCK @V407595 00423000
- TODCLKCR DS F RIGHTMOST 32 BITS OF TOD CLOCK @V407595 00424000
- SPACE 2 00425000
- ONESEC DC F'1' @V407595 00426000
- CLKCC DC A(DMKCLKCC-DMKCLK) @V407595 00427000
- CLKFLAGS DS 0H @V407595 00428000
- ORG CLKFLAGS @V407595 00429000
- CLKFLAG1 DS C @V407595 00430000
- CLKSIG EQU X'80' @V407595 00431000
- CLKSYNC EQU X'40' @V407595 00432000
- CLKERR EQU X'20' @V407595 00433000
- CLKFLAG2 DS C RESERVED @V407595 00434000
- SPACE 2 00435000
- CLK970W DC C'DMKCLK970W TOD CLOCK SYNC CHECK RECEIVED' @V407595 00436000
- CLK970WL EQU *-CLK970W @V407595 00437000
- SETMSG DC C'CLOCK SYNCHRONIZATION- PRESS ''TOD ENABLE SET''' 00438000
- SETMSGL EQU *-SETMSG @V407595 00439000
- COPY EQU @V407595 00440000
- COPY SAVE @V407595 00441000
- PSA @V407595 00442000
- MCHEKENB EQU (MCHEK+EXTMODE)*X'10000' @V407595 00443000
- END DMKCLK @V407595 00444000
ibm/vm370-lib/cp/dmkclk.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator