ibm:vm370-lib:cp:dmkapi.assemble_src
Table of Contents
DMKAPI Source
References
- Fixes Applied : 10
- This Source Date : Wednesday, December 13, 1978
- Last Fix ID : [HRC008DK]
Source Listing
- DMKAPI.ASSEMBLE.txt
- API TITLE 'DMKAPI (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
- * 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKAPI 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * READY THE ATTACHED PROCESSOR FOR SYSTEM USE. 00010000
- * 00011000
- * ATTRIBUTES - 00012000
- * 00013000
- * NON-REUSABLE, PAGEABLE, ENTERED VIA SVC FROM DMKCPI. 00014000
- * 00015000
- * ENTRY POINTS - 00016000
- * 00017000
- * DMKAPIPR - PERFORM MAIN PROCESSOR INITIALIZATION TO 00018000
- * SUPPORT THE APU. 00019000
- * 00020000
- * DMKAPIAP - PERFORM ATTACHED PROCESSOR INITIALIZATION. 00021000
- * ENTERED VIA SIGP PSW RESTART FROM DMKAPIPR. 00022000
- * 00023000
- * ENTRY CONDITIONS - 00024000
- * 00025000
- * GPR1 - POINTER TO ADDRESSES OF REAL PSA'S (VALUES TO BE 00026000
- * INSERTED IN PREFIXA AND PREFIXB). 00027000
- * GPR12 - DMKAPI ENTRY POINT ADDRESS. 00028000
- * GPR13 - SAVEAREA ADDRESS. 00029000
- * 00030000
- * EXIT CONDITIONS - 00031000
- * 00032000
- * NORMAL - DMKAPIPR RETURNS TO DMKCPI VIA SVC. 00033000
- * DMKAPIAP LOADS AN ENABLED WAIT STATE PSW. 00034000
- * 00035000
- * ERROR - LOAD DISABLED WAIT STATE PSW. 00036000
- * 00037000
- * CALLS TO OTHER ROUTINES - 00038000
- * 00039000
- * DMKIOGAP - INITIALIZE CR15 ON APU FOR EXTENDED LOGOUT. 00040000
- * DMKLOKSP - OBTAIN SYSTEM LOCK. 00041000
- * DMKLOKVM - OBTAIN VMBLOK LOCK. 00042000
- * DMKPTRAN - BRING IN AND LOCK DMKIOGAP. 00043000
- * DMKPTRUL - UNLOCK DMKIOGAP. 00044000
- * DMKQCNWT - WRITE MESSAGES TO OPERATOR. 00045000
- * 00046000
- * EXTERNAL REFERENCES - 00047000
- * 00048000
- * DMKFREAP - PTR TO FREE STORAGE. 00049000
- * DMKPRGIN - ADDRESS OF PROGAM CHECK FLIH. 00050000
- * DMKPSADU - ADDRESS OF SYSTEM RESTART ROUTINES. 00051000
- * DMKSVCIN - ADDRESS OF SVC FLIH. 00052000
- * DMKCPEML - MAIN PROCESSOR CP ASSIST LEVEL @V5DAACD 00052100
- * 00053000
- * TABLES/WORK AREAS - 00054000
- * 00055000
- * PSA,VMBLOK 00056000
- * 00057000
- * MACROS - 00058000
- * 00059000
- * TRANS, CALL, LOCK OBTAIN 00060000
- * 00061000
- * REGISTER USAGE - 00062000
- * 00063000
- * R11 - VMBLOK ADDRESS 00064000
- * R12 - BASE REGISTER 00065000
- * R13 - SAVEAREA ADDRESS 00066000
- * 00067000
- * NOTES - 00068000
- * 00069000
- * NONE 00070000
- * 00071000
- * OPERATION - MAIN PROCESSOR (DMKAPIPR) 00072000
- * 00073000
- * 1. MOVE COMMON PSA FIELDS IN ABSOLUTE 0 TO STORAGE DEFINED 00074000
- * BY PREFIXA AND PREFIXB. INITIALIZE AP DATA. 00075000
- * 2. LOCK DMKIOG. 00076000
- * 3. PSW RESTART THE APU AT DMKAPIAP AND SPIN UNTIL THE 00077000
- * ROUTINE COMPLETES APU INITIALIZATION. 00078000
- * 4. CHECK IF THE INTERVAL TIMER IS RUNNING ON THE APU. 00079000
- * 5. SET THE PREFIX REGISTER TO PREFIXA AND INITIALIZE 00080000
- * THE CONTROL REGISTERS FOR THE MAIN PROCESSOR. 00081000
- * 6. OBTAIN THE SYSTEM AND VMBLOK LOCKS. 00082000
- * 7. UNLOCK DMKIOG AND RETURN TO DMKCPI. 00083000
- * 00084000
- * OPERATION - ATTACHED PROCESSOR (DMKAPIAP) 00085000
- * 00086000
- * 1. RESTORE TRACSTRT AND RSTNPSW IN ABSOLUTE 0 (DESTROYED 00087000
- * BY THE SIGP RESTART). 00088000
- * 2. SET THE CLOCK COMPARATOR AND CPU TIMER. 00089000
- * 3. LOAD CR'S FOR THE APU AND THE PREFIX REGISTER FROM OLD 00090000
- * PREFIXB (NOW IS PREFIXA). 00091000
- * 4. CALL DMKIOGAP TO INITIALIZE CR15 FOR EXTENDED LOGOUT. 00092000
- * 4.1 TEST CP ASSIST AVAILABILITY. @V5DAACD 00092100
- * 5. TEST FOR VM ASSIST AVAILABILITY ON THE APU. 00093000
- * 6. RESET PSA FIELDS THAT MAY HAVE BEEN USED DURING 00094000
- * INITIALIZATION BUT DO NOT REFLECT APU STATUS. 00095000
- * 7. SET THE CPUID OF THE APU 00096000
- * 8. LOAD AN ENABLE WAIT STATE PSW. 00097000
- * 00098000
- * ERROR MESSAGES - 00099000
- * 00100000
- * NONE. 00101000
- * 00102000
- * GENERAL MESSAGES - 00103000
- * 00104000
- * TURN ON THE ATTACHED PROCESSOR'S INTERVAL TIMER 00105000
- * 00106000
- * WAIT STATE CODES - 00107000
- * 00108000
- * 15 - SIGP RESTART FAILED. 00109000
- * 00110000
- EJECT 00111000
- DMKAPI CSECT @V407595 00112000
- COPY OPTIONS @V407595 00113000
- N0 EQU 0 @V407595 00114000
- DC CL8'DMKAPI' @V4M0106 00115000
- N1 EQU 1 @V407595 00116000
- N2 EQU 2 @V407595 00117000
- N4 EQU 4 @V407595 00118000
- N8 EQU 8 @V407595 00119000
- L8 EQU 8 @V407595 00120000
- N12 EQU 12 @V407595 00121000
- N16 EQU 16 @V407595 00122000
- FF EQU X'FF' @V407595 00123000
- CONDCODE EQU X'08' TO STCM CC IN WAIT PSW @V407595 00124000
- PROCAPU EQU X'40' TRACE TABLE ID OF THE APU @V407595 00125000
- EJECT 00126000
- EXTRN DMKPRGIN @V407595 00127000
- EXTRN DMKPSADU @V407595 00128000
- EXTRN DMKPTRUL @V407595 00129000
- EXTRN DMKSVCIN @V407595 00130000
- EXTRN DMKQCNWT @V407595 00131000
- EXTRN DMKIOGAP @V407595 00132000
- EXTRN DMKCPEML @V5DAACD 00132100
- USING SAVEAREA,R13 @V407595 00133000
- DMKAPIPR RELOC @V407595 00134000
- USING PSA,R0 @V407595 00135000
- MVC APIWORK,ZEROES CLEAR FLAG AND WORK AREA @V407595 00136000
- MVC SAVEWRK2(8),0(R1) SAVE ADDRESSES OF PSA'S @VA09386 00137100
- L R1,APIIOGAP OBTAIN VIRT ADDR OF DMKIOGAP @VA09386 00137200
- * THIS ROUTINE MUST BE LOADED AND LOCKED 00137300
- * WHEN IT IS INVOKED ON THE ATTACHED PROCESSOR. 00137400
- TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK) LOCK DMKIOGAP @VA09386 00137500
- ST R2,REALSAVE SAVE REAL ADDRESS OF DMKIOGAP @VA09386 00137600
- SR R14,R14 MVCL FROM ADDRESS IS 0 @V407595 00144000
- L R15,F4096 MVCL FROM LENGTH IS PAGE SIZE @V407595 00145000
- L R2,SAVEWRK3 MVCL TO ADDR - APU'S PSA @VA09386 00146100
- LR R3,R15 MVCL TO LENGTH IS PAGE SIZE @V407595 00147000
- MVCL R2,R14 MOVE ABSOLUTE 0 TO PREFIX AREA @V407595 00148000
- * 00149000
- * INITIALIZE THE ATTACHED PROCESSOR'S PSA SO THAT IPUADDR, 00150000
- * LPUADDR, AND PREFIXA, CORRESPOND TO THE ATTACHED PROCESSOR 00151000
- * UNIT ADDRESSES AND PSA RESPECTIVELY. IPUADDRX,LPUADDRX, 00152000
- * AND PREFIXB WILL CORRESPOND TO THE MAIN PROCESSOR CPU 00153000
- * ADDRESSES AND PSA RESPECTIVELY. 00156100
- * 00157000
- L R2,SAVEWRK3 GET ATTACHED PSA @VA09386 00158100
- SR R1,R1 ZERO A REGISTER @VA07568 00159000
- ST R1,ACTIVTRQ(R2) ZERO OUT ACTIVE TRQ POINTER @VA07568 00160000
- MVI APSTAT4-PSA(R2),X'00' CLEAR MCHCHK BIT AND THE @VA08614 00161000
- * REST OF THE BYTE 00162000
- MVC IPUADDR-PSA(N2,R2),IPUADDRX SET PHYSICAL CPU @V407595 00163000
- * ADDR OF APU IN ATTACHED PROCESSOR'S PSA 00164000
- * (PREFIXB) 00165000
- MVC IPUADDRX-PSA(N2,R2),IPUADDR SET PHYSICAL CPU @V407595 00166000
- * ADDR OF MAIN PROC IN ATTACHED PROCESSOR'S 00167000
- * PSA (PREFIXB) 00168000
- MVC LPUADDR-PSA(N2,R2),LPUADDRX SET LOGICAL CPU @V407595 00169000
- * ADDR OF APU IN ATTACHED PROCESSOR'S PSA 00170000
- * (PREFIXB) 00171000
- MVC LPUADDRX-PSA(N2,R2),LPUADDR SET LOGICAL CPU @V407595 00172000
- * ADDR OF MAIN PROC IN ATTACHED PROCESSOR'S 00173000
- * PSA (PREFIXB) 00174000
- MVC PREFIXB-PSA(N4,R2),SAVEWRK2 SET ADDRESS OF MAIN @VA09386 00175100
- * PROCESSOR'S PSA IN ATTACHED PROCESSOR'S 00176000
- * PSA (PREFIXB). THIS PERMITS CROSS 00177000
- * REFERENCING OF PSA'S 00178000
- MVC PREFIXA-PSA(N4,R2),SAVEWRK3 ADDRESS OF ATTACHED @VA09386 00179100
- * PSA IN ATTACHED PROCESSOR'S PSA (PREFIXB) 00180000
- * THIS PERMITS REFERENCES TO ABSOLUTE 0. 00181000
- STCTL C1,C14,BALR1 SAVE CR'S FOR APU TO RESTORE @V407595 00190000
- * NOTE CR0 IS RESTORED FROM CR0INTAP 00191000
- LM R1,R2,RESTAP LOAD PSW TO RESTART ON ATTACHED @VMH0013 00192000
- * PROCESSOR 00193000
- TM APSTAT4,POFFLINE IS VARY PROCESSING ACTIVE? @VMH0013 00194000
- BNO STRSTNEW NO, BRANCH @VMH0013 00195000
- L R15,ASYSVM GET SYSTEM VMBLOK ADDRESS @VMH0013 00196000
- L R14,SAVEWRK3 ATTACHED PSA ADDRESS @VA09386 00197100
- ST R15,LASTUSER-PSA(R14) SET LASTUSER TO ASYSVM @VMH0031 00198000
- ST R15,RUNUSER-PSA(R14) SET RUNUSER TO ASYSVM @VMH0031 00199000
- MVC TIMER-PSA(N4,R14),FFS SET ATTACHED PROCESSOR'S @VMH0031 00200000
- * INTERVAL TIMER TO A HIGH NEGATIVE 00201000
- * NUMBER. THIS WILL PREVENT AN INTERVAL 00202000
- * TIMER INTERRUPT FROM OCCURING ON THE 00203000
- * ATTACHED PROCESSOR BEFORE THE SYSTEM 00204000
- * IS FULLY INITIALIZED FOR AP MODE. 00205000
- LCTL C1,C1,VMSEG-VMBLOK(R15) USE SYSTEM CTRL REG 1 @VMH0013 00206000
- LRA R2,0(0,R2) GET REAL ADDRESS OF ROUTINE @VMH0013 00207000
- LCTL C1,C1,BALR1 RESTORE CONTROL REGISTER 1 @VMH0013 00208000
- STRSTNEW DS 0H @VMH0013 00209000
- STM R1,R2,RSRTNPSW SET RESTART NEW TO RESTART THE @VMH0013 00210000
- * ATTACHED PROCESSOR @VMH0013 00211000
- SIGPREST EQU * @V407595 00212000
- ST R12,TEMPSAVE SAVE BASE REG FOR DMKAPIAP/IT @V407595 00213000
- L R0,SAVEWRK3 GET ATTACHED PSA ADDRESS @VA09386 00213100
- ST R0,TEMPSAVE+4 SAVE THE ADDRESS FOR DMKAPIAP @VA09386 00213200
- LA R0,SIGREST SAVE SIGP ORDER IN CASE OF ERROR @V407595 00214000
- SR R1,R1 CLEAR SIGP STATUS REGISTER @V407595 00215000
- LH R2,IPUADDRX ADDRESS OF APU FOR SIGP RESTART @V407595 00216000
- SIGP R1,R2,SIGREST PSW RESTART THE APU @V407595 00217000
- BC 7,APERROR SHOULD ONLY RECEIVE CC=0, ELSE @V407595 00218000
- * ERROR. 00219000
- LCTL C0,C0,MFAONLY ENABLE FOR MFA ONLY DURING SIGP @V407595 00220000
- * RESTART. 00221000
- WAITREST EQU * @V407595 00222000
- STOSM SYSMASK,EXTMASK ENABLE FOR EXTERNAL INTERRUPTS @V407595 00223000
- STNSM SYSMASK,FF-EXTMASK CLOSE MFA WINDOW @V407595 00224000
- TM APIFLAG1,APUSPIN WAIT UNTIL DMKAPIAP COMPLETES @V407595 00225000
- BNO WAITREST WAIT FOR RESTART TO COMPLETE @V407595 00226000
- * 00227000
- * DETERMINE IF THE INTERVAL TIMER IS 00228000
- * RUNNING ON THE APU. THE MAIN PROCESSOR'S 00229000
- * HAS PREVIOUSLY BEEN TESTED. 00230000
- * 00231000
- L R4,SAVEWRK3 ADDRESS OF ATTACHED PSA @VA09386 00232100
- L R3,TIMER(R4) OBTAIN VALUE OF APU INTERVAL TMR @V4M0106 00233000
- APINTTMR EQU * @V4M0106 00234000
- STIDP CPUID ISSUE A PRIVILEGED INSTRUCTION @V4M0143 00235000
- * TO FORCE A TRIP THRU THE DISPATCHER 00236000
- * WHEN RUNNING VM UNDER VM. 00237000
- L R2,F40000 LOAD A HIGH VALUE FOR LOOP CNTRL.HRC008DK 00238490
- * NOTE THAT THE INTERVAL TIMER IS UPDATED 00239000
- * IN BIT POSITION 23 APPROXIMATELY 00240000
- * ONCE PER 1/300 SECOND. THE SEQUENCE 00241000
- * OF INSTRUCTIONS IN 'TIMELOOP' MUST BE 00242000
- * EXECUTED APPROXIMATELY 7,000 TIMES 00243000
- * ON A MODEL 168 TO REACH THIS INTERVAL. 00244000
- * A HIGHER VALUE IS SELECTED TO ENSURE 00245000
- * THE TIMER IS NOT RUNNING BEFORE ISSUING 00246000
- * MESSAGE. 00247000
- TIMELOOP EQU * @V4M0106 00248000
- CL R3,TIMER(R4) TIMER CHANGING ON APU ? @V4M0106 00249000
- BNE APNOMSG YES - TIMER IS RUNNING - CONTINUE@V4M0106 00250000
- BCT R2,TIMELOOP CONTINUE UNTIL COUNTER EXHAUSTED @VM40106 00251000
- * OR INTERVAL TIMER RUNNING. 00252000
- LA R1,TMSG GET MESSAGE PTR. @V407595 00253000
- LA R0,TMSGL GET MESSAGE LENGTH. @V407595 00254000
- CALL DMKQCNWT,PARM=0 TELL OPERATOR TO READY INT TIMER @V407595 00255000
- B APINTTMR RESTART THE TIMER LOOP @V4M0106 00256000
- APNOMSG EQU * @V407595 00257000
- LH R1,IPUADDRX ADDRESS OF THE ATTACHED PROC. @VA09386 00257010
- L R8,APIDMPAA DMKDMP'S POINTER TO ATT. ADDR. @VA09386 00257020
- STH R1,0(,R8) SAVE ADDRESS FOR DMKDMP @VA09386 00257030
- L R8,APIDMPSA ADDRESS OF DMKDMPSA @VA09386 00257040
- MVC 0(8,R8),SAVEWRK2 SAVE PSA ADDRESSES IN DMKDMPMA @VA09386 00257050
- MVC PREFIXA(8),SAVEWRK2 SET PREFIXA/B IN ABSOLUTE 0 @VA09386 00257060
- SR R14,R14 MVCL FROM ADDRESS IS 0 @VA09324 00257100
- L R15,F4096 MVCL FROM LENGTH IS PAGE SIZE @VA09324 00257200
- L R2,PREFIXA MVCL TO ADDR IS MAIN PROC'S PSA @VA09324 00257300
- LR R3,R15 MVCL TO LENGTH IS PAGE SIZE @VA09324 00257400
- MVCL R2,R14 MOVE ABSOLUTE 0 TO PREFIX AREA @VA09324 00257500
- SPX PREFIXA ESTABLISH PREFIXING ON MAIN PROC @V407595 00258000
- TM APSTAT1,CPINITD IS SYSTEM IN IPL? @VMH0026 00259000
- BZ SETTDISP YES, BRANCH @VMH0026 00260000
- SPACE 00261000
- * THE FOLLOWING CODE GOES THROUGH THE CHAIN OF VMBLOKS AND * 00262000
- * OBTAINS A DEFERRED EXECUTION BLOCK FOR EACH. ALSO, VMCPTIME * 00263000
- * AND VMAPTIME ARE ADJUSTED TO THE AP MODE VALUES. * 00264000
- SPACE 00265000
- USING VMBLOK,R11 @VMH0026 00266000
- SPACE 00267000
- L R11,ASYSVM GET ADDRESS OF SYSTEM VMBLOK @VMH0026 00268000
- MVC VMAPTIME,APSPTIME STORE THE AP SUP. TIME INITIAL VALUE X00269000
- @VMH0026 00270000
- * 00271000
- *THE FOLLOWING CODE ADJUSTS VMCPTIME TO VMTTIME-X'3FFFFFFFFFFFF000' 00272000
- * 00273000
- LM R0,R1,VMTTIME GET VMTTIME IN EVEN-ODD REGISTERS X00274000
- @VMH0026 00275000
- SL R0,SUB4 SUBTRACT X'4000000000000000' @VMH0026 00276000
- AL R1,ADD1 ADD BACK IN X'0000000000001000' @VMH0026 00277000
- BC 12,NOCARRY BRANCH IF NO CARRY ON THE ADDITION X00278000
- @VMH0026 00279000
- AL R0,F1 ADD IN CARRY @VMH0026 00280000
- NOCARRY STM R0,R1,VMCPTIME STORE ADJUSTED VMCPTIME VALUE @VMH0026 00281000
- * 00282000
- L R11,VMPNT GET FIRST VMBLOK ADDR IN CYCLIC CHAIN X00283000
- @VMH0026 00284000
- LR R10,R11 SAVE ENDING ADDRESS @VMH0026 00285000
- VMLOOP DS 0H @VMH0026 00286000
- MVC VMAPTIME,APSPTIME STORE THE AP SUP. TIME INITIAL VALUE X00287000
- @VMH0026 00288000
- LM R0,R1,VMTTIME GET VMTTIME IN REGISTERS @VMH0026 00289000
- SL R0,SUB4 SUBTRACT X'4000000000000000' @VMH0026 00290000
- AL R1,ADD1 ADD BACK IN X'0000000000001000' @VMH0026 00291000
- BC 12,NOTCARRY BRANCH IF NO CARRY @VMH0026 00292000
- AL R0,F1 ADD IN CARRY @VMH0026 00293000
- NOTCARRY STM R0,R1,VMCPTIME STORE ADJUSTED VMCPTIME VALUE @VMH0026 00294000
- LA R0,CPEXSIZE GET SIZE OF BLOCK IN DOUBLE WORDS X00295000
- @VMH0026 00296000
- CALL DMKFREE OBTAIN STORAGE @VMH0026 00297000
- ST R1,VMDFTPNT SAVE ADDR OF DEFER EX.BLOK @VMH0026 00298000
- L R11,VMPNT GET ADDR OF NEXT VMBLOK @VMH0026 00299000
- CR R10,R11 END OF CHAIN @VMH0026 00300000
- BNE VMLOOP NO, DO THEM ALL @VMH0026 00301000
- L R11,SAVER11 RESTORE VMBLOK ADDRESS @VMH0026 00302000
- SPACE 00303000
- SETTDISP DS 0H @VMH0026 00304000
- LA R0,VMCPTIME-VMBLOK(,R0) GET ADDR MAIN PROC TIMER@V4M0203 00305000
- ST R0,TIMEDISP SAVE DISPLACEMENT IN PSA @V4M0203 00306000
- CHARGE START START CHARGING OPERATOR @V4M0203 00307000
- LCTL C0,C0,CR0INTMN ESTABLISH VALUE OF CR0 ON MAIN @V407595 00308000
- * PROCESSOR. NOTE THAT TOD SYNC CHECKS WILL 00309000
- * BE ENABLED BY DMKCLK. THIS WILL SUPPRESS 00310000
- * ALL SYNC CHECKS UNTIL CLOCKS ARE SET. 00311000
- STCTL C0,C0,CPCREG0 INITIALIZE CR0 FOR MAIN PROC @V407595 00312000
- OI APSTAT1,APUOPER INDICATE THE APU IS NOW @V407595 00313000
- * OPERATIONAL @V407595 00314000
- LOCK OBTAIN,TYPE=SYS,SPIN=NO @VA07480 00315000
- BNZ APNOLOK LOCK NOT AVAILABLE, TERM VM @VA07611 00316000
- L R1,SAVER11 ADDRESS OF VMBLOK TO R1 @VMH0001 00317000
- LOCK OBTAIN,TYPE=VMBLOK,SPIN=NO LOCK THE OPERATOR'S @V407595 00318000
- * VMBLOK FOR THE DISPATCHER. 00319000
- BNZ APNOLOK LOCK NOT AVAILABLE, TERM VM @VA07611 00320000
- C R1,LASTUSER WAS LASTUSER JUST LOCKED? @VMH0001 00321000
- BE USERSLKD YES, BRANCH @VMH0001 00322000
- L R1,LASTUSER GET LASTUSER VMBLOK ADDRESS @VMH0001 00323000
- C R1,ASYSVM IS LASTUSER THE SYSTEM VMBLOK? @VMH0001 00324000
- BE USERSLKD YES, BRANCH @VMH0001 00325000
- LOCK OBTAIN,TYPE=VMBLOK,SPIN=NO LOCK LASTUSER @VMH0001 00326000
- BNZ APNOLOK LOCK NOT AVAILABLE, TERMINATE VM @VMH0001 00327000
- USERSLKD DS 0H @VMH0001 00328000
- L R2,REALSAVE RESTORE DMKIOGAP REAL ADDRESS @V407595 00329000
- CALL DMKPTRUL UNLOCK DMKIOGAP. @V407595 00330000
- EXIT @V407595 00331000
- APERROR EQU * @V407595 00332000
- MVC RSRTNPSW(L8),APIRSTNW RESTORE RESTART NEW PSW @V407595 00333000
- BALR R15,0 SET CONDITION CODE IN WORK REG @V407595 00334000
- STCM R15,CONDCODE,XWAIT4+N4 STORE CC IN WAIT PSW. @V407595 00335000
- * NOTE PSW IS IN BC FORMAT. 00336000
- LPSW XWAIT4 LOAD ERROR WAIT CODE =X'15' @V407595 00337000
- SPACE 00338000
- APNOLOK DS 0H SYTEM/VMBLOK LOCK NOT AVAILABLE @VA07611 00339000
- ABEND 1 TERMINATE VM/370 @VA07611 00340000
- EJECT 00341000
- ENTRY DMKAPIAP APU INITIALIZATION ROUTINE @V407595 00342000
- DMKAPIAP DS 0D @V407595 00343000
- L R11,ASYSOP OBTAIN OPERATOR VMBLOK ADDRESS @V4M0106 00344000
- * TO SATISFY SVC INTERFACE. 00345000
- L R12,TEMPSAVE SET BASE TO MAINLINE DMKAPI @V407595 00346000
- L R14,TEMPSAVE+4 ADDRESS ATTACHED PROCESSOR'S PSA @VA09386 00347110
- L R14,TRACSTRT(R14) OBTAIN VALUE OF TRACSTRT @V407595 00348000
- ST R14,TRACSTRT RESTORE TRACE TABLE START @V407595 00349000
- * ADDRESS IN ABSOLUTE 0. IT WAS OVERLAID 00350000
- * AS A RESULT OF THE DMKAPI PSW RESTART. 00351000
- MVC RSRTNPSW(N8),APIRSTNW RESTORE RESTART NEW PSW @V407595 00352000
- * IN ABSOLUTE 0 IN CASE RESET AND RESTART 00353000
- * ARE PRESSED BY THE OPERATOR. 00354000
- SCKC FFS INIT APU TOD CLOCK COMPARATOR @V407595 00355000
- SPT PROBTIME INIT APU CPU TIMER @V407595 00356000
- LCTL C1,C14,BALR1 ESTABLISH CR'S FOR THE APU @V407595 00357000
- LCTL C0,C0,CR0INTAP ESTABLISH CR0 FOR THE APU - @V407595 00358000
- * DISABLED FOR TOD SYNC CHECKS. 00359000
- LCTL C2,C2,ZEROES INHIBIT I/O INTERRUPTS ON THE @V407595 00360000
- * APU. 00361000
- SPX TEMPSAVE+4 START PREFIXING ON THE ATTACHED @VA09386 00362100
- STCTL C0,C0,CPCREG0 SET CR0 FOR THE APU. @V407595 00363000
- XI TRACPROC,PROCAPU SET TRACE TABLE IDENTIFIER @V60B7AB 00364100
- * TO OPPOSITE OF ONLINE PROC'S IDENT 00364200
- NI APSTAT1,FF-PROCIO INDICATE THAT THIS PROCESSOR @V407595 00366000
- * LACKS I/O CAPABILITY. 00367000
- XI APSTAT1,PROCIPL THIS PROC IS THE IPL PROC ONLY @V60B7AA 00367050
- * IF THE ONLINE PROC IS NOT PROCIPL 00367100
- * 00367110
- SPACE 00367120
- * TEST FOR CP ASSIST @V5DAACD 00367130
- * IF CPA AVAILABLE ON THE MAIN PROCEESOR: @V5DAACD 00367140
- * 1) ISSUE STORE CPASSIST LV ID (STECPSVM) INSTRUCTION. @V5DAACD 00367150
- * 2) COMPARE AP AND MAIN MICRO CODE LEVELS. @V5DAACD 00367160
- * 3) IF CPA AVAILABLE AND LV. NUMBERS ARE EQUAL SET CPA @V5DAACD 00367170
- * AVAILABLE AND ON. @V5DAACD 00367180
- * 4) IF LV NUMBERS ARE NOT EQUAL / CPA NOT AVAILABLE ON @V5DAACD 00367190
- * THE AP BUT AVAILABLE ON MAIN RESET CPA FLAGS ON @V5DAACD 00367200
- * BOTH PROCESSOR'S AND NOP ALL CPA OP'S @V5DAACD 00367210
- * @V5DAACD 00367220
- NI CPSTAT2,X'FF'-(CPASTAVL+CPASTON) SET CPA OFF @VA09614 00367230
- L R2,PREFIXA *ADDRESSABILITY TO MAIN PSA - @V5DAACD 00367240
- * ADDRESS IS SET TO ABSOLUTE 0 @V5DAACD 00367250
- * BECAUSE MAIN PREFIX AREA HAS NOT BEEN @V5DAACD 00367260
- * MOVED/ESTABLISHED AT THIS TIME..... @V5DAACD 00367270
- TM CPSTAT2-PSA(R2),CPASTAVL **CPA ON MAIN PROC.? @V5DAACD 00367280
- BNO APINOCPA NO-FORGET IT BOTH CPU'S @V5DAACD 00367290
- * REQUIRE CPA AND 'CPI' HAS @V5DAACD 00367300
- * ALREADY NOOP'ED CPA OP'S. @V5DAACD 00367310
- MVC TEMPR0(N4),ZEROES USE TEMPRO TO SET CTL REG. 6 @V5DAACD 00367320
- OI TEMPR0,X'02' SET CPASSIST ENABLE MASK @V5DAACD 00367330
- LCTL C6,C6,TEMPR0 ENABLE CP ASSIST FEATURE. @V5DAACD 00367340
- LA R1,APIINTA SETUP FOR POSSIBLE PGM CK. @V5DAACD 00367350
- ST R1,PRNPSW+4 IF CP ASSIST NOT ON AP @V5DAACD 00367360
- LA R3,SVCPALV LOC. TO STORE LV. NUMBER @V5DAACD 00367370
- DS 0H ISSUE 'ST CP ASSIST LEVEL' @V5DAACD 00367380
- DC X'E612',S(0(R3),0) @V5DAACD 00367390
- * @V5DAACD 00367400
- OI CPSTAT2,CPASTAVL+CPASTON SET CPA AVAIL. AND ON @V5DAACD 00367410
- L R3,=A(DMKCPEML) LOC. OF MAIN PROC. LV. NUMBER @V5DAACD 00367420
- CLC SVCPALV,0(R3) LV NUMBERS EQUAL? @V5DAACD 00367430
- BE APICPAOK CPA AVAIL AND LV EQ ALLSET @V5DAACD 00367440
- APIINTA EQU * CPA UNAVAIL. / LV NUMBERS ARE NOT EQUAL @V5DAACD 00367450
- NI CPSTAT2,X'FF'-(CPASTAVL+CPASTON) SET BOTH @V5DAACD 00367460
- NI CPSTAT2-PSA(R2),X'FF'-(CPASTAVL+CPASTON) PREFIX @V5DAACD 00367470
- * FLAGS TO INDICATE CPA UNAVAILABLE AND CLEAR CP @V5DAACD 00367480
- NI CPCREG6-PSA(R2),X'FD' ASSIST ENABLE FLS IN CTL @V5DAACD 00367490
- NI CPCREG6,X'FD' REG 6 FOR BOTH PROCESSOR'S @V5DAACD 00367500
- * ALSO NOP ALL CP ASSIST INSTRUCTIONS MAIN HUNG IN LOOP @V5DAACD 00367510
- * WAITING FOR AP TO COMPLETE INITILIZATION. @V5DAACD 00367520
- LA R3,CPATABLE GET CP ASSIST ADDR. LIST @V5DAACD 00367530
- LA R4,4 TABLE INCREMENT @V5DAACD 00367540
- LA R5,CPATBLND ADDR. OF TABLE END. @V5DAACD 00367550
- CLEARCPA L R6,0(R3) GET CPA INST. ADDR. @V5DAACD 00367560
- MVC 0(6,R6),=X'0700,47000000' AND REMOVE IT.... @V5DAACD 00367570
- BXLE R3,R4,CLEARCPA LOOP THROUGH TABLE. @V5DAACD 00367580
- APICPAOK EQU * @V5DAACD 00367590
- MVC PRNPSW(8),APIPGMNW RESTORE PGM NEW PSW @V5DAACD 00367600
- LCTL C6,C6,ZEROES NO CPA UNTIL IPL COMPLETES. @V5DAACD 00367610
- APINOCPA EQU * @V5DAACD 00367620
- SPACE 00367630
- CALL DMKIOGAP CALL MCH ROUTINE TO INITIALIZE @V407595 00368000
- * CR15 FOR EXTENDED LOGOUT 00369000
- EJECT 00370000
- * 00371000
- * TEST FOR VM ASSIST @V407595 00372000
- * TO DO THIS, DO AN SSM INSTRUCTION IN PROBLEM STATE. IF CP RECEIVES 00373000
- * THE PROGRAM INTERRUPT, VM ASSIST IS NOT PRESENT. IF VM 00374000
- * ASSIST HANDLES THE SSM, DO AN SVC TO GET BACK TO SUPERVISOR STATE. 00375000
- * 00376000
- L R11,ASYSVM ADDRESS OF SYSTEM VMBLOK @V407595 00377000
- USING VMBLOK,R11 EST ADDRESSIBILITY TO VMBLOK @V407595 00378000
- LA R1,APISVC SET SVC NEW PSW TO POINT TO @V407595 00379000
- ST R1,SVCNPSW+N4 APISVC @V407595 00380000
- LA R1,APIPROG SET PROGRAM NEW PSW TO POINT @V407595 00381000
- ST R1,PRNPSW+N4 TO APIPROG @V407595 00382000
- MVC RUNCR0(4),CPCREG0 SET UP REAL CR0 @V407595 00383000
- MVC RUNCR1(4),VMSEG SET UP REAL CR1 @V407595 00384000
- * SET UP MICROCODE POINTER LIST 00385000
- MVC TEMPR2,VMSEG SYSTEM SEGMENT TABLE IN PTR LIST @V407595 00386000
- LA R1,RUNCR0 VIRT CR0 SAME AS REAL CR0 @V407595 00387000
- ST R1,TEMPR3 @V407595 00388000
- LA R1,SSMTEST SET UP PROPER @VA10147 00388300
- ST R1,TESTPSW+4 RETURN FROM TEST @VA10147 00388600
- MVC TEMPR4(4),ZEROES VIRT. PSW POINTER @V407595 00389000
- LA R1,BALRSAVE WORKSPACE ADDRESS @V407595 00390000
- ST R1,TEMPR5 @V407595 00391000
- * SET UP C-REG 6 - USE TEMPR0 TO SET IT UP 00392000
- LA R1,TEMPR2 ADDRESS OF MICROCODE PTR LIST @V407595 00393000
- ST R1,TEMPR0 INTO C-REG 6 @V407595 00394000
- OI TEMPR0,VMMFE+VMMSVC TURN MICROCODE ON & SVCS OFF@V407595 00395000
- LCTL C6,C6,TEMPR0 LOAD CR6 @V407595 00396000
- LCTL C0,C1,RUNCR0 LOAD REAL CR0 AND CR1 @V407595 00397000
- LPSW TESTPSW GO INTO PROBLM STATE & ISSUE SSM @V407595 00398000
- DS 0D @V407595 00399000
- TESTPSW DC X'000D0000' PROB STATE PSW @VA10147 00400100
- DC F'0' @VA10147 00401100
- SSMTEST SSM *+1 WILL MICROCODE HANDLE THIS? @V407595 00402000
- SVC 30 YES THEN MUST RETURN TO @V407595 00403000
- * SUPERVISOR STATE 00404000
- APIPROG EQU * IF MICROCODE DOESNT HANDLE SSM, @V407595 00405000
- * PROGRAM INTERRUPT COMES HERE 00406000
- NI CPSTAT2,X'FF'-CPMICAVL-CPMICON INDICATE VM @V407595 00407000
- * ASSIST NOT AVAILABLE & NOT ON 00408000
- B NPSWS @V407595 00409000
- APISVC EQU * IF MICROCODE HANDLES SSM, SVC @V407595 00410000
- * INTERRUPT COMES HERE 00411000
- OI CPSTAT2,CPMICAVL+CPMICON INDICATE VM ASSIST @V407595 00412000
- * AVAILABLE & ON 00413000
- NPSWS MVC SVCNPSW(8),APISVCNW RESTORE SVC NEW PSW @V407595 00414000
- MVC PRNPSW(8),APIPGMNW RESTORE PROGRAM NEW PSW @V407595 00415000
- LCTL C6,C6,ZEROES RESTORE CR6 @V407595 00416000
- L R11,ASYSOP RESTORE PTR TO OPERATOR VMBLOK @V4M0106 00417000
- EJECT 00418000
- XC PGREAD(CLRCNT),PGREAD CLEAR COUNTER AREA IN PSA @V407595 00419000
- * ON APU THAT MAY HAVE BEEN USED WHILE IN 00420000
- * ABSOLUTE 0 (I.E., BEFORE THE PSA MOVE) 00421000
- XC EXOPSW(TIMER-EXOPSW),EXOPSW CLEAR LOW CORE @VA07843 00422000
- * BETWEEN EXTERNAL OLD AND INTERVAL TIMER. 00423000
- MVI CPSTATUS,CPWAIT+CPSUPER IND CP IN IDLE & SUP @VA11576 00424500
- MVC IDLEWAIT(N8),HIGHPOS TOTAL APU IDLE STATE TIME @V407595 00425000
- MVC PAGEWAIT(N8),HIGHPOS TOTAL PAGE IDLE WAIT TIME @V407595 00426000
- MVC IONTWAIT(N8),HIGHPOS TOTAL SYSTEM I/O WAIT TIME @V407595 00427000
- MVC PROBTIME(N8),HIGHPOS TOTAL SYSTEM PROBLEM STATE @V407595 00428000
- * TIME. @V407595 00429000
- STIDP CPUID STORE CPU IDENTIFIER @V407595 00430000
- OI APSTAT1,APUOPER INDICATE APU NOW OPERATIONAL @V407595 00431000
- LA R0,VMAPTIME-VMBLOK(,R0) GET ADDR ATTACHED TIMER @V4M0203 00432000
- ST R0,TIMEDISP SAVE DISPLACEMENT IN PSA @V4M0203 00433000
- OI APIFLAG1,APUSPIN LET MAIN PROCESSOR CONTINUE @V407595 00434000
- LPSW ENABLEWT ENABLE FOR EXTERNAL INTERRUPTS. @V407595 00435000
- * NOTE THAT CR0 WAS PREVIOUSLY ESTABLISHED. 00436000
- EJECT 00437000
- * START OF ATTACHED PROCESSOR DEFINITIONS 00438000
- DS 0F @V407595 00439000
- APIIOGAP DC V(DMKIOGAP) PTR TO DMKIOGAP @V407595 00440000
- APIDMPSA DC V(DMKDMPSA) POINTER TO PSA'S IN DMKDMP @VA09386 00440100
- APIDMPAA DC V(DMKDMPAA) POINTER TO ATTACHED PROC ADDR. @VA09386 00440200
- DS 0D PSW'S ON DBW BOUNDARY @V407595 00441000
- XWAIT4 DC X'0002000000000015' @V407595 00442000
- APISVCNW DC A(MCHEKENB,DMKSVCIN) SYSTEM SVC NEW PSW @V407595 00443000
- APIPGMNW DC A(MCHEKENB,DMKPRGIN) SYSTEM PGM NEW PSW @V407595 00444000
- APIRSTNW DC A(MCHEKENB,DMKPSADU) SYSTEM RESTART NEW PSW @V407595 00445000
- RESTAP DC A(MCHEKENB,DMKAPIAP) RESTART NEW PSW FOR APU @V407595 00446000
- ENABLEWT DC AL1(EXTMASK),AL3(WAITENB),AL4(0) ENABLED WAIT @V407595 00447000
- DISABLWT DC AL1(0),AL1(EXTMODE+MCHEK+WAIT),AL4(0),AL2(0) @V407595 00448000
- CR0INTMN DC AL1(BLKMPX+NOSSKCK,PAGE4K) HRC004DK 00449490
- DC AL1(MFAMASK+EMSMASK+XCMASK+CKCMASK+CPTMASK) @V4M0143 00450000
- DC AL1(INTMASK+KEYMASK) BITMASK FOR CR0 ON MAIN P. @V407595 00451000
- CR0INTAP DC AL1(BLKMPX+NOSSKCK,PAGE4K) HRC004DK 00452490
- DC AL1(MFAMASK+EMSMASK+XCMASK+CKCMASK+CPTMASK) @V4M0143 00453000
- DC AL1(INTMASK+KEYMASK) BITMASK FOR CR0 ON APU @V407595 00454000
- MFAONLY DC AL1(BLKMPX+NOSSKCK) HRC004DK 00455003
- DC AL1(PAGE4K,MFAMASK,N0) MFA ONLY FOR CR0 HRC004DK 00455006
- EJECT 00455010
- * @V5DAACD 00455020
- * -----CP ASSIST LEVEL AND INSTRUCTION TABLE @V5DAACD 00455030
- * @V5DAACD 00455040
- DS 0D @V5DAACD 00455050
- SVCPALV DC F'0' LEVEL OF AP PROCESSOR.... @V5DAACD 00455060
- * ----------------------------------------- @V5DAACD 00455070
- * NOTE: THE FOLLOWING TABLE ALSO RESIDES IN MODULE 'DMKCPI' @V5DAACD 00455080
- * --------------------------------------- @V5DAACD 00455090
- CPATABLE DS 0F CP ASSIST INSTRUCTION ADDRESS'S @V5DAACD 00455100
- DC V(DMKFREE) E600 @V5DAACD 00455110
- DC V(DMKFRET) E601 @V5DAACD 00455120
- DC V(DMKPTRLK) E602 @V5DAACD 00455130
- DC V(DMKPTRUL) E603 @V5DAACD 00455140
- DC V(DMKCCW0) E604 @V5DAACD 00455150
- DC V(DMKUNTFR) E605 @V5DAACD 00455160
- DC V(DMKSCNVU) E606 @V5DAACD 00455170
- DC V(DMKDSP1) E607 @V5DAACD 00455180
- DC V(DMKCCWB1) E608 @V5DAACD 00455190
- DC V(DMKCCWB2) E608 @V5DAACD 00455200
- DC V(DMKCCWB3) E608 @V5DAACD 00455210
- DC V(DMKCCWB4) E608 @V5DAACD 00455220
- DC V(DMKCCWB5) E608 @V5DAACD 00455230
- DC V(DMKCCWB6) E608 @V5DAACD 00455240
- DC V(DMKCCWB7) E608 @V5DAACD 00455250
- DC V(DMKCCWB8) E608 @V5DAACD 00455260
- DC V(DMKCCWL1) E609 @V5DAACD 00455270
- DC V(DMKCCWL2) E609 @V5DAACD 00455280
- DC V(DMKCCWL3) E609 @V5DAACD 00455290
- DC V(DMKCCWL4) E609 @V5DAACD 00455300
- DC V(DMKCCWL5) E609 @V5DAACD 00455310
- DC V(DMKVATZS) E60A @V5DAACD 00455320
- DC V(DMKVATZP) E60B @V5DAACD 00455330
- DC V(DMKCCW1) E60C @V5DAACD 00455340
- DC V(DMKDSP0) E60D @V5DAACD 00455350
- DC V(DMKSCNRU) E60E @V5DAACD 00455360
- DC V(DMKCCWGN) E60F @V5DAACD 00455370
- DC V(DMKUNTRN) E610 @V5DAACD 00455380
- DC V(DMKDSP2) E611 @V5DAACD 00455390
- DC V(DMKVMASH) E613 @V5DAACD 00455400
- CPATBLND EQU *-4 @V5DAACD 00455410
- EJECT 00455420
- * 00456000
- * DEFINE DMKAPI FLAGS, REGISTER SAVEAREAS AND CONSTANTS @V407595 00457000
- * 00458000
- SAVETIME DS F SAVE AREA FOR INTERVAL TIMER @V407595 00459000
- REALSAVE DS F REAL STORAGE ADDRESS OF DMKIOGAP @V407595 00460000
- RETADDR DS F RETURN TO DMKAPIAP FROM DMKAPIIT @V407595 00461000
- APIPRFX DS 2F TEMPORARY SAVEAREA FOR PREFIXA/B @V407595 00462000
- APIBASE DS 2F SAVEAREA FOR BASEREGS @V407595 00463000
- HIGHPOS DC X'7FFFFFFFFFFFF000' HIGHEST POSITIVE VALUE IN @V4M0106 00464000
- APSPTIME DC X'3FFFFFFFFFFFF000' AP SUPERVISOR TIMER VALUE @VMH0026 00465000
- SUB4 DC X'40000000' @VMH0026 00466000
- ADD1 DC X'00001000' @VMH0026 00467000
- * DOUBLEWORD. 00468000
- F8192 DC F'8192' TWO PAGES @V407595 00469000
- F40000 DC F'40000' LOOP CONTROL FOR INTERVAL TIMER HRC008DK 00470490
- H32 DC H'32' DECREMENT CORE TABLE PTR BELOW @V407595 00471000
- * PREFIX AREA (I.E., -8K) 00472000
- APIWORK DS H DMKAPI INTERNAL FLAGS AND W.A. @V407595 00473000
- ORG APIWORK @V407595 00474000
- APIFLAG1 DS CL1 FLAG BYTE @V407595 00475000
- SYSMASK DS CL1 STOSM/STNSM WORK AREA @V407595 00476000
- * DEFINE BITS FOR APIFLAG1 @V407595 00477000
- APUSPIN EQU X'80' SPIN BIT @V407595 00478000
- API958MG DC X'151515' @V407595 00479000
- DC C'DMKAPI958I ATTACHED PROCESSOR NOW OPERATIONAL' 00480000
- * @V407595 00481000
- DC X'1515' @V407595 00482000
- API958LN EQU *-API958MG @V407595 00483000
- TMSG DC X'151515' @V407595 00484000
- DC C'TURN ON THE ATTACHED PROCESSOR''S INTERVAL TIMER' 00485000
- DC X'1515' @V407595 00486000
- TMSGL EQU *-TMSG @V407595 00487000
- EJECT 00488000
- PSA @V407595 00489000
- COPY EQU @V407595 00490000
- COPY VMBLOK @V407595 00491000
- COPY SAVE @V407595 00492000
- MCHEKENB EQU (MCHEK+EXTMODE)*X'10000' @V407595 00493000
- WAITENB EQU (MCHEK+EXTMODE+WAIT)*X'10000' @V407595 00494000
- PREFIX EQU PREFIXA-PSA @V407595 00495000
- CLRCNT EQU PSENDCLR-PGREAD @V407595 00496000
- END DMKAPI @V407595 00497000
ibm/vm370-lib/cp/dmkapi.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator