ibm:vm370-lib:cp:dmklok.assemble_src
Table of Contents
DMKLOK Source
References
- Fixes Applied : 4
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [R12568DK]
Source Listing
- DMKLOK.ASSEMBLE.txt
- LOK TITLE 'DMKLOK (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 00002000
- * MODULE NAME - 00003000
- * DMKLOK 00004000
- * 00005000
- * FUNCTION - 00006000
- * THE FUNCTION OF THIS ROUTINE IS TO PROVIDE A CENTRALIZED 00007000
- * PLACE FOR ALL LOCKING MANIPULATIONS. ALL LOCKING FUNCTIONS 00008000
- * REQUIRED WHEN A LOCK IS NOT OBTAINED OR RELEASED ON THE 00009000
- * FIRST ATTEMPT ARE DIRECTED TO THIS MODULE. THIS ROUTINE 00010000
- * WILL ALSO SERVE AS A CENTRAL SPIN FUNCTION FOR THE SYSTEM. 00011000
- * ALL OBTAIN REQUESTS FOR THE VMBLOK LOCK WILL BE 00012000
- * DIRECTED TO THIS MODULE. 00013000
- * 00014000
- * ATTRIBUTES - 00015000
- * RESIDENT, BALR CALLED 00016000
- * 00017000
- * ENTRY POINTS - 00018000
- * DMKLOKDF - PROCESS AN OBTAIN, DEFER LOCK REQUEST 00019000
- * 00020000
- * DMKLOKVM - PROCESS AN OBTAIN, DEFER REQUEST FOR VMBLOK 00021000
- * 00022000
- * DMKLOKSP - PROCESS AN OBTAIN, SPIN LOCK REQUEST. 00023000
- * 00024000
- * DMKLOKPS - PROCESSOR SPIN ROUTINE. 00025000
- * 00026000
- * DMKLOKSW - PROCESS AN OBTAIN AND RELEASE REQUEST FOR VMBLOK 00027000
- * REQUESTED BY SWTCHVM MACRO 00028000
- * 00029000
- * ENTRY CONDITIONS - 00030000
- * GPR0 - PROCESSOR ADDRESS 00031000
- * GPR1 - ADDRESS OF LOCKWORD 00032000
- * GPR14 - RETURN ADDRESS 00033000
- * GPR15 - ENTRY POINT ADDRESS 00034000
- * 00035000
- * EXIT CONDITIONS - 00036000
- * NORMAL - CONDITION CODE SET 00037000
- * CC=0 LOCK OBTAINED 00038000
- * CC=1 LOCK HELD BY OTHER PROCESSOR 00039000
- * 00040000
- * ERROR - SYSTEM ABEND 00041000
- * LOK001 - AN OBTAIN REQUEST MADE FOR LOCK ALREADY 00042000
- * HELD BY THE REQUESTING PROCESSOR. 00043000
- * CVT001 - STCK FAILED. 00044000
- * 00045000
- * CALLS TO OTHER ROUTINES - 00046000
- * DMKVMASW - TO FLIP SHARED SYSTEM SEGMENT POINTERS 00047000
- * DMKCVTAB - ABEND IF STCK FAILS 00048000
- * DMKSTKSW - STACK A PRIORITY CPEXBLOK 00049500
- * 00051000
- * EXTERNAL REFERENCES - 00052000
- * LOCK MACRO REFERENCES: 00053000
- * PSA- 00054000
- * LPUADDR,LPUADDRX -LOGICAL PROCESSOR ADDRESS 00055000
- * LOCKSAV -4 WORD SAVE AREA FOR REGS 14 - 1 00056000
- * 00057000
- * DMKLOK EXTERNAL REFERENCES - 00058000
- * PSA- 00059000
- * CPSYSLK - INDICATOR THAT A PROCESSOR IS SPINNING 00060000
- * ON SYSTEM LOCK. 00061000
- * 00062000
- * CPLOKFL - INDICATOR THAT DMKLOK HAS OPENED WINDOW 00063000
- * BUT DOES NOT EXPECT RETURN ON INTERRUPT. 00064000
- * DMKEXTSL MUST CLEAN UP FOR DMKLOK. 00065000
- * DMKLOKSI, CPSYSLK, AND CPLOKFL MUST BE 00066000
- * CLEARED. 00067000
- * 00068000
- * TABLES/WORKAREAS - 00069000
- * LOKSAVE - DMKLOK SAVE AREA FOR REGS UPON ENTRY 00070000
- * LOKSAV2 - DMKLOKSW SAVE AREA FOR REGS UPON ENTRY 00071000
- * 00072000
- * MACROS - 00073000
- * TRACE - TRACE ALL SPIN CONDITIONS 00074000
- * ABEND - TERMINATE THE SYSTEM IN ERROR SITUATIONS. 00075000
- * CHARGE - SWITCH THE TIMER 00076000
- * 00077000
- * COPY FILES - 00078000
- * PSA - 00079000
- * CPEXBLOK - 00080000
- * VMBLOK - 00081000
- * 00082000
- * REGISTER USAGE - 00083000
- * GPR0 - PROCESSOR ADDRESS 00084000
- * GPR1 - LOCKWORD ADDRESS 00085000
- * GPR2 - 00086000
- * GPR3 - 00087000
- * GPR4 - 00088000
- * GPR5 - 00089000
- * GPR6 - 00090000
- * GPR7 - 00091000
- * GPR8 - 00092000
- * GPR9 - 00093000
- * GPR10- 00094000
- * GPR11- VMBLOK ADDRESS 00095000
- * GPR12- BASE REG 00096000
- * GPR13- 00097000
- * GPR14- 00098000
- * GPR15- 00099000
- * 00100000
- * OPERATION - 00101000
- * SEE ENTRY POINT PROLOGUES 00102000
- * 00103000
- * ERROR MESSAGES - 00104000
- * NONE. 00105000
- * 00106000
- EJECT 00107000
- COPY OPTIONS @V407510 00108000
- COPY LOCAL OPTIONS @V407510 00109000
- EJECT 00110000
- DMKLOK CSECT 00111000
- SPACE 3 @V407510 00112000
- ENTRY DMKLOKDF @V407510 00113000
- ENTRY DMKLOKVM @V407510 00114000
- ENTRY DMKLOKSP @V407510 00115000
- ENTRY DMKLOKPS @V407510 00116000
- ENTRY DMKLOKSW @V407510 00117000
- ENTRY DMKLOKSY @V407510 00118000
- ENTRY DMKLOKFR @V407510 00119000
- ENTRY DMKLOKRL @V407510 00120000
- ENTRY DMKLOKTR @V407510 00121000
- ENTRY DMKLOKDS @V407510 00122000
- ENTRY DMKLOKCT @V407510 00123000
- ENTRY DMKLOKSI @V407510 00124000
- SPACE 00125000
- EXTRN DMKVMASW SWITCH SEGMENT POINTERS @V407510 00126000
- EXTRN DMKCVTAB ABEND CVT001 @V407510 00127000
- EXTRN DMKSTKSW STACK A PRIORITY CPEXBLOK @VA07402 00128500
- EXTRN DMKDSPRU @VA09257 00128600
- SPACE 00130000
- USING PSA,0 @V407510 00131000
- USING VMBLOK,R11 @V407510 00132000
- USING LOCKWORD,R1 @V407510 00133000
- EJECT 00134000
- * SUBROUTINE NAME - 00135000
- * DMKLOKDF 00136000
- * 00137000
- * FUNCTION - 00138000
- * THE FUNCTION OF THIS ENTRY POINT IS TO HANDLE THE OBTAIN, 00139000
- * SPIN=NO REQUEST FOR A LOCK AND THE ATTEMPT TO OBTAIN THE 00140000
- * LOCK FAILED. 00141000
- * 00142000
- * MACRO CALL FORMAT - 00143000
- * LOCK OBTAIN,TYPE=SYS,SPIN=NO 00144000
- * LOCK OBTAIN,TYPE=VMBLOK,SPIN=NO,OPTION=NOUPDT 00145000
- * LOCK OBTAIN,TYPE=SVMBLOK,SPIN=NO,OPTION=NOUPDT 00146000
- * 00147000
- * ENTRY CONDITIONS - 00148000
- * GPR0 - PROCESSOR ADDRESS 00149000
- * GPR1 - LOCKWORD ADDRESS 00150000
- * GPR14- RETURN ADDRESS 00151000
- * GPR15- ENTRY POINT ADDRESS 00152000
- * 00153000
- * EXIT CONDITIONS - 00154000
- * NORMAL - 00155000
- * CONDITION CODE 1 - LOCK HELD BY OTHER PROCESSOR 00156000
- * 00157000
- * ERROR - 00158000
- * LOK001 ABEND - LOCK ALREADY HELD BY REQUESTING 00159000
- * PROCESSOR 00160000
- * 00161000
- * REGISTER USAGE - 00162000
- * SEE MAIN PROLOGUE 00163000
- * 00164000
- * OPERATION - 00165000
- * 1. IF LOCK ALREADY HELD, ABEND LOK001 00166000
- * 2. IF LOCK NOT ALREADY HELD, SET CC=1 00167000
- * 3. RETURN TO CALLER. 00168000
- * 00169000
- DMKLOKDF DS 0H DEFER OBTAIN ENTRY POINT @V407510 00170000
- USING *,R15 SET UP TEMPORARY ADDRESSABILITY @V407510 00171000
- CH R0,LKPROCA LOCK ALREADY HELD? @V407510 00184000
- BNE VALIDRQ NO, OTHER PROCESSOR OWNS LOCK @V407510 00185000
- LOKAB1 DS 0H ABEND LOK01 @V407510 00186000
- ABEND 01 ABEND LOK01, LOCK ALREADY HELD @V407510 00187000
- VALIDRQ DS 0H UPDATE COUNTER AND SET @V407510 00188000
- * CONDITION CODE @V407510 00189000
- C R1,=A(DMKLOKSY) REQUEST FOR SYSTEM LOCK? @V407510 00190000
- BE UPDSYSCT YES, UPDATE SYSTEM COUNTER @V407510 00191000
- L R1,LOKVMCT COUNT OF VMBLOK DEFERS @VA08310 00192100
- AL R1,F1 PLUS ONE @VA08310 00192200
- ST R1,LOKVMCT @VA08310 00192300
- LCR R0,R0 SET CC=1 @VA08310 00192400
- BR R14 EXIT @VA08310 00192500
- UPDSYSCT DS 0H @V407510 00200000
- L R1,LOKSYSCT COUNT OF SUPVRLOCK DEFERS @VA08310 00201100
- AL R1,F1 PLUS ONE @VA08310 00201200
- ST R1,LOKSYSCT @VA08310 00201300
- LCR R0,R0 SET CC=1 @VA08310 00201400
- BR R14 EXIT @VA08310 00201500
- EJECT 00203000
- * SUBROUTINE NAME - 00204000
- * DMKLOKVM 00205000
- * 00206000
- * FUNCTION - 00207000
- * THE FUNCTION OF THIS ENTRY POINT IS TO HANDLE THE OBTAIN, 00208000
- * SPIN=NO REQUEST FOR A VMBLOK LOCK. 00209000
- * 00210000
- * MACRO CALL FORMAT - 00211000
- * LOCK OBTAIN,TYPE=VMBLOK,SPIN=NO 00212000
- * 00213000
- * ENTRY CONDITIONS - 00214000
- * GPR0 - PROCESSOR ADDRESS 00215000
- * GPR1 - VMBLOK ADDRESS 00216000
- * GPR14- RETURN ADDRESS 00217000
- * GPR15- ENTRY POINT ADDRESS 00218000
- * 00219000
- * EXIT CONDITIONS - 00220000
- * NORMAL - 00221000
- * CONDITION CODE 0 - LOCK OBTAINED 00222000
- * CONDITION CODE 1 - LOCK HELD BY OTHER PROCESSOR 00223000
- * 00224000
- * ERROR - 00225000
- * LOK001 ABEND - LOCK ALREADY HELD BY REQUESTING 00226000
- * PROCESSOR 00227000
- * 00228000
- * REGISTER USAGE - 00229000
- * SEE MAIN PROLOGUE 00230000
- * 00231000
- * OPERATION - 00232000
- * 1. SAVE REGISTERS 00233000
- * 2. ATTEMPT TO OBTAIN LOCK 00234000
- * 3. IF LOCK OBTAINED AND VIRTUAL MACHINE NOT USING 00235000
- * SHARED SYSTEMS OR VIRTUAL MACHINE WAS LAST 00236000
- * DISPATCHED ON THIS PROCESSOR, SET CC=0 AND 00237000
- * GO TO STEP 8. 00238000
- * 4. IF LOCK OBTAINED AND VIRTUAL MACHINE IS USING 00239000
- * SHARED SYSTEMS AND WAS NOT LAST DISPATCHED ON 00240000
- * THIS PROCESSOR, CALL DMKVMASW TO FLIP SHARED 00241000
- * SEGMENT POINTERS, SET CC=0, AND GO TO STEP 8. 00242000
- * 5. IF LOCK ALREADY HELD, ABEND LOK001 00243000
- * 6. IF LOCK NOT ALREADY HELD, SET CC=1, AND 00244000
- * GO TO STEP 8. 00245000
- * 7. RESTORE REGISTERS AND RETURN TO CALLER 00246000
- * 00247000
- DMKLOKVM DS 0H VMBLOK OBTAIN ENTRY POINT @V407510 00248000
- USING *,R15 SET UP TEMPORARY ADDRESSABILITY @V407510 00249000
- ST R14,LOKSAVE+14*4 SAVE R14 @VA08310 00250100
- LH R0,LPUADDR LOAD PROCESSOR ADDRESS @VA08310 00250200
- DROP R11 SWITCH VMBLOK BASE @VA08310 00250300
- USING VMBLOK,R1 @VA08310 00250400
- SR R14,R14 CLEAR FOR CS INSTRUCTION @VA08310 00250500
- C R14,VMLOCK LOCK AVAILABLE? @VA08310 00250600
- BNE LOKDF NO @VA08310 00250700
- CS R14,R0,VMLOCK TRY FOR LOCK @VA08310 00250800
- BZ LOKVM1 OBTAINED LOCK @VA08310 00250900
- LOKDF DS 0H COULD NOT OBTAIN LOCK @VA08310 00251000
- CH R0,VMLOCK+(LKPROCA-LKLOCK) DO WE HOLD LOCK @VA08310 00251100
- BNE LOKDF2 NO @VA08310 00251200
- ST R15,LOKSAVE+15*4 SAVE R15 IN LOKSAVE @VA09066 00251250
- ABEND 1 THIS PROCESSOR OWNS LOCK @VA08310 00251300
- LOKDF2 DS 0H @VA08310 00251400
- L R14,LOKVMCT VMBLOK DEFER TOTAL @VA08310 00251500
- AL R14,F1 PLUS ONE @VA08310 00251600
- ST R14,LOKVMCT @VA08310 00251700
- L R14,LOKSAVE+14*4 RESTORE R14 @VA08310 00251800
- LCR R0,R0 SET CC=1 @VA08310 00251900
- BR 14 EXIT @VA08310 00252000
- LOKVM1 DS 0H @VA08310 00252100
- ST R12,VMLOCKER SAVE R12 OF CALLER FOR DEBUGGING @VA08310 00252200
- TM VMOSTAT,VMSHR RUNNING SHARED SEGMENTS @VA08310 00252300
- BZ LOKCC0 NO @VA08310 00252400
- CLC VMSHRPRC,LPUADDR+1 SHARED SEGS CORRECT? @VA08310 00252500
- BE LOKCC0 YES @VA08310 00252600
- LR R0,R11 SAVE CALLER'S R11 @VA08310 00252700
- LR R11,R1 SET R11 FOR CALL @VA08310 00252800
- CALL DMKVMASW ADJUST SEGMENT TABLE @VA08310 00252900
- LR R11,R0 RESTORE CALLER'S R11 @VA08310 00253000
- LOKCC0 SR R0,R0 SET CC=0 @VA08310 00253100
- L R14,LOKSAVE+14*4 RESTORE R14 @VA08310 00253200
- BR R14 EXIT @VA08310 00253300
- DROP R1 RESTORE VMBLOK BASE @VA08310 00253400
- USING VMBLOK,R11 @VA08310 00253500
- USING LOCKWORD,R1 RESTORE LOCKWORD BASE @VA08310 00253600
- SPACE 1 00253700
- SETCC0 DS 0H @V407510 00272000
- SR R0,R0 SET CONDITION CODE TO ZERO @V407510 00273000
- LOKEXIT DS 0H COMMON EXIT POINT @V407510 00274000
- LM R0,R15,LOKSAVE RESTORE REGISTERS @V407510 00275000
- BR R14 RETURN TO CALLER @V407510 00276000
- EJECT 00277000
- * SUBROUTINE NAME - 00278000
- * DMKLOKSW 00279000
- * 00280000
- * FUNCTION - 00281000
- * THE FUNCTION OF THIS ENTRY POINT IS TO HANDLE THE RELEASE 00282000
- * AND OBTAIN REQUEST FOR VMBLOKS SPECIFIED BY SWTCHVM MACRO 00283000
- * 00284000
- * MACRO CALL FORMAT - 00285000
- * SWTCHVM 00286000
- * SWTCHVM UNLOCK 00287000
- * SWTCHVM STAY 00288000
- * SWTCHVM NOUPDT 00289000
- * SWTCHVM OPT=(STAY,NOUPDT) 00290000
- * 00291000
- * ENTRY CONDITIONS - 00292000
- * GPR0 - OPTION BYTE 00293000
- * GPR1 - VMBLOK ADDRESS TO BE LOCKED 00294000
- * GPR11- VMBLOK ADDRESS TO BE UNLOCKED 00295000
- * GPR14- RETURN ADDRESS 00296000
- * GPR15- ENTRY POINT ADDRESS 00297000
- * SYSTEM LOCK REQUIRED 00297005
- * 00298000
- * EXIT CONDITIONS - 00299000
- * NORMAL - 00300000
- * SWITCH OF VMBLOKS MADE, R11 POINTING TO OLD R1 00301000
- * 00302000
- * CPEXBLOK STACKED TO GIVE CONTROL TO RETURN ADDRESS 00303000
- * 00304000
- * ERROR - 00305000
- * LOK003 ABEND - LOCK NOT HELD BY REQUESTING 00306000
- * PROCESSOR 00307000
- * 00308000
- * REGISTER USAGE - 00309000
- * SEE MAIN PROLOGUE 00310000
- * 00311000
- * OPERATION - 00312000
- * 1. SAVE REGISTERS 00313000
- * 2. IF SVMUNLOK SPECIFIED OR R1 IS LASTUSER OR 00314000
- * R1 IS ASYSVM, GO TO STEP 7. 00315000
- * 3. IF R1 AND R11 ARE THE SAME, RETURN TO CALLER. 00316000
- * 4. TRY TO OBTAIN LOCK FOR R1 USER 00317000
- * 5. IF LOCK OBTAINED BUT DEFERRED TASK PENDING, 00318000
- * RELEASE LOCK AND GO TO STEP 11 00319000
- * 6. IF LOCK OBTAINED, CALL DMKVMASW IF NECESSARY 00320000
- * 7. SWITCH THE TIMER. 00321000
- * 8. IF R11 IS LASTUSER OR ASYSVM, RETURN TO CALLER. 00322000
- * 9. RELEASE LOCK FOR R11. 00323000
- * 10. RETURN TO CALLER. 00324000
- * 11. OBTAIN STORAGE FOR CPEXBLOK AND SET UP TO GIVE 00325000
- * CONTROL TO RETURN ADDRESS. 00326000
- * 12. STACK CPEXBLOK 00327000
- * 13 GO TO LOCKED ENTRY OF DISPATCHER- DMKDSPCH 00328000
- * 00329000
- DMKLOKSW DS 0H SWITCH VMBLOK ENTRY POINT @V407510 00330000
- USING *,R15 SET UP TEMPORARY ADDRESSABILITY @V407510 00331000
- STM R0,R15,LOKSAV2 SAVE REGS IN SWTCHVM SAVE AREA @V4M0193 00332000
- L R12,LOKBASE LOAD COMMON BASE REGISTER @V407510 00333000
- DROP R15 DROP TEMPORARY BASE REG @V407510 00334000
- USING DMKLOK,R12 SET UP COMMON BASE REG @V407510 00335000
- TM LOKSAV2+RG0B3,SVMUNLOK UNLOCK SPECIFIED? @V4M0193 00336000
- BO NOVMA YES, ONLY UNLOCK R11 @V407510 00337000
- CR R1,R11 SAME VMBLOKS SPECIFIED? @V407510 00338000
- BE LKSWEXIT YES, RETURN TO CALLER @V4M0193 00339000
- C R1,LASTUSER R1 = LASTUSER? @V407510 00340000
- BE NOVMA YES, UNLOCK CURRENT R11 @V407510 00341000
- C R1,ASYSVM R1 = SYSTEM VMBLOK? @V407510 00342000
- BE NOVMA YES, UNLOCK CURRENT R11 @V407510 00343000
- LH R0,LPUADDR GET CURRENT PROCESSOR ADDRESS @V407510 00344000
- SLR R14,R14 CLEAR REG FOR C&S @V407510 00345000
- C R14,VMLOCK-VMBLOK(,R1) LOCK AVAILABLE? @V4M0173 00346000
- BNE STACK NO, STACK CPEXBLOK @V4M0173 00347000
- TM VMPEND-VMBLOK(R1),VMDEFSTK DEFERRED TASK? @V4M0173 00348000
- BO STACK YES, STACK A CPEXBLOK @VA07906 00349100
- CS R14,R0,VMLOCK-VMBLOK(R1) TRY TO OBTAIN LOCK @V407510 00350000
- BNZ STACK UNSUCCESSFUL, STACK CPEXBLOK @V407510 00351000
- TM VMPEND-VMBLOK(R1),VMDEFSTK DEFERRED TASK ? @V407510 00352000
- BNO UPDATE NO, CHECK FOR UPDATE @V407510 00353000
- ST R14,VMLOCK-VMBLOK(,R1) FREE LOCK @V4M0173 00354000
- STACK DS 0H STACK CPEXBLOK, LOCK IN USE @V407510 00355000
- C R0,VMLOCK-VMBLOK(R1) LOCK ALREADY HELD? @V4M0231 00356000
- BE LOKAB1 YES, ABEND LOK001 @V4M0231 00357000
- LA R0,CPEXSIZE GET SIZE OF CPEXBLOK @V407510 00358000
- CALL DMKFREE GET STORAGE FOR CPEXBLOK @V407510 00359000
- USING CPEXBLOK,R6 SET UP ADDRESSABILITY @V407510 00360000
- LR R6,R1 SET UP FOR CPEXBLOK @V407510 00361000
- MVC CPEXREGS(RGLN),LOKSAV2 STORE REGS IN CPEXBLOK @V4M0193 00362000
- L R2,CPEXR1 GET OLD REG 1 @V407510 00363000
- ST R2,CPEXR11 MAKE OLD R1 NEW R11 @V407510 00364000
- L R2,CPEXR14 GET OLD R14 @V407510 00365000
- ST R2,CPEXADD RETURN TO CALLER WHEN CPEXBLOK @V407510 00366000
- * IS UNSTACKED @V407510 00367000
- CALL DMKSTKSW STACK A PRIORITY CPEXBLOK @VA07402 00367100
- TM LOKSAV2+RG0B3,SVMSTAY STAY ON THIS PROCESSOR? @V4M0193 00368000
- BNO STKCP NO, RESET PROCESSOR ID @VA07402 00369100
- MVC CPEXPROC,LPUADDR YES, RESET ID TO THIS PROCESSOR@VA07402 00369600
- B DSPXT EXIT TO DISPATCHER @V407510 00371000
- STKCP DS 0H STACK FOR ANY PROCESSOR @V407510 00372000
- XC CPEXPROC,CPEXPROC ZERO PROCESSOR ID @VA07402 00373100
- DSPXT DS 0H DISPATCHER EXIT @V407510 00374000
- L R15,PREFIXB ACCESS OTHER PSA @VA09257 00374100
- TM XCPEND-PSA(R15),XCDISP DISPATCH PENDING @VA09257 00374200
- BZ DSPXT2 NO @VA09257 00374300
- LOCK RELEASE,TYPE=SYS YES, RELEASE SUPV LOCK @VA09257 00374400
- GOTO DMKDSPRU UNLOCKED ENTRY @VA09257 00374500
- DSPXT2 DS 0H @VA09257 00374600
- GOTO DMKDSPCH GO TO LOCKED ENTRY OF DMKDSP @V407510 00375000
- DROP R6 CPEXBLOK NO LONGER NEEDED @V407510 00376000
- UPDATE DS 0H CHECK UPDATE OPTION @V407510 00377000
- L R14,LOKSAV2+REG12 GET R12 VALUE OF CALLER @V4M0193 00378000
- ST R14,VMLOCKER SAVE R12 VALUE @V4M0193 00379000
- ST R14,VMLOCKER-VMBLOK(R1) SAVE R12 VALUE @VA08379 00379010
- TM LOKSAV2+RG0B3,SVMNOUPD NOUPDATE SPECIFIED? @V4M0193 00380000
- BO NOVMA YES,SKIP CALL TO DMKVMASW @VA09782 00381050
- LR R11,R1 SET UP R11 FOR DMKVMA @V407510 00382000
- TM VMOSTAT,VMSHR RUNNING SHARED SYSTEMS? @V407510 00383000
- BZ SWITCH NO, SKIP CALL TO VMA @V407510 00384000
- CLC VMSHRPRC,LPUADDR+ONE POINTING TO CURRENT @V407510 00385000
- * PROCESSOR SEGMENT TABLES? @V407510 00386000
- BE SWITCH YES, SKIP CALL TO DMKVMA @V407510 00387000
- CALL DMKVMASW NO, CALL DMKVMA TO SET UP @V407510 00388000
- * POINTERS FOR CURRENT PROCESSOR @V407510 00389000
- SWITCH DS 0H RESTORE R11 TO INPUT VALUE @V407510 00390000
- L R11,LOKSAV2+RG11 RESTORE R11 @V4M0193 00391000
- NOVMA DS 0H UNLOCK CURRENT R11 USER @V407510 00392000
- CHARGE SWITCH,1 SWITCH THE TIMER @V407510 00393000
- * R11 NOW POINTS TO NEW USER @V407510 00394000
- L R1,LOKSAV2+RG11 SET R1 TO OLD R11 @V4M0193 00395000
- C R1,LASTUSER OLD R11 = LASTUSER? @V407510 00397000
- BE LKSWEXIT YES, RETURN TO CALLER @V4M0193 00398000
- C R1,ASYSVM OLD R11 = SYSTEM VMBLOK? @V407510 00399000
- BE LKSWEXIT YES, RETURN TO CALLER @V4M0193 00400000
- LH R0,LPUADDR GET CURRENT PROCESSOR ADDRESS @V407510 00401000
- LA R1,VMLOCK-VMBLOK(R1) ADDRESS OF LOCKWORD @V407510 00402000
- CH R0,LKPROCA LOCK OWNED BY THIS PROCESSOR? @V407510 00403000
- BNE LOKAB3 NO, ABEND LOK003 @V407510 00404000
- SLR R14,R14 CLEAR REG TO ZERO @V4M0173 00405000
- ST R14,LKLOCK RELEASE VMBLOK LOCK @V4M0173 00406000
- LKSWEXIT DS 0H @V4M0193 00407000
- LM R0,R10,LOKSAV2 @VA08434 00408100
- LM R12,R15,LOKSAV2+REG12 @VA08434 00408200
- BR R14 RETURN TO CALLER @V4M0193 00409000
- LOKAB3 DS 0H @V407510 00410000
- ABEND 03 ABEND LOK003 @V407510 00411000
- EJECT 00412000
- * SUBROUTINE NAME - 00413000
- * DMKLOKSP 00414000
- * 00415000
- * FUNCTION - 00416000
- * THE FUNCTION OF THIS ENTRY POINT IS TO HANDLE THE OBTAIN, 00417000
- * SPIN=YES REQUEST FOR A LOCK AND THE ATTEMPT TO OBTAIN THE 00418000
- * LOCK FAILED. 00419000
- * 00420000
- * MACRO CALL FORMAT - 00421000
- * LOCK OBTAIN,TYPE=XXX,SPIN=YES 00422000
- * 00423000
- * ENTRY CONDITIONS - 00424000
- * GPR0 - PROCESSOR ADDRESS 00425000
- * GPR1 - LOCKWORD ADDRESS 00426000
- * GPR14- RETURN ADDRESS 00427000
- * GPR15- ENTRY POINT ADDRESS 00428000
- * 00429000
- * EXIT CONDITIONS - 00430000
- * NORMAL - 00431000
- * CONDITION CODE 0 - LOCK OBTAINED. 00432000
- * 00433000
- * ERROR - 00434000
- * LOK001 ABEND - LOCK ALREADY HELD BY REQUESTING 00435000
- * PROCESSOR. 00436000
- * 00437000
- * REGISTER USAGE - 00438000
- * SEE MAIN PROLOGUE 00439000
- * 00440000
- * OPERATION - 00441000
- * 1. SAVE REGS IN LOKSAVE 00442000
- * 2. ESTABLISH COMMON ADDRESSABILITY 00443000
- * 3. IF LOCK ALREADY OWNED, ABEND LOK001 00444000
- * 4. IF REQUEST FOR SYSTEM LOCK, SET CPSYSLK 00445000
- * AND CPLOKFL. 00446000
- * 5. CALL LOKSPIN 00447000
- * 6. CLEAR CPSYSLK IF REQUEST WAS FOR SYSTEM LOCK. 00448000
- * 7. SET CONDITION CODE = 0 00449000
- * 8. RESTORE REGS 00450000
- * 9. RETURN TO CALLER 00451000
- * 00452000
- * 00453000
- DMKLOKSP DS 0H SPIN OBTAIN ENTRY POINT @V407510 00454000
- USING *,R15 SET UP TEMPORARY ADDRESSABILITY @V407510 00455000
- STM R0,R15,LOKSAVE SAVE REGISTERS IN PSA @V407510 00456000
- L R12,LOKBASE LOAD COMMON BASE REGISTER @V407510 00457000
- DROP R15 DROP TEMPORARY BASE REG @V407510 00458000
- USING DMKLOK,R12 SET UP COMMON BASE REG @V407510 00459000
- CH R0,LKPROCA LOCK ALREADY OWNED? @V407510 00460000
- BE LOKAB1 YES, ABEND LOK01 @V407510 00461000
- C R1,=A(DMKLOKSY) REQUEST FOR SYSTEM LOCK? @V407510 00462000
- BNE LOKSPIN0 NO, SKIP FLAG SETTINGS @V407510 00463000
- OI APSTAT4,CPLOKFL INDICATE ENABLING FOR EXTERNAL @VA07615 00464100
- * INTERRUPTS @V4M0173 00465000
- L R14,PREFIXB GET OTHER PROC PREFIX ADDRESS @V4M0173 00466000
- OI APSTAT3-PSA(R14),CPSYSLK TELL OTHER PROC'R THE @VA07615 00467000
- * SYSTEM LOCK IS NEEDED @V4M0173 00468000
- BAL R14,LOKSPIN BRANCH TO SPIN ROUTINE @V407510 00469000
- MVC LKLOCKER,LOKSAVE+REG12 SAVE LOCKER R12 @V407510 00470000
- L R14,PREFIXB GET OTHER PROC PREFIX ADDRESS @V4M0173 00471000
- NI APSTAT3-PSA(R14),X'FF'-CPSYSLK TURN OFF FLAG @VA07615 00472000
- * IN OTHER PROCESSOR'S PSA @V4M0173 00473000
- B SETCC0 BRANCH TO SET CONDITION CODE 0 @V407510 00474000
- LOKSPIN0 DS 0H @V407510 00475000
- BAL R14,LOKSPIN BRANCH TO SPIN ROUTINE @V407510 00476000
- L R14,LOKSAVE+REG12 GET R12 VALUE OF CALLER @V4M0173 00477000
- ST R14,LKLOCKER SAVE R12 VALUE @V4M0173 00478000
- B SETCC0 BRANCH TO SET CONDITION CODE 0 @V407510 00479000
- EJECT 00480000
- * SUBROUTINE NAME - 00481000
- * DMKLOKPS 00482000
- * 00483000
- * FUNCTION - 00484000
- * THE FUNCTION OF THIS ENTRY POINT IS TO HANDLE ALL SPIN 00485000
- * REQUESTS FOR THE SYSTEM. 00486000
- * 00487000
- * ENTRY CONDITIONS - 00488000
- * CALLED BY DMKDSP FOR EXTEND PROCESSING 00489000
- * CALLED BY DMKMCT FOR SYSTEM TERMINATION 00490000
- * 00491000
- * GPR0 - CONDITION FOR END-OF-SPIN 00492000
- * GPR1 - SPIN LOCKWORD ADDRESS 00493000
- * GPR15- ENTRY POINT ADDRESS 00494000
- * 00495000
- * EXIT CONDITIONS - 00496000
- * ERROR - 00497000
- * 00498000
- * REGISTER USAGE - 00499000
- * SEE MAIN PROCESSOR. 00500000
- * 00501000
- * OPERATION - 00502000
- * 1. SAVE REGS IN LOKSAVE 00503000
- * 2. ESTABLISH COMMON ADDRESSABILITY 00504000
- * 3. IF SPINNING ON EXTEND INDICATOR, SET CPLOKFL. 00505000
- * 4. CALL LOKSPIN 00506000
- * 5. RESTORE REGS 00507000
- * 6. RETURN TO CALLER. 00508000
- * 00509000
- DMKLOKPS DS 0H PROCESSOR SPIN ENTRY POINT @V407510 00510000
- USING *,R15 SET UP TEMPORARY ADDRESSABILITY @V407510 00511000
- STM R0,R15,LOKSAVE SAVE REGISTERS IN PSA @V407510 00512000
- L R12,LOKBASE LOAD COMMON BASE REGISTER @V407510 00513000
- DROP R15 DROP TEMPORARY BASE REG @V407510 00514000
- USING DMKLOK,R12 SET UP COMMON BASE REG @V407510 00515000
- L R2,PREFIXA GET OWN PREFIX REG @V407510 00516000
- LA R2,XTNDLOCK-PSA(,R2) ADDR OF EXTEND LOCK @V407510 00517000
- LA R3,0(,R1) CLEAR HIGH ORDER BYTE @V407510 00518000
- CR R2,R3 SPINNING ON EXTEND LOCK? @V407510 00519000
- BNE LOKSPIN0 NO, DO NOT SET FLAG @V407510 00520000
- OI APSTAT4,CPLOKFL SET SPECIAL LOK INDICATOR @VA07615 00521100
- B LOKSPIN0 JOIN COMMON CODE TO CALL SPIN @V407510 00522000
- EJECT 00523000
- * SUBROUTINE NAME - 00524000
- * LOKSPIN - 00525000
- * 00526000
- * FUNCTION - 00527000
- * THE FUNCTION OF THIS ENTRY POINT IS TO SPIN ON A 00528000
- * PARTICULAR CONDITION. A WINDOW MUST BE OPENED DURING THE 00529000
- * SPIN TO ALLOW MALFUNCTION ALERT AND EMERGENCY INTERRUPT 00530000
- * SIGNALS TO BE RECEIVED. 00531000
- * 00532000
- * NOTE: 00533000
- * LOKSAVE + 24 IS USED AS A DATAAREA SO THAT THIS ROUTINE 00534000
- * IS REENTRANT. REGS 6-9 ARE NOT USED IN THIS ROUTINE OR 00535000
- * DMKLOKPS OR DMKLOKSP. 00536000
- * REGS6-9 ARE RESTORED IN LOKSAVE BEFORE EXITING SO THAT 00537000
- * COMMON EXIT LOGIC CAN BE USED. 00538000
- * 00539000
- * ENTRY CONDITIONS - 00540000
- * GPR 0 - CONDITION TO END SPIN 00541000
- * GPR 1 - SPIN LOCKWORD ADDRESS 00542000
- * GPR14- RETURN ADDRESS 00543000
- * GPR15- ENTRY POINT ADDRESS 00544000
- * 00545000
- * EXIT CONDITIONS - 00546000
- * ERROR - 00547000
- * CVT001 ABEND - STCK FAILED 00548000
- * 00549000
- * REGISTER USAGE - 00550000
- * SEE MAIN PROLOGUE. 00551000
- * 00552000
- * OPERATIONS - 00553000
- * 1. ESTABLISH TRACE ENTRY 00554000
- * 2. START TIMER. 00555000
- * 3. IF SPIN CONDITION SATISFIED, GOTO STEP 9. 00556000
- * IF SPINNING FOR A LOCK, C&S LOCKWORD. 00557000
- * IF SPINNING ON A BYTE, COMPARE BYTE WITH 00558000
- * VALUE IN REGISTER 0. 00559000
- * 4. OPEN WINDOW FOR MFA. 00560000
- * 5. CLOSE WINDOW FOR MFA. 00561000
- * 6. IF SPINNING ON SYSTEM LOCK, OPEN WINDOW 00562000
- * FOR EMERGENCY SIGNAL. 00563000
- * CLOSE WINDOW FOR EMERGENCY SIGNAL. 00564000
- * 7. GOTO STEP 4. 00565000
- * 8. TURN OFF CPLOKFL. 00566000
- * 9. CALCULATE TIME SPENT SPINNING. 00567000
- * 10. RETURN TO CALLER. 00568000
- * 00569000
- LOKSPIN DS 0H COMMON SPIN ROUTINE @V407510 00570000
- AIF (NOT &TRACE(9)).TR1 00571000
- TM TRACFLG2,TRAC12 TRACING ACTIVE? @V407510 00572000
- BZ NOTRACE NO, SKIP TRACING @V407510 00573000
- TRACE CODE=TRCLOK,R2,R3,R4 @V407510 00574000
- USING TRACE,R2 SET UP ADDRESSABILITY FOR TRACE @V407510 00575000
- * ENTRY @V407510 00576000
- MVC TRACEVM(AL3),LOKSAVE+REG11B1 R11 VALUE UPON @V407510 00577000
- * ENTRY @V407510 00578000
- ST R1,TRACELKW LOCKWORD ADDRESS @V407510 00579000
- MVC TRACERTN,LOKSAVE+REG14B0 RETURN ADDRESS OF @V407510 00580000
- * REQUESTOR @V407510 00581000
- MVC TRACELK,0(R1) CONTENTS OF LOCKWORD @V407510 00582000
- NOTRACE DS 0H @V407510 00583000
- .TR1 ANOP 00584000
- STCK LOKTIMER STORE CLOCK TO TIME SPIN @V407510 00585000
- BC CLKBAD,CLOCKBAD BRANCH IF CLOCK SICK @V407510 00586000
- MVC LOKCTLRG,CPCREG0 USE CONTROL REG 0 @V4M0173 00587000
- XC MPMASK(LN2),MPMASK TURN OFF ALL MP MASKS @V407510 00588000
- TM APSTAT4,CPLOKFL OPENING WINDOW FOR EMS & MFA @VA07615 00589100
- BNO ENMFA NO, SKIP EMERGENCY SIGNAL @V407510 00590000
- OI MPMASK,EMSMASK ENABLE FOR EMERGENCY SIGNAL @V407510 00591000
- ENMFA DS 0H @V407510 00592000
- OI MPMASK,MFAMASK ENABLE FOR MALFUNCTION ALERT @V407510 00593000
- LCTL C0,C0,LOKCTLRG ENABLE FOR MFA ( & EMS ) @V407510 00594000
- LA R2,LPCTL SET UP LOOP CONTROL @V407510 00595000
- SPINLOOP DS 0H LOOP FOR SPINNING @V407510 00596000
- LTR R1,R1 SPINNING ON BYTE? @V407510 00597000
- BM SPINBYTE YES, BRANCH @V407510 00598000
- SR R3,R3 CLEAR REGISTER FOR C&S @V407510 00599000
- C R3,0(,R1) LOCK AVAILABLE? @V4M0160 00600000
- BNE WINDOW NO, CONTINUE SPIN @V4M0160 00601000
- CS R3,R0,0(R1) TRY TO OBTAIN LOCK @V407510 00602000
- BZ SPINEND SUCCESSFUL, END SPIN @V407510 00603000
- WINDOW DS 0H OPEN WINDOW @V407510 00604000
- BCT R2,SPINLOOP ONLY OPEN WINDOW EVERY SO OFTEN @V407510 00605000
- STOSM SYSMASK,EXTINT ENABLE FOR EXTERNALS @V407510 00606000
- STNSM SYSMASK,OFF-EXTINT DISABLE FOR EXTERNALS @V407510 00607000
- LA R2,LPCTL RESET LOOP CONTROL @V407510 00608000
- B SPINLOOP LOOP UNTIL LOCK OBTAINED @V407510 00609000
- SPINBYTE DS 0H SPINNING ON A BYTE @V407510 00610000
- CLC 0(ONE,R1),LOKSAVE+RG0B3 READY TO STOP @V407510 00611000
- * SPINNING @V407510 00612000
- BNE WINDOW NO, LOOP @V407510 00613000
- SPINEND DS 0H FINISHED SPINNING @V407510 00614000
- LA R1,0(,R1) GET GOOD ADDRESS OF LOCKWORD @V407510 00615000
- LCTL C0,C0,CPCREG0 RESET CREG 0 @V407510 00616000
- LM R2,R3,LOKTIMER LOAD TIMER VALUE INTO REGS @V407510 00617000
- STCK LOKTIMER GET NEW TIMER VALUE @V407510 00618000
- BC CLKBAD,CLOCKBAD BRANCH IF CLOCK SICK @V407510 00619000
- LM R4,R5,LOKTIMER LOAD TIMER VALUE INTO REGS @V407510 00620000
- SRDL R2,BIT51 SHIFT TO MICROSECONDS @V405510 00621000
- SRDL R4,BIT51 SHIFT TO MICROSECONDS @V405510 00622000
- SLR R5,R3 GET ELAPSED TIME @V407510 00623000
- C R1,LOCKSBEG LOCKWORD IN DMKLOK? @V407510 00624000
- BL SPECLOCK NO, USE SPECIAL TIMER @V407510 00625000
- C R1,LOCKSEND LOCKWORD IN DMKLOK? @V407510 00626000
- BNH UPTIMER YES, UPDATE TIMER @V407510 00627000
- SPECLOCK DS 0H @V407510 00628000
- LA R1,DMKLOKSI USE COMMON TIMER ACCUMULATOR @V407510 00629000
- UPTIMER DS 0H @V407510 00630000
- A R5,LKTIMER ADD PREVIOUS ACCUMULATED TIME @V407510 00631000
- ST R5,LKTIMER STORE TOTAL SPIN TIME @V407510 00632000
- L R2,COUNTER LOAD COUNT OF SPINS @V407510 00633000
- LA R2,ONE(,R2) INCREMENT COUNTER BY ONE @V407510 00634000
- ST R2,COUNTER STORE NEW COUNT @V407510 00635000
- NI APSTAT4,X'FF'-CPLOKFL TURN OFF CPLOKFL @VA07615 00636100
- STM R6,R9,SPECSAVE RESTORE LOKSAVE TO INPUT REGS @V407510 00637000
- BR R14 RETURN TO CALLER @V407510 00638000
- CLOCKBAD DS 0H STCK FAILED @V407510 00639000
- GOTO DMKCVTAB ABEND @V407510 00640000
- EJECT 00641000
- * DATA AREAS AND EQUATES 00642000
- * 00643000
- ***************************************************************@V407510 00644000
- * @V407510 00645000
- * THE FOLLOWING AREAS ARE DEFINED ON LOKSAVE+24 @V407510 00646000
- * THE ACTUAL EQUATES ARE FOLLOWING THE PSA @V407510 00647000
- * @V407510 00648000
- *LOKTIMER DC 1D'0' TIMER VALUE FOR SPINNING @V407510 00649000
- *LOKCTLRG DC 1F'0' SAVE CONTROL REG 0 @V407510 00650000
- *MPMASK EQU LOKCTLRG+2 MASK FOR MP OPERATIONS @V407510 00651000
- *SYSMASK DC X'00' SYSTEM MASK FROM STOSM & STNSM @V407510 00652000
- *SPECSAVE DC 4F SAVE REGS 6-9 @V407510 00653000
- * @V407510 00654000
- ***************************************************************@V407510 00655000
- LOKBASE DC A(DMKLOK) COMMON BASE REGISTER FOR DMKLOK @V407510 00656000
- SPACE 2 00657000
- ***************************************************************@V407510 00658000
- LOCKSBEG DC A(*) BEGINNING OF LOCKWORDS @V407510 00659000
- DMKLOKSY DC 4F'0' SYSTEM LOCKWORD @V407510 00660000
- DMKLOKFR DC 4F'0' DMKFRE LOCKWORD @V407510 00661000
- DMKLOKRL DC 4F'0' RUNLIST LOCKWORD @V407510 00662000
- DMKLOKTR DC 4F'0' TIMER REQUEST LOCKWORD @V407510 00663000
- DMKLOKDS DC 4F'0' DISPATCHER QUEUES LOCKWORD @V407510 00664000
- LOCKSEND DC A(*) END OF LOCKWORDS @V407510 00665000
- DMKLOKSI DC 4F'0' SPIN INDICATOR LOCKWORD @V407510 00666000
- * COUNTER AND TIMER WILL BE USED @V407510 00667000
- * TO ACCUMULATE TIME SPINNING FOR @V407510 00668000
- * DMKLOKPS ENTRIES FOR BYTE @V407510 00669000
- * MANIPULATIONS AND DMKLOKSP @V407510 00670000
- * ENTRIES FOR NON DMKLOK LOCKS @V407510 00671000
- ***************************************************************@V407510 00672000
- DMKLOKCT DC 2F'0' COUNTERS FOR MONITOR @V407510 00673000
- LOKSYSCT EQU DMKLOKCT COUNT OF SYSTEM LOCK DEFERS @V407510 00674000
- LOKVMCT EQU DMKLOKCT+4 COUNT OF VMBLOK LOCK DEFERS @V407510 00675000
- EJECT 00676000
- * EQUATES @V407510 00677000
- SPACE 2 00678000
- EXTINT EQU X'01' EXTERNAL INTERRUPT MASK IN PSW @V407510 00679000
- WS014 EQU X'14' 014 WAIT STATE @V407510 00680000
- BIT51 EQU 63-51 SHIFT VALUE TO GET BIT 51 IN @V407510 00681000
- * BIT POSITION 31 OF FULLWORD @V407510 00682000
- * BIT51 OF CLOCK IS 1 MICROSECOND @V407510 00683000
- THISPROC EQU 1 CURRENT PROCESSOR ADDRESS @V407510 00684000
- HIGHBYTE EQU 8 MASK FOR HIGH ORDER BYTE @V407510 00685000
- REG0B3 EQU 11 MASK IS IN LOW BYTE OF @V407510 00686000
- * ORIGINAL REG 0 @V407510 00687000
- OFF EQU X'FF' MASK TO TURN OFF CPSYSLK @V407510 00688000
- REG11B1 EQU 11*4+1 REG11 UPON ENTRY @V407510 00689000
- REG14B0 EQU 14*4 REG14 UPON ENTRY @V407510 00690000
- REG12 EQU 12*4 REG 12 UPON ENTRY @V407510 00691000
- AL3 EQU 3 LENGTH OF 3 BYTE ADDRESS AREA @V407510 00692000
- ONE EQU 1 INCREMENT OR LENGTH OF 1 @V407510 00693000
- ZERO EQU 0 @V407510 00694000
- RG0B3 EQU 3 STOP BYTE SPIN @V407510 00695000
- LN2 EQU 2 2 BYTES OF CREG0 FOR MP MASKS @V407510 00696000
- LPCTL EQU 10 LOOP CONTROL FOR OPENING WINDOW @V407510 00697000
- CLKBAD EQU 3 BRANCH MASK FOR STCK @V407510 00698000
- * CC=0 & CC=1 OK @V407510 00699000
- RG11 EQU 11*4 DISPLACEMENT FOR REG11 @V407510 00700000
- RGLN EQU 16*4 LENGTH OF SAVEAREA @V407510 00701000
- EJECT 00702000
- * LOCKWORD DSECT @V407510 00703000
- LOCKWORD DSECT @V407510 00704000
- LKLOCK DS 1F ADDR OF PROCESSOR HOLDING LOCK @V407510 00705000
- LKPROCA EQU LKLOCK+2 PROCESSOR ADDRESS ONLY HALFWORD @V407510 00706000
- LKLOCKER DS 1F R12 VALUE OF ROUTINE THAT @V407510 00707000
- * OBTAINED LOCK @V407510 00708000
- LKTIMER DS 1F TIME SPENT SPINNING ON LOCK @V407510 00709000
- COUNTER DS 1F TOTAL NUMBER OF SPINS FOR LOCK @V407510 00710000
- SPACE 3 00711000
- * TRACE ENTRY DSECT @V407510 00712000
- TRACE DSECT @V407510 00713000
- TRACEID DS 1X ENTRY IDENTIFIER @V407510 00714000
- TRACEVM DS AL3 R11 ADDRESS UPON ENTRY TO DMKLOK @V407510 00715000
- TRACELKW DS 1F LOCKWORD ADDRESS @V407510 00716000
- TRACERTN DS 1F RETURN ADDRESS OF REQUESTOR @V407510 00717000
- TRACELK DS 1F CONTENTS OF LOCKWORD @V407510 00718000
- EJECT 00719000
- PSA 00720000
- ***************************************************************@V407510 00721000
- * @V407510 00722000
- * REGS 6-9 ARE NOT DESTROYED FOR DMKLOKPS AND @V407510 00723000
- * DMKLOKSP ENTRIES. LOKSAVE + 24 FOR 4 WORDS IS @V407510 00724000
- * USED AS AN INTERNAL WORK AREA @V407510 00725000
- LOKTIMER EQU LOKSAVE+4*6 TIMER VALUE FOR SPINNING @V407510 00726000
- LOKCTLRG EQU LOKSAVE+4*8 SAVE CONTROL REG 0 @V407510 00727000
- MPMASK EQU LOKCTLRG+2 MASK FOR MP OPERATIONS @V407510 00728000
- SYSMASK EQU LOKSAVE+4*9 SYSTEM MASK FROM STOSM & STNSM @V407510 00729000
- SPECSAVE EQU LOKSAVE+6*4 SAVE REGS 6-9 @V407510 00730000
- * 00731000
- ***************************************************************@V407510 00732000
- COPY EQU @V407510 00733000
- COPY VMBLOK @V407510 00734000
- COPY SAVE @V407510 00735000
- END 00736000
ibm/vm370-lib/cp/dmklok.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator