IEAVTRCE CSECT 00003002 TITLE 'IEAVTRCE - SYSTEM TRACE ROUTINE' 00003502 USING *,XTRBASE BASE NEEDED FOR MODID MACRO 00011002 MODID 00021002 * /* START OF SPECIFICATIONS **** 00023002 * 00025002 *01* MODULE-NAME = IEAVTRCE 00027002 * 00031002 *02* CSECT-NAME = IEAVTRCE 00041002 * 00051002 *01* DESCRIPTIVE-NAME = VS2/2 TRACE ROUTINE 00061002 * 00071002 *01* COPYRIGHT = NONE 00081002 * 00091002 *01* STATUS = 0 00101002 * 00111002 *01* FUNCTION = RECORD THE FOLLOWING SYSTEM ACTIVITY: 00121002 * 1. EXTERNAL INTERRUPTS 00131002 * 2. I/O INTERRUPTS 00141002 * 3. PROGRAM INTERRUPTS 00151002 * 4. SVC INTERRUPTS 00161002 * 5. START I/O (FROM IOS) 00173502 * 6. TASK DISPATCH/EXIT PROLOG DISPATCH EVENTS 00183502 * 7. SERVICE REQUEST EVENTS 00193502 * 00203502 * THE FORMAT OF EACH TRACE TABLE ENTRY FOLLOWS 00213502 * THE PROLOG. 00223502 * 00233502 *02* OPERATION = A UNIQUE ENTRY POINT EXISTS FOR EACH 00243502 * FUNCTION IDENTIFIED ABOVE. AFTER UPDATING 00253502 * THE CURRENT TRACE TABLE ENTRY POINTER, 00263502 * THE DESIRED INFORMATION IS PLACED INTO 00273502 * THE TRACE TABLE. 00283502 * SOME SPECIAL ENTRY POINTS HAVE BEEN @ZA16400 00285540 * DEFINED SO IEAVESPR CAN DETECT THAT A @ZA16400 00287540 * FAILURE OCCURRED WITHIN TRACE AND THAT @ZA16400 00289540 * THE REGISTERS HAD BEEN SAVED. @ZA16400 00291540 * 00293502 *01* NOTES 00303502 * 00313502 *02* DEPENDENCIES = THIS MODULE DOES NOT CONTAIN ANY 00323502 * HARDWARE DEPENDENCIES. THE FOLLOWING 00333502 * ARE THE SOFTWARE DEPENDENCIES: 00343502 * (1) COMPARE-AND-SWAP MUST BE USED TO 00353502 * UPDATE THE CURRENT ENTRY POINTER 00363502 * (2) A CPU RELATED SAVE AREA IS USED 00373502 * TO ELIMINATE MP PROBLEMS 00383502 * (3) A ONE WORD REGISTER SAVE 00393502 * LOCATION IS REQUIRED IN THE PSA 00403502 * (SERIALIZED BY DISABLEMENT) 00413502 * 00423502 *03* CHARACTER-CODE-DEPENDENCIES = THIS MODULE IS NOT 00433502 * CHARACTER CODE 00443502 * DEPENDENT 00453502 * 00463502 *02* RESTRICTIONS = NONE 00473502 * 00483502 *02* REGISTER-CONVENTIONS = REFER TO THE 'REGISTER EQUATES' 00493502 * PORTION OF THIS MODULE 00503502 * 00513502 *02* PATCH-LABEL = NONE WITHIN THIS MODULE. COMMON 00523502 * NUCLEUS MAINTENANCE AREA SHOULD 00533502 * BE USED (IEAPACH) 00543502 * 00553502 *01* MODULE-TYPE = MODULE 00563502 * 00573502 *02* PROCESSOR = ASSEMBLER 00583502 * 00593502 *02* MODULE-SIZE = APPROXIMATELY 700 BYTES 00603502 * 00613502 *02* ATTRIBUTES = NUCLEUS CODE, REFRESHABLE, SUPERVISOR 00623502 * PROTECT KEY, SUPERVISOR STATE, AND 00633502 * DISABLED FOR ALL MASKABLE INTERRUPTS 00643502 * ON CALLER'S CPU 00653502 * 00663502 *01* ENTRY-POINT = TREX 00673502 * 00683502 *02* PURPOSE = RECORD EXTERNAL INTERRUPTS IN TRACE TABLE 00693502 * 00703502 *02* LINKAGE = BRANCH ENTERED 00713502 * 00723502 *02* INPUT = REGISTERS 0,1 - AS AT TIME OF INTERRUPT 00733502 * REGISTERS 2-9 - IRRELEVANT 00743502 * REGISTER 10 - ENTRY POINT ADDRESS 00753502 * REGISTER 11 - RETURN ADDRESS 00763502 * REGISTERS 12-14 - IRRELEVANT 00773502 * REGISTER 15 - AS AT TIME OF INTERRUPT 00783502 * 00793502 *02* OUTPUT = TRACE TABLE ENTRY (SEE FORMATS AT END OF 00803502 * PROLOG) AND UPDATED CURRENT TRACE TABLE 00813502 * ENTRY POINTER. 00823502 * 00843502 *02* REGISTERS-SAVED = REGISTERS 11-15 ARE SAVED IN THE 00853502 * CPU RELATED SAVE AREA POINTED TO 00863502 * BY WSACCWSA. REGISTER 8 IS SAVED 00873502 * IN THE PSA (PSAGPREG) 00879502 * 00885502 *02* REGISTER-USAGE = REFER TO 'REGISTER EQUATES' PORTION 00893502 * OF THIS MODULE 00903502 * 00913502 *02* REGISTERS-RESTORED = REGISTERS 8,11-15 00923502 * 00933502 *01* ENTRY-POINT = TRIO 00943502 * 00953502 *02* PURPOSE = RECORD I/O INTERRUPTS IN TRACE TABLE 00963502 * 00973502 *02* LINKAGE = BRANCH ENTERED 00983502 * 00993502 *02* INPUT = REGISTERS 0-2 - AS AT TIME OF INTERRUPT 01003502 * REGISTERS 3-4 - IRRELEVANT 01013502 * REGISTERS 5-9 - AS AT TIME OF INTERRUPT 01023502 * REGISTER 10 - ENTRY POINT ADDRESS 01033502 * REGISTER 11 - RETURN ADDRESS 01043502 * REGISTERS 12-15 - AS AT TIME OF INTERRUPT 01053502 * 01063502 *02* OUTPUT = TRACE TABLE ENTRY (SEE FORMAT AT END OF 01073502 * PROLOG) AND UPDATED CURRENT TRACE TABLE 01083502 * ENTRY POINTER 01093502 * 01103502 *02* REGISTERS-SAVED = REGISTERS 11-15 ARE SAVED IN THE 01113502 * CPU RELATED SAVE AREA POINTED TO 01123502 * BY WSACCWSA. REGISTER 8 IS SAVED 01133502 * IN THE PSA (PSAGPREG) 01143502 * 01153502 *02* REGISTER-USAGE = REFER TO 'REGISTER EQUATES' PORTION 01163502 * OF THIS MODULE 01173502 * 01183502 *02* REGISTERS-RESTORED = REGISTERS 8,11-15 01193502 * 01203502 *01* ENTRY-POINT = TRPI 01213502 * 01223502 *02* PURPOSE = RECORD PROGRAM INTERRUPTS IN TRACE TABLE 01233502 * 01243502 *02* LINKAGE = BRANCH ENTERED 01253502 * 01263502 *02* INPUT = REGISTERS 0-9 - AS AT TIME OF INTERRUPT 01273502 * REGISTER 10 - ENTRY POINT ADDRESS 01283502 * REGISTER 11 - RETURN ADDRESS 01293502 * REGISTERS 12-15 - AS AT TIME OF INTERRUPT 01303502 * 01313502 *02* OUTPUT = TRACE TABLE ENTRY (SEE FORMATS AT END OF 01323502 * PROLOG) AND UPDATED CURRENT TRACE TABLE 01333502 * ENTRY POINTER 01343502 * 01353502 *02* REGISTERS-SAVED = REGISTERS 11-15 ARE SAVED IN THE 01363502 * CPU RELATED SAVE AREA POINTED TO 01373502 * BY WSACCWSA. REGISTER 8 IS SAVED 01383502 * IN THE PSA (PSAGPREG) 01393502 * 01403502 *02* REGISTER-USAGE = REFER TO 'REGISTER EQUATES' PORTION 01413502 * OF THIS MODULE 01423502 * 01433502 *02* REGISTERS-RESTORED = REGISTERS 8,11-15 01443502 * 01453502 *01* ENTRY-POINT = TRSVC 01463502 * 01473502 *02* PURPOSE = RECORD SVC INTERRUPTS IN TRACE TABLE 01483502 * 01493502 *02* LINKAGE = BRANCH ENTERED 01503502 * 01513502 *02* INPUT = REGISTERS 0-9 - AS AT TIME OF INTERRUPT 01523502 * REGISTER 10 - ENTRY POINT ADDRESS 01533502 * REGISTER 11 - RETURN ADDRESS 01543502 * REGISTERS 12-15 - AS AT TIME OF INTERRUPT 01553502 * 01563502 *02* OUTPUT = TRACE TABLE ENTRY (SEE FORMATS AT END OF 01573502 * PROLOG) AND UPDATED CURRENT TRACE TABLE 01583502 * ENTRY POINTER 01593502 * 01603502 *02* REGISTERS-SAVED = REGISTERS 11-15 ARE SAVED IN THE 01613502 * CPU RELATED SAVE AREA POINTED TO 01623502 * BY WSACCWSA. REGISTER 8 IS SAVED 01633502 * IN THE PSA (PSAGPREG) 01643502 * 01653502 *02* REGISTER-USAGE = REFER TO 'REGISTER EQUATES' PORTION 01663502 * OF THIS MODULE 01673502 * 01683502 *02* REGISTERS-RESTORED = REGISTERS 8,11-15 01693502 * 01703502 *01* ENTRY-POINT = TRSIO/TRACE 01713502 * 01723502 *02* PURPOSE = RECORD START I/O EVENTS IN TRACE TABLE 01733502 * 01743502 *02* LINKAGE = BRANCH ENTERED 01753502 * 01763502 *02* INPUT = REGISTER 0 IRRELEVANT 01773502 * REGISTER 1 SRB ADDRESS 01783502 * REGISTERS 2-5 IRRELEVANT 01793502 * REGISTER 6 DEVICE ADDRESS 01803502 * REGISTERS 7-9 IRRELEVANT 01813502 * REGISTER 10 ENTRY POINT ADDRESS 01823502 * REGISTER 11 RETURN ADDRESS 01833502 * REGISTER 12 CONDITION CODE 01843502 * REGISTERS 13-15 IRRELEVANT 01853502 * 01863502 *02* OUTPUT = TRACE TABLE ENTRY (SEE FORMATS AT END OF 01873502 * PROLOG) AND UPDATED CURRENT TRACE TABLE 01883502 * ENTRY POINTER 01893502 * 01903502 *02* REGISTERS-SAVED = REGISTERS 11-15 ARE SAVED IN THE 01913502 * CPU RELATED SAVE AREA POINTED TO 01923502 * BY WSACCWSA. REGISTER 8 IS SAVED 01933502 * IN THE PSA (PSAGPREG) 01943502 * 01953502 *02* REGISTER-USAGE = REFER TO 'REGISTER EQUATES' PORTION 01963502 * OF THIS MODULE 01973502 * 01983502 *02* REGISTERS-RESTORED = REGISTERS 8,11-15 01993502 * 02003502 *01* ENTRY-POINT = TRDISP 02013502 * 02023502 *02* PURPOSE = RECORD TASK/RB DISPATCH IN TRACE TABLE 02033502 * 02043502 *02* LINKAGE = BRANCH ENTERED 02053502 * 02063502 *02* INPUT = REGISTERS 0-1 - AS AT DISPATCH 02073502 * REGISTERS 2-9 - IRRELEVANT 02083502 * REGISTER 10 - ENTRY POINT ADDRESS 02093502 * REGISTER 11 - RETURN ADDRESS 02103502 * REGISTERS 12-14 - IRRELEVANT 02113502 * REGISTER 15 - AS AT DISPATCH 02123502 * 02133502 *02* OUTPUT = TRACE TABLE ENTRY (SEE FORMATS AT END OF 02143502 * PROLOG) AND UPDATED CURRENT TRACE TABLE 02153502 * ENTRY POINTER 02163502 * 02173502 *02* REGISTERS-SAVED = REGISTERS 11-15 ARE SAVED IN THE 02183502 * CPU RELATED SAVE AREA POINTED TO 02193502 * BY WSACCWSA. REGISTER 8 IS SAVED 02203502 * IN THE PSA (PSAGPREG) 02213502 * 02223502 *02* REGISTER-USAGE = REFER TO 'REGISTER EQUATES' PORTION 02233502 * OF THIS MODULE 02243502 * 02253502 *02* REGISTERS-RESTORED = REGISTERS 8,11-15 02263502 * 02273502 *01* ENTRY-POINT = TRSRB1 02283502 * 02293502 *02* PURPOSE = RECORD EVENT DISPATCH IN TRACE TABLE 02303502 * 02313502 *02* LINKAGE = BRANCH ENTERED 02323502 * 02333502 *02* INPUT = REGISTER 0 - SRB ADDRESS 02343502 * REGISTER 1 - PARAMETER AREA ADDRESS 02353502 * REGISTERS 2-9 - IRRELEVANT 02363502 * REGISTER 10 - ENTRY POINT ADDRESS 02373502 * REGISTER 11 - RETURN ADDRESS 02383502 * REGISTERS 12-15 - IRRELEVANT 02393502 * 02403502 *02* OUTPUT = TRACE TABLE ENTRY (SEE FORMATS AT END OF 02413502 * PROLOG) AND UPDATED CURRENT TRACE TABLE 02423502 * ENTRY POINTER 02433502 * 02443502 *02* REGISTERS-SAVED = REGISTERS 11-15 ARE SAVED IN THE 02453502 * CPU RELATED SAVE AREA POINTED TO 02463502 * BY WSACCWSA. REGISTER 8 IS SAVED 02473502 * IN THE PSA (PSAGPREG) 02483502 * 02493502 *02* REGISTER-USAGE = REFER TO 'REGISTER EQUATES' PORTION 02503502 * OF THIS MODULE 02513502 * 02523502 *02* REGISTERS-RESTORED = REGISTERS 8,11-15 02533502 * 02543502 *01* ENTRY-POINT = TRSRB2 02553502 * 02563502 *02* PURPOSE = RECORD EVENT REDISPATCH IN TRACE TABLE 02573502 * 02583502 *02* LINKAGE = BRANCH ENTERED 02593502 * 02603502 *02* INPUT = REGISTERS 0-9 - IRRELEVANT 02613502 * REGISTER 10 - ENTRY POINT ADDRESS 02623502 * REGISTER 11 - RETURN ADDRESS 02633502 * REGISTER 12-15 - IRRELEVANT 02643502 * 02653502 *02* OUTPUT = TRACE TABLE ENTRY (SEE FORMATS AT END OF 02663502 * PROLOG) AND UPDATED CURRENT TRACE TABLE 02673502 * ENTRY POINTER 02683502 * 02693502 *02* REGISTERS-SAVED = REGISTERS 11-15 ARE SAVED IN THE 02703502 * CPU RELATED SAVE AREA POINTED TO 02713502 * BY WSACCWSA. REGISTER 8 IS SAVED 02723502 * IN THE PSA (PSAGPREG) 02733502 * 02743502 *02* REGISTER-USAGE = REFER TO 'REGISTER EQUATES' PORTION 02753502 * OF THIS MODULE 02763502 * 02773502 *02* REGISTER-RESTORED = REGISTERS 8,11-15 02783502 * 02793502 * 02803502 *01* EXIT-NORMAL = POSTCOM 02813502 * 02823502 *02* CONDITIONS = RETURN TO CALLER VIA BRANCH 02833502 * 02843502 *02* OUTPUT = SEE FORMATS OF TRACE TABLE ENTRIES 02853502 * AT END OF PROLOG 02863502 * 02873502 * REGISTERS - SAME CONTENTS AS AT ENTRY 02883502 * 02893502 * 02903502 *02* RETURN-CODES = NONE 02913502 * 02923502 *01* EXIT-ERROR = NONE 02933502 * 02943502 *02* CONDITIONS = N/A 02953502 * 02963502 *02* OUTPUT = N/A 02973502 * 02983502 *02* RETURN-CODES = N/A 02993502 * 03003502 *01* EXTERNAL-REFERENCES 03013502 * 03023502 *02* ROUTINES = NONE 03033502 * 03043502 *02* DATA-AREAS = TRACE TABLE HEADER - CURRENT, FIRST, LAST 03053502 * TRACE TABLE ENTRIES - REFLECT TRACE RESULTS 03063502 * 03073502 *02* CONTROL-BLOCKS = ASCB R 03083502 * FLC R 03093502 * LCCA R 03103502 * PCCA R 03113502 * PSA R,W 03123502 * RB R 03133502 * SRB R 03143502 * TCB R 03153502 * TQE R 03163502 * WSA R,W 03173502 * IOSB R @Z40FPYJ 03178540 * 03183502 *01* TABLES = NONE 03193502 * 03203502 *01* MACROS = NONE 03213502 * 03223502 *02* SERIALIZATION = COMPARE-AND-SWAP DONE ON CURRENT 03233502 * TRACE TABLE ENTRY POINTER. NO LOCKS 03243502 * OR ENQUES ARE NEEDED. THE REGISTER 03253502 * SAVE AREA IN THE PSA IS SERIALIZED 03263502 * BY DISABLEMENT 03273502 * 03283502 *01* CHANGE-ACTIVITY = Y02136 03293502 * Y02139 03303502 * DCRR 20889 03313502 * YM01922 03323502 * YM02115 03333502 * 03343502 *01* MESSAGES = NONE 03353502 * 03363502 *01* ABEND-CODES = NONE 03373502 * 03383502 **** END OF SPECIFICATIONS */ 03393502 EJECT 03403502 * NOTE THAT THE IDENTIFIER IS IN THE PSW FOR EXTERNAL, I/O, SVC, AND 04183802 * PROGRAM INTERRUPT AND DISPATCHER TRACES. IT IS LOCATED IN BIT 05183802 * POSITIONS 17-19 OF THE PSW. 06183802 SPACE 3 09100001 * EXTERNAL INTERRUPT 09150001 SPACE 09200001 * ................................................................. 09250001 * . . . . . . . . 09300001 * . EXTERNAL . REG . REG . REG . CPUID .CURRENT. TIMER . 09350002 * . OLD PSW . 15 . 0 . 1 . & ASID. OR TQE. VALUE . 09400002 * . IDENTIFIER= 1 . . . . . TCB . . 09450002 * . . . . . . . . 09500002 * .0.......4.......8.......C.......0.......4.......8.......C....... 09550001 SPACE 3 09600001 * I/O INTERRUPT 09650001 SPACE 09700001 * ................................................................. 09750001 * . . . . . . . 09800001 * . I/O . CSW . RE- . CPUID .CURRENT. TIMER . 09850002 * . OLD PSW . . SERVED. & ASID. TCB . VALUE . 09900002 * . IDENTIFIER= 5 . . (ZERO). . . . 09950002 * . . . . . . . 10000001 * .0.......4.......8.......C.......0.......4.......8.......C....... 10050001 SPACE 3 10100001 * PROGRAM INTERRUPT 10150001 SPACE 10200001 * ................................................................. 10250001 * . . . . . . . . 10300001 * . PI . . TRANS . . . . . 10350002 * . OLD PSW . REG . EXCEPT. REG . CPUID .CURRENT. TIMER . 10400002 * . IDENTIFIER= 3 . 15 . ADDR . 1 . & ASID. TCB . VALUE . 10450002 * . . . . . . . . 10500001 * .0.......4.......8.......C.......0.......4.......8.......C....... 10550001 EJECT 10600001 * SVC INTERRUPT 10650001 SPACE 10700001 * ................................................................. 10750001 * . . . . . . . . 10800001 * . SVC . REG . REG . REG . CPUID .CURRENT. TIMER . 10850002 * . OLD PSW . 15 . 0 . 1 . & ASID. TCB . VALUE . 10900002 * . IDENTIFIER= 2 . . . . . . . 10950001 * . . . . . . . . 11000001 * .0.......4.......8.......C.......0.......4.......8.......C....... 11050001 SPACE 3 11100001 * START I/O IDENTIFIER = 0 11150002 SPACE 11200001 * ................................................................. 11250001 * . . . . . . . . . 11300002 * . C . D . CAW . CSW . IOSB . CPUID . TCB . TIMER . 11460002 * . C . E . . . FROM . & ASID. FROM . VALUE . 11470002 * . . V . . . IOS . . SRB . . 11480002 * . . . . . . . . . 11500002 * .0.......4.......8.......C.......0.......4.......8.......C....... 11550001 SPACE 3 11600001 * TASK DISPATCHER 11650002 SPACE 11700001 * ................................................................. 11750001 * . . . . . . . . 11800001 * . NEW PSW TO BE . REG . REG . REG . CPUID . NEW . TIMER . 11850002 * . LOADED . 15 . 0 . 1 . & ASID. TCB . VALUE . 11900002 * . IDENTIFIER= 7 . (NEW) . (NEW) . (NEW) . . . . 11950001 * . . . . . . . . 12000001 * .0.......4.......8.......C.......0.......4.......8.......C....... 12050001 SPACE 3 12092402 * EVENT DISPATCHER 12092802 SPACE 12093202 * ................................................................. 12093602 * . . . . . . . . 12093702 * . NEW PSW TO BE . ZERO . SRB . PARAM . CPUID . TCB . TIMER . 12094002 * . LOADED . & ASID. ADDR. . LIST . & ASID. FOR . VALUE . 12095002 * . IDENTIFIER= . . OR . ADDR.. . PURGE . . 12096002 * . 4 OR 6 . . REG 0 . OR . . . . 12096902 * . . . . REG 1 . . . . 12097802 * .0.......4.......8.......C.......0.......4.......8.......C....... 12098802 EJECT 12118802 ENTRY TREX,TRPI,TRSVC,TRIO,TRDISP,TRSIO,TRACE,TRSRB1,TRSRB2 12150002 ENTRY TRCEEND,TRCOM1,TRCOM2 SEE @ZA16400 12160040 * 'OPERATION' IN THE PROLOG @ZA16400 12170040 * FOR AN EXPLANATION OF THESE @ZA16400 12180040 * ENTRIES @ZA16400 12190040 SPACE 3 12200001 * REGISTER EQUATES 12250001 SPACE 3 12300001 R0 EQU 0 REG 0 12350001 R1 EQU 1 REG 1 12400001 R6 EQU 6 REG 6 12450001 R8 EQU 8 REG 8 Y02139 12452002 RA EQU 10 REG 10 12500001 R11 EQU 11 REG 11 12550002 RC EQU 12 REG 12 12600001 RD EQU 13 REG 13 12650001 RE EQU 14 REG 14 12700001 RF EQU 15 REG 15 12750001 XTRBASE EQU 10 BASE REG FOR MAINLINE CODE 12800001 XRET EQU 11 RETURN REGISTER AND BASE FOR 12850001 * INTERNAL SUBROUTINES 12900001 TRPTRG EQU 12 TRACE TABLE ENTRY POINTER 12950001 TRTAPTR EQU 13 POINTER TO TRACE HEADER 13000001 SPACE 3 13100001 * COUNT FIELD EQUATES 13150001 C1 EQU 1 BYTE 13200001 C2 EQU 2 HALF WORD 13250001 C3 EQU 3 THREE BYTES 13300001 C4 EQU 4 FULL WORD 13350001 C8 EQU 8 DOUBLEWORD 13400001 EJECT 13450002 * GENERAL EQUATES 13500001 SPACE 1 13550001 ENTLEN EQU 32 LENGTH OF A TRACE TABLE ENTRY 13600001 PSW EQU 0 PSW OFFSET IN TABLE ENTRY 13650001 T EQU 2 OFFSET FOR ENTRY TYPE 13700001 ECCCPM EQU 2 OFFSET FOR EC MODE COND CODE 13750001 * AND PROGRAM MASK 13800001 BCCCPM EQU 4 OFFSET FOR BC MODE COND CODE 13850001 * AND PROGRAM MASK 13900001 BCINTCOD EQU 2 OFFSET FOR BC MODE INT. CODE 13950001 ILC EQU 4 OFFSET OF ILC IN BC MODE PSW 14000001 REG EQU 8 REG OFFSET IN TABLE ENTRY 14050001 REGF EQU 8 REG 15 OFFSET - TABLE ENTRY @YM01922 14060002 REG0 EQU 12 REG 0 OFFSET IN TABLE ENTRY @YM01922 14068002 LOC90 EQU 12 TRANSLATION EXCEPTION ADDR @YM01922 14076002 * OFFSET IN TABLE ENTRY @YM01922 14084002 REG1 EQU 16 REG 1 OFFSET IN TABLE ENTRY @YM01922 14092002 DEV EQU 0 DEVICE FIELD OFFSET IN ENTRY 14100001 CAW EQU 4 CAW OFFSET IN ENTRY 14150001 CSW EQU 8 CSW OFFSET IN TABLE ENTRY 14200001 TRCIOSB EQU 16 IOSB ADDR OFFSET IN ENTRY Y02136 14202002 TRCSTOP EQU 20 OFFSET FOR 'TRACE STOPPED' FLAG 14210001 TRCCPUID EQU 20 OFFSET TO CPUID IN ENTRY @Z40FPYJ 14240040 TRCASIDF EQU 22 OFFSET TO ASID IN ENTRY Y02139 14242002 TCBF EQU 24 OFFSET TO TCB ADDR IN ENTRY 14250001 TIMESTMP EQU 28 OFFSET TO TIME STAMP IN TABLE ENTRY 14300001 ILCRIGHT EQU 17 VALUE TO SHIFT ILC TO RIGHT JUSTIFY 14350001 ILCLEFT EQU 6 VLAUE TO POSITION ILC FOR EXEC OF OI 14400001 ON EQU 255 MASK OF ALL ONES 14450001 M3 EQU 3 MASK FOR ICM OF BYTES 2,3 OF REG 14500001 M4 EQU 4 MASK FOR ICM OF BYTE 1 OF REG 14550001 TWO EQU 2 VALUE OF TWO 14750001 X0F EQU X'0F' MASK TO CLEAR TYPE CODE AREA 14770001 X7F EQU X'7F' MASK TO CLEAR HIGH BIT OF BYTE 14780001 TRON EQU X'80' MASK TO FLAG CPU WAITING @Z40FPYJ 14790040 EJECT 14800002 * ENTRY TYPE CODES 14850001 SPACE 1 14900001 SVCCODE EQU X'20' SVC ENTRY 14950001 EXTCODE EQU X'10' EXTERNAL INTERRUPT ENTRY 15000001 IOCODE EQU X'50' I/O INTERRUPT ENTRY 15050001 PGMCODE EQU X'30' PROGRAM INTERRUPT ENTRY 15100001 SIOCODE EQU X'00' START I/O ENTRY 15150001 DSPCODE EQU X'70' TASK DISPATCHER ENTRY 15200002 SRBCODE1 EQU X'40' EVENT DISPATCHER ENTRY Y02139 15210002 * FOR DISPATCH OF NEW SRB 15220002 SRBCODE2 EQU X'60' EVENT DISPATCHER ENTRY Y02139 15260002 * FOR REDISPATCH OF SUSPENDED SRB 15270002 SPACE 3 15300001 BEGIN EQU * LABEL USED ONLY FOR TESTING PURPOSES 15302002 SPACE 3 15310002 USING FLC,0 15350002 USING STORAGE,R8 Y02139 15360002 EJECT 15400002 *** TRACE ENTRY FOR SVC INTERRUPTS 15450001 SPACE 1 15500001 CNOP 0,8 15520040 USING *,XTRBASE 15550001 TRSVC BAL XTRBASE,PRECOM INITIAL PHASE Y02136 15650002 USING *,XTRBASE 15700001 * RETURN FROM COMMON SUBROUTINE 15750001 LD R0,SVCOPSW TRACE SVC @Z40FPYJ 15800040 STD R0,PSW(TRPTRG) OLD PSW @Z40FPYJ 15810040 L RF,FLCSVILC-C1 GET ILC AND INTERRUPT CODE 15850001 * PUT CC AND PROGRAM MASK IN THEIR BC MODE POSITIONS @Z40FPYJ 15900040 IC XRET,PSW+ECCCPM(TRPTRG) @Z40FPYJ 15905040 STC XRET,PSW+BCCCPM(TRPTRG) @Z40FPYJ 15910040 STH RF,PSW+BCINTCOD(TRPTRG) INT. CODE IN BC MODE @Z40FPYJ 15915040 NI PSW+T(TRPTRG),X0F CLEAR TYPE CODE FIELD @Z40FPYJ 15920040 SRL RF,ILCRIGHT POSITION ILC @Z40FPYJ 15925040 SLL RF,ILCLEFT IN REG 15 FOR @Z40FPYJ 15930040 EX RF,ILCINPSW EXECUTE INTO TRACE PSW @Z40FPYJ 15935040 ST R0,REG0(TRPTRG) PLACE REG 0 IN TABLE ENTRY @YM01922 16000002 SV1 OI PSW+T(TRPTRG),SVCCODE SET THE ENTRY TYPE 16200002 SV2 LA XTRBASE,COMBASE ADJUST BASE REGISTER FOR COMMON 16250001 * CODE 16300001 USING COMBASE,XTRBASE 16350001 B TRCOMM GO TO COMMON TRACE ROUTINE 16400001 USING SV1,XTRBASE 16410001 EJECT 16550002 *** TRACE ENTRY FOR I/O INTERRUPTS 16600001 CNOP 0,8 @Z40FPYJ 16620040 SPACE 1 16650001 USING *,XTRBASE 16700001 TRIO BAL XTRBASE,PRECOM INITIAL PHASE Y02136 16800002 USING *,XTRBASE ADJUST BASE REG 16850001 LD R0,IOOPSW TRACE I/O @Z40FPYJ 16900040 STD R0,PSW(TRPTRG) OLD PSW @Z40FPYJ 16907040 IC XRET,PSW+ECCCPM(TRPTRG) SHIFT THE CC @Z40FPYJ 16914040 STC XRET,PSW+BCCCPM(TRPTRG) AND PRG MASK @Z40FPYJ 16921040 L RF,FLCIOA @Z40FPYJ 16928040 STH RF,PSW+BCINTCOD(TRPTRG) DEV ADDRESS @Z40FPYJ 16935040 OI PSW+T(TRPTRG),IOCODE SET TYPE CODE 17300001 LD R0,FLCCSW TRACE @Z40FPYJ 17440040 STD R0,CSW(TRPTRG) CSW @Z40FPYJ 17440140 L RF,PSATOLD TRACE @Z40FPYJ 17440440 ST RF,TCBF(TRPTRG) OLD TCB @Z40FPYJ 17440940 L RD,PSAAOLD ADDRESS OLD ASCB Y02139 17444002 USING ASCB,RD Y02139 17446002 LH RF,ASCBASID TRACE @Z40FPYJ 17448040 STH RF,TRCASIDF(TRPTRG) ASID @Z40FPYJ 17448340 DROP RD Y02139 17448402 SLR RF,RF CLEAR @Z40FPYJ 17448840 ST RF,TRCIOSB(TRPTRG) RSVD FIELD @Z40FPYJ 17468840 LD R0,TRFP0 RESTORE FP REG @ZA16400 17478840 LM R11,RF,TREGSV RESTORE CALLERS @Z40FPYJ 17508840 L R8,PSAGPREG REGISTERS @Z40FPYJ 17528840 BR XRET RETURN TO CALLER @Z40FPYJ 17548840 EJECT @Z40FPYJ 17600040 *** TRACE ENTRY FROM SIO 17650001 CNOP 0,8 @Z40FPYJ 17670040 USING *,XTRBASE 17700001 TRSIO BAL XTRBASE,PRECOM INITIAL PHASE Y02136 17800002 TRACE EQU TRSIO NAME USED BY SVM IOS SIO ROUTINE 17810002 * RETURN FROM COMMON ROUTINE 17850001 USING *,XTRBASE 17900001 ST R6,DEV(TRPTRG) STORE DEVICE 17950001 L RF,TREGSV12 GET CC REG @Z40FPYJ 18002040 N RF,CC LEAVE CC @Z40FPYJ 18003040 STC RF,DEV(TRPTRG) TRACE CC @Z40FPYJ 18004040 L RF,FLCCAW TRACE @Z40FPYJ 18050040 ST RF,CAW(TRPTRG) CAW @Z40FPYJ 18060040 LD R0,FLCCSW TRACE @Z40FPYJ 18100040 STD R0,CSW(TRPTRG) CSW @Z40FPYJ 18130040 USING SRBSECT,R1 Y02139 18200402 L RF,SRBPTCB TRACE @Z40FPYJ 18200840 ST RF,TCBF(TRPTRG) PURGE TCB @Z40FPYJ 18200940 L RF,SRBPARM TRACE @Z40FPYJ 18258040 ST RF,TRCIOSB(TRPTRG) IOSB @Z40FPYJ 18261040 USING IOSB,RF @Z40FOYJ 18264040 L RF,IOSASID-C2 TRACE @Z40FPYJ 18265040 STH RF,TRCASIDF(TRPTRG) ASID @Z40FPYJ 18266040 DROP R1 Y02139 18268002 *** NOTE --- TYPE CODE IS 0 SO IMPLICITLY SET 18550001 LD R0,TRFP0 RESTORE FP REG @ZA16400 18555040 LM R11,RF,TREGSV RESTORE CALLERS @Z40FPYJ 18570040 L R8,PSAGPREG REGISTERS @Z40FPYJ 18580040 BR XRET RETURN TO CALLER @Z40FPYJ 18590040 EJECT 18650002 *** TRACE ENTRY FOR EXTERNAL INTERRUPT 18700001 CNOP 0,8 @Z40FPYJ 18720040 SPACE 1 18750001 USING *,XTRBASE 18800001 TREX BAL XTRBASE,PRECOM2 INITIAL PHASE @Z40FPYJ 18900040 USING *,XTRBASE 18950001 BASE3 ST R0,REG+4(TRPTRG) TRACE REG 0 @Z40FPYJ 19000040 LD R0,EXOPSW LOAD EXTOPSW @Z40FPYJ 19008040 ST RF,REG(TRPTRG) TRACE REG 15 @Z40FPYJ 19016040 STD R0,PSW(TRPTRG) TRACE EXT OPSW @Z40FPYJ 19024040 ST R1,REG+8(TRPTRG) TRACE REG 1 @Z40FPYJ 19032040 L RF,FLCEICOD-C2 GET INT CODE AND PRECEEDING 0'S 19100001 * FROM LOW CORE 19150001 LR RE,RF SAVE INTERRUPT CODE Z40FPYJ 19170040 * PUT CC AND PROGRAM MASK IN THEIR BC MODE POSITIONS @Z40FPYJ 19200040 IC XRET,PSW+ECCCPM(TRPTRG) @Z40FPYJ 19205040 STC XRET,PSW+BCCCPM(TRPTRG) @Z40FPYJ 19210040 STH RF,PSW+BCINTCOD(TRPTRG) INT. CODE IN BC MODE @Z40FPYJ 19215040 NI PSW+T(TRPTRG),X0F CLEAR TYPE CODE FIELD @Z40FPYJ 19220040 SRL RF,ILCRIGHT POSITION ILC @Z40FPYJ 19225040 SLL RF,ILCLEFT IN REG 15 FOR @Z40FPYJ 19230040 EX RF,ILCINPSW EXECUTE INTO TRACE PSW @Z40FPYJ 19235040 OI PSW+T(TRPTRG),EXTCODE INDICATE INTERRUPT TYPE 19500001 CH RE,COMPINTC COMPARATOR INTERRUPT @Z40FPYJ 19650040 BNE EXT5 NO, TRACE CURRENT TCB AND ASID 19700002 L XRET,PSAPCCAV YES, ADDRESS PCCA Y02139 19750002 USING PCCA,XRET Y02139 19800002 L XRET,PCCATQEP TRY TO ADDRESS TQE Y02139 19810002 LTR XRET,XRET HAS TQE BEEN PURGED Y02139 19812002 BZ EXT4 YES, TRACE ZERO TCB ADDRESS AND ASID*19814002 Y02139 19824002 USING TQE,XRET 19860002 L RF,TQETCB TRACE @Z40FPYJ 19870040 ST RF,TCBF(TRPTRG) TCB @Z40FPYJ 19873040 LH RF,TQEAID TRACE @Z40FPYJ 19880040 STH RF,TRCASIDF(TRPTRG) ASID @Z40FPYJ 19883040 DROP XRET 19890002 LD R0,TRFP0 RESTORE FP REG @ZA16400 19895040 LM R11,RF,TREGSV RESTORE CALLERS @Z40FPYJ 19940040 L R8,PSAGPREG REGISTERS @Z40FPYJ 19980040 BR XRET RETURN TO CALLER @Z40FPYJ 20020040 CNOP 0,8 20060040 EXT4 ST XRET,TCBF(TRPTRG) TRACE ZERO TCB ADDRESS Y02139 20160002 STH XRET,TRCASIDF(TRPTRG) TRACE ZERO ASID Y02139 20162002 LD R0,TRFP0 RESTORE FP REG @ZA16400 20166040 LM R11,RF,TREGSV RESTORE CALLERS @Z40FPYJ 20171040 L R8,PSAGPREG REGISTERS @Z40FPYJ 20172040 BR XRET RETURN TO CALLER @Z40FPYJ 20173040 CNOP 0,8 20174040 SPACE 1 20175040 EXT5 L RF,PSATOLD TRACE @Z40FPYJ 20180040 ST RF,TCBF(TRPTRG) TCB @Z40FPYJ 20180640 L RD,PSAAOLD ADDRESS ASCB Y02139 20182002 USING ASCB,RD Y02139 20184002 LH RF,ASCBASID TRACE @Z40FPYJ 20186040 STH RF,TRCASIDF(TRPTRG) ASID @Z40FPYJ 20186640 DROP RD Y02139 20188002 LD R0,TRFP0 RESTORE FP REG @ZA16400 20188240 LM R11,RF,TREGSV RESTORE CALLERS @Z40FPYJ 20188840 L R8,PSAGPREG REGISTERS @Z40FPYJ 20189240 BR XRET RETURN TO CALLER @Z40FPYJ 20189640 EJECT 20400002 *** TRACE ENTRY FOR TASK DISPATCHER 20450002 CNOP 0,8 @Z40FPYJ 20470040 SPACE 1 20500001 USING *,XTRBASE 20550001 TRDISP BAL XTRBASE,PRECOM3 INITIAL PHASE @Z40FPYJ 20650040 USING *,XTRBASE 20700001 BASE2 ST R0,REG+4(TRPTRG) TRACE 0, @Z40FPYJ 20750040 LD R0,PSAPSWSV GET PSW @Z40FPYJ 20770040 ST RF,REG(TRPTRG) TRACE REG 15 @Z40FPYJ 20810040 STD R0,PSW(TRPTRG) TRACE PSW @Z40FPYJ 20840040 ST R1,REG+8(TRPTRG) TRACE REG 1 @Z40FPYJ 20870040 L RD,PSATOLD GET TCB ADDRESS DCRR 20889 20980002 LTR RD,RD IS TCB AVAILABLE? @YM02115 20980202 BNZ FINDRB BRANCH WHEN AVAILABLE @YM02115 20980402 SR RF,RF INDICATE NO ILC OR @YM02115 20980602 * INTERRUPT CODE AVAILABLE @YM02115 20980802 B CONVPSW GO CONVERT PSW @YM02115 20981002 CNOP 0,8 @Z40FPYJ 20981140 FINDRB EQU * USED ONLY WHEN TCB @YM02115 20981202 * ADDRESS IS AVAILABLE @YM02115 20981402 USING TCB,RD DCRR 20889 20982002 L RD,TCBRBP GET RB ADDR FROM TCB DCRR 20889 20990002 DROP RD DCRR 20889 20990402 S RD,RBPFXLEN GET START OF PREFIX DCRR 20889 20992002 USING RBPRFXST,RD DCRR 20889 20994002 L RF,RBINLNTH-C1 GET ILC AND CODE @Z40FPYJ 20996040 CONVPSW EQU * USED ONLY WHEN TCB @YM02115 20998602 * ADDRESS IS NOT AVAILABLE @YM02115 20999202 * PUT CC AND PROGRAM MASK IN THEIR BC MODE POSITIONS @Z40FPYJ 21000040 IC XRET,PSW+ECCCPM(TRPTRG) @Z40FPYJ 21010040 STC XRET,PSW+BCCCPM(TRPTRG) @Z40FPYJ 21020040 STH RF,PSW+BCINTCOD(TRPTRG) INT. CODE IN BC MODE @Z40FPYJ 21030040 NI PSW+T(TRPTRG),X0F CLEAR TYPE CODE FIELD @Z40FPYJ 21040040 SRL RF,ILCRIGHT POSITION ILC @Z40FPYJ 21050040 SLL RF,ILCLEFT IN REG 15 FOR @Z40FPYJ 21060040 EX RF,ILCINPSW EXECUTE INTO TRACE PSW @Z40FPYJ 21070040 OI PSW+T(TRPTRG),DSPCODE INSERT ENTRY TYPE 21696002 L RF,PSATOLD TRACE @Z40FPYJ 21698040 ST RF,TCBF(TRPTRG) TCB @Z40FPYJ 21698140 L RD,PSAAOLD ADDRESS ASCB Y02139 21698802 USING ASCB,RD Y02139 21699202 LH RF,ASCBASID TRACE @Z40FPYJ 21699640 STH RF,TRCASIDF(TRPTRG) ASID @Z40FPYJ 21705940 DROP RD Y02139 21706940 LD R0,TRFP0 RESTORE FP REG @ZA16400 21707440 LM R11,RF,TREGSV RESTORE CALLERS @Z40FPYJ 21715940 L R8,PSAGPREG REGISTERS @Z40FPYJ 21723940 BR XRET RETURN TO CALLER @Z40FPYJ 21731940 EJECT 21750002 *** TRACE ENTRY FOR EVENT DISPATCHER Y02139 21890402 *** ON INITIAL DISPATCH OF SRB Y02139 21890802 CNOP 0,8 @Z40FPYJ 21891040 SPACE 1 21891202 USING *,XTRBASE 21891602 TRSRB1 BAL XTRBASE,PRECOM INITIAL PHASE 21891702 USING *,XTRBASE 21891802 ST R0,REG+4(TRPTRG) TRACE REG 0 @Z40FPYJ 21893140 LD R0,PSAPSWSV TRACE @Z4OFPYJ 21894140 STD R0,PSW(TRPTRG) PSW @Z40FPYJ 21896140 ST R1,REG+8(TRPTRG) TRACE REG 1 @Z40FPYJ 21896540 SR RF,RF INDICATE ZERO ILC AND INTCOD 21897402 * PUT CC AND PROGRAM MASK IN THEIR BC MODE POSITIONS @Z40FPYJ 21898440 IC XRET,PSW+ECCCPM(TRPTRG) @Z40FPYJ 21898540 STC XRET,PSW+BCCCPM(TRPTRG) @Z40FPYJ 21898640 STH RF,PSW+BCINTCOD(TRPTRG) INT. CODE IN BC MODE @Z40FPYJ 21898740 NI PSW+T(TRPTRG),X0F CLEAR TYPE CODE FIELD @Z40FPYJ 21898840 SRL RF,ILCRIGHT POSITION ILC @Z40FPYJ 21898940 SLL RF,ILCLEFT IN REG 15 FOR @Z40FPYJ 21899040 EX RF,ILCINPSW EXECUTE INTO TRACE PSW @Z40FPYJ 21899140 OI PSW+T(TRPTRG),SRBCODE1 INSERT ENTRY TYPE 21906602 L RD,PSAAOLD ADDRESS ASCB 21908602 USING ASCB,RD 21909002 LH RD,ASCBASID GET OLD ASID 21909402 DROP RD 21909502 ST RD,REG(TRPTRG) TRACE OLD ASID 21909702 LR RE,R0 ADDRESS SRB 21909802 USING SRBSECT,RE 21910102 L RF,SRBPASID-C2 TRACE @Z40FPYJ 21911140 STH RF,TRCASIDF(TRPTRG) PURGE ASID @Z40FPYJ 21911240 L RF,SRBPTCB TRACE @Z40FPYJ 21911540 ST RF,TCBF(TRPTRG) TCB @Z40FPYJ 21911840 DROP RE 21912840 LD R0,TRFP0 RESTORE FP REG @ZA16400 21913040 LM R11,RF,TREGSV RESTORE CALLERS @Z40FPYJ 21913440 L R8,PSAGPREG REGISTERS @Z40FPYJ 21913840 BR XRET RETURN TO CALLER @Z40FPYJ 21914040 SPACE 3 21914202 *** TRACE ENTRY FOR EVENT DISPATCHER Y02139 21915402 *** ON REDISPATCH OF SUSPENDED SRB Y02139 21918202 CNOP 0,8 @Z40FPYJ 21919240 SPACE 1 21921002 USING *,XTRBASE 21923802 TRSRB2 BAL XTRBASE,PRECOM INITIAL PHASE 21935202 USING *,XTRBASE 21937202 ST R0,REG+4(TRPTRG) TRACE REG 0 @Z40FPYJ 21937340 LD R0,PSAPSWSV TRACE @Z40FPYJ 21937440 STD R0,PSW(TRPTRG) PSW @Z40FPYJ 21937540 ST R1,REG+8(TRPTRG) TRACE REG 1 @Z40FPYJ 21937640 SR RF,RF INDICATE ZERO ILC AND INTCOD 21938002 * PUT CC AND PROGRAM MASK IN THEIR BC MODE POSITIONS @Z40FPYJ 21938240 IC XRET,PSW+ECCCPM(TRPTRG) @Z40FPYJ 21941240 STC XRET,PSW+BCCCPM(TRPTRG) @Z40FPYJ 21944240 STH RF,PSW+BCINTCOD(TRPTRG) INT. CODE IN BC MODE @Z40FPYJ 21947240 NI PSW+T(TRPTRG),X0F CLEAR TYPE CODE FIELD @Z40FPYJ 21950240 SRL RF,ILCRIGHT POSITION ILC @Z40FPYJ 21953240 SLL RF,ILCLEFT IN REG 15 FOR @Z40FPYJ 21956240 EX RF,ILCINPSW EXECUTE INTO TRACE PSW @Z40FPYJ 21959240 OI PSW+T(TRPTRG),SRBCODE2 INSERT ENTRY TYPE 21976102 L RD,PSAAOLD ADDRESS ASCB 21976602 USING ASCB,RD 21976702 LH RD,ASCBASID GET OLD ASID 21976802 DROP RD 21978002 ST RD,REG(TRPTRG) TRACE OLD ASID 21980002 L RD,PSALCCAV ADDRESS LCCA 21982002 USING LCCA,RD 21982102 L RF,LCCAPGTA-C2 TRACE @Z40FPYJ 21982340 STH RF,TRCASIDF(TRPTRG) ASID @Z40FPYJ 21982440 L RD,LCCAPGTA+C2 TRACE @Z40FPYJ 21982540 ST RD,TCBF(TRPTRG) TCB @Z40FPYJ 21982940 DROP RD 21983040 LD R0,TRFP0 RESTORE FP REG @ZA16400 21983240 LM R11,RF,TREGSV RESTORE CALLERS @Z40FPYJ 21983740 L R8,PSAGPREG REGISTERS @Z40FPYJ 21983940 BR XRET RETURN TO CALLER @Z40FPYJ 21984140 EJECT 21984902 *** TRACE ENTRY FOR PROGRAM INTERRUPTS 21988702 CNOP 0,8 @Z40FPYJ 21993740 SPACE 1 22000001 USING *,XTRBASE 22050001 TRPI BAL XTRBASE,PRECOM INITIAL PHASE Y02139 22150002 USING *,XTRBASE 22200001 LD R0,PIOPSW TRACE @Z40FPYJ 22250040 STD R0,PSW(TRPTRG) PSW @Z40FPYJ 22260040 L RF,FLCPIILC-C1 GET ILC,INT.CODE AND LEADING 0'S 22300001 * PUT CC AND PROGRAM MASK IN THEIR BC MODE POSITIONS @Z40FPYJ 22350040 IC XRET,PSW+ECCCPM(TRPTRG) @Z40FPYJ 22355040 STC XRET,PSW+BCCCPM(TRPTRG) @Z40FPYJ 22360040 STH RF,PSW+BCINTCOD(TRPTRG) INT. CODE IN BC MODE @Z40FPYJ 22365040 NI PSW+T(TRPTRG),X0F CLEAR TYPE CODE FIELD @Z40FPYJ 22370040 SRL RF,ILCRIGHT POSITION ILC @Z40FPYJ 22375040 SLL RF,ILCLEFT IN REG 15 FOR @Z40FPYJ 22380040 EX RF,ILCINPSW EXECUTE INTO TRACE PSW @Z40FPYJ 22385040 COMBASE L RF,FLCTEA GET TRANSLATION EXCEPTION @YM01922 22430002 * ADDRESS @YM01922 22460002 ST RF,LOC90(TRPTRG) PLACE IT IN TABLE ENTRY @YM01922 22500002 OI PSW+T(TRPTRG),PGMCODE SET ENTRY TYPE @YM01922 22600002 SPACE 3 22750001 * THIS PORTION COMMON TO SVC AND PROGRAM INTERRUPT CODE 22800001 SPACE 1 22850001 TRCOMM ST R1,REG1(TRPTRG) PLACE REG 1 IN TABLE VALUE 22900040 L RF,TREGSV15 RESTORE 15 TO ENTRY VALUE 22930040 ST RF,REGF(TRPTRG) PLACE REG 15 IN TABLE ENTRY 23000002 L RF,PSATOLD TRACE @Z40FPYJ 23096040 ST RF,TCBF(TRPTRG) TCB @Z40FPYJ 23096640 L RD,PSAAOLD ADDRESS ASCB Y02139 23098402 USING ASCB,RD Y02139 23098802 LH RF,ASCBASID TRACE @VS40131 23099240 STH RF,TRCASIDF(TRPTRG) ASID @Z40FPYJ 23099540 DROP RD Y02139 23099602 LD R0,TRFP0 RESTORE FP REG @ZA16400 23099840 LM R11,RF,TREGSV RESTORE CALLERS @Z40FPYJ 23140040 L R8,PSAGPREG REGISTERS @Z40FPYJ 23180040 BR XRET RETURN TO CALLER @Z40FPYJ 23220040 EJECT 23300002 *** PRECOMMON -- PERFORM INIT FOR ALL ENTRIES 23350001 CNOP 0,8 @Z40FPYJ 23370040 SPACE 2 23400001 TRCOM1 EQU * BEGINNING OF CODE WHICH @ZA16400 23410040 * SAVES REGISTERS @ZA16400 23420040 PRECOM ST R8,PSAGPREG SAVE REG 8 Y02136 23450002 * THE ABOVE AREA CAN BE USED 23458002 * BECAUSE TRACE MUST ALWAYS 23466002 * BE ENTERED DISABLED 23474002 PRECOMA NI FLCTRACE,X'FF'-TRON TURN OFF CPU WAITING FLAG @Z40FPYJ 23478040 PRECOMB L R8,PSALCCAV ADDRESS LOGICAL CCA @Z40FPYJ 23482040 USING LCCA,R8 Y02136 23484002 L R8,LCCACPUS ADDRESS WORK/SAVE AREA VT Y02136 23486002 USING WSAC,R8 Y02136 23488002 L R8,WSACCWSA ADDRESS LOWEST LEVEL WSA Y02136 23488402 USING STORAGE,R8 Y02136 23490002 STD R0,TRFP0 SAVE FP REG @ZA16400 23491040 STM R11,RF,TREGSV SAVE REGS 11 THRU 15 23492002 TRCOM2 EQU * END OF CODE WHICH SAVES @ZA16400 23492640 * REGISTERS @ZA16400 23493240 BALR XRET,0 SET BASE 23494002 USING *,XRET 23500001 L TRTAPTR,FLCTRACE GET ADDRESS OF TRACE HEADER 23600040 USING TRHDR,TRTAPTR GPR 13 23650001 FCH L TRPTRG,TRPTR GET ADDRESS OF CURRENT ENTRY Y02136 23700002 RET1 LR RE,TRPTRG SAVE ADDRESS OF CURRENT ENTRY Y02136 23710040 LA TRPTRG,ENTLEN(TRPTRG) POINT TO NEXT ENTRY 23750001 CL TRPTRG,TREND ARE WE AT END OF TABLE 23800001 BNL TREOT YES, GO WRAP AROUND 23850001 STR CS RE,TRPTRG,TRPTR NO, UPDATE THE POINTER Y02136 23870002 BNZ FCH ANOTHER CPU UPDATED IT, RETRY Y02136 23930002 STCK CLOCK STORE THE TOD CLOCK 23950001 BZ GOODTIME DID THE CLOCK WORK Y02139 23960002 XC CLOCKV(C4),CLOCKV NO, RECORD TIME ZERO Y02139 23970002 GOODTIME MVC TIMESTMP(C4,TRPTRG),CLOCKV BYTES 2-5 OF CLOCK 24000002 L RE,PSACPUSA-C2 GET PHYSICAL CPU ADDR @Z40FPYJ 24014040 A RE,LOGCPU MAKE IT LOGICAL ADDR @Z40FPYJ 24018040 STH RE,TRCCPUID(TRPTRG) TRACE IT AND CLEAR STOP FLG @Z40FPYJ 24022040 BR XTRBASE RETURN TO CALLER 24050001 TREOT L TRPTRG,TRBEG RESET POINTER TO BEGIN OF TABLE 24100001 B STR BACK TO STORE IT 24150001 TRCEEND EQU * AS FAR AS IEAVESPR IS CONCERNED, @ZA16400 24156040 * THE END OF TRACE, BECAUSE THIS @ZA16400 24162040 * IS THE HIGHEST INSTRUCTION ADDR. @ZA16400 24168040 * WHICH WILL BE EXECUTED WITHIN @ZA16400 24174040 * TRACE AFTER REGISTERS HAVE BEEN @ZA16400 24180040 * SAVED. (THE EXECUTED INSTR. IS @ZA16400 24186040 * A TRIVIAL EXCEPTION.) @ZA16400 24192040 DROP TRTAPTR 24200001 DROP XRET 24210002 EJECT @Z40FPYJ 24250040 *** EXT PRECOMMON - ELIMINATE ENTRIES WHILE WAITING @Z40FPYJ 24251040 CNOP 0,8 @Z40FPYJ 24252040 SPACE 1 @Z40FPYJ 24253040 PRECOM2 ST R8,PSAGPREG SAVE REG 8 @Z40FPYJ 24254040 USING BASE3,XTRBASE @Z40FPYJ 24254140 TM FLCTRACE,TRON IS CPU WAITING? @Z40FPYJ 24254240 BNO PRECOMB NO, GO TRACE @Z40FPYJ 24254340 LH R8,FLCEICOD GET EXT.INT.CODE @Z40FPYJ 24254440 CH R8,COMPINTC CLOCK COMP? @Z40FPYJ 24257840 BNE PRECOMA NO, TRACE IT @Z40FPYJ 24258840 EXIT1 L R8,PSAGPREG RESTORE R8 @Z40FPYJ 24259840 BR XRET RETURN-NO TRACE @Z40FPYJ 24260840 DROP XTRBASE 24261840 SPACE 3 @Z40FPYJ 24270040 *** DISP PRECOMMON - ELIMINATE ENTRIES WHILE WAITING @Z40FPYJ 24271040 CNOP 0,8 @Z40FPYJ 24272040 SPACE 1 @Z40FPYJ 24273040 PRECOM3 ST R8,PSAGPREG SAVE REG 8 @Z40FPYJ 24274040 USING BASE2,XTRBASE @Z40FPYJ 24274140 L R8,PSAPSWSV+C4 2ND WORD OF PSW @Z40FPYJ 24274240 LTR R8,R8 IS IT ZERO? @Z40FPYJ 24274340 BNZ PRECOMA NO, GO TRACE @Z40FPYJ 24274440 TM FLCTRACE,TRON YES, ARE WE WAITING @Z40FPYJ 24274540 BO EXIT1 EXIT @Z40FPYJ 24274640 OI FLCTRACE,TRON TURN ON CPU WAITING FLAG @Z40FPYJ 24274740 B PRECOMB GO TO COMMON @Z40FPYJ 24274840 EJECT @Z40FPYJ 25250040 * THIS INSTRUCTION IS THE SUBJECT OF AN EXECUTE INST. 25300001 * IT INSERTS THE ILC INTO BITS 32 AND 33 OF PSW IN TRACE TABLE 25350001 SPACE 1 25400001 CNOP 0,8 @Z40FPYJ 25420040 ILCINPSW OI PSW+ILC(TRPTRG),0 EXECUTED INSTRUCTION 25450001 DROP XTRBASE 25500040 EJECT 25550002 *** CONSTANTS AND WORK AREAS 25600001 SPACE 2 25650001 RBPFXLEN DC A(RBPRFLNA) LENGTH OF RB PREFIX DCRR 20889 25700002 CC DC X'00000030' @Z40FPYJ 25750040 LOGCPU DC X'00000040' LOGICAL CPU VALUE @Z40FPYJ 25770040 COMPINTC DC X'1004' CLOCK COMPARATOR EXT. INT. CODE 26000001 SPACE 3 26060002 *** DSECT DEFINITIONS OF CONTROL BLOCKS AND WORK AREAS 26100001 SPACE 2 26150001 STORAGE DSECT CCA COMMON WORK/SAVE AREA Y02136 26160002 CLOCK DS D WORK AREA FOR READING TOD CLOCK 26170002 CLOCKV EQU CLOCK+2 ONLY BYTES 2-5 TRACED 26180002 SPACE 2 26190002 TREGSV DS 5F REGISTER SAVE AREA R11-15 26192002 TREGSV12 EQU TREGSV+4 SLOT FOR GPR 12 26192402 TREGSV15 EQU TREGSV+16 SLOT FOR GPR 15 26194002 TREG8SV DS F REGISTER 8 SAVE AREA Y02136 26194402 TRFP0 DS D SLOT FOR FP REG 0 @ZA16400 26195440 SPACE 2 26198002 IEAPXNIP TRACE=MAP TRACE TABLE HEADER 26410002 EJECT 26450001 *** FIXED LOW CORE AND PREFIXED STORAGE AREA DESCRIPTION 26500002 IHAPSA 26650002 PSACPUID EQU PSACPULA+1 SECOND BYTE OF LOGICAL ADDR. TRACED 26660002 EJECT 26700001 *** REQUEST BLOCK DESCRIPTION 26950001 IHARB 27000002 EJECT 27050001 *** TASK CONTROL BLOCK DESCRIPTION 27100001 IKJTCB 27150001 EJECT 27200001 *** ADDRESS SPACE CONTROL BLOCK DESCRIPTION 27222002 IHAASCB 27224002 EJECT 27230002 *** TIMER QUEUE ELEMENT DESCRIPTION 27250001 IHATQE 27300001 EJECT 27350001 *** DESCRIPTION OF SERVICE REQUEST BLOCK 27400002 IHASRB 27450002 IECDIOSB 27451040 EJECT 27452002 *** DESCRIPTION OF PHYSICAL CCA ELEMENT 27486002 IHAPCCA 27496002 EJECT 27498002 *** DESCRIPTION OF LOGICAL CCA ELEMENT 27498402 IHALCCA 27498802 EJECT 27499202 *** DESCRIPTION OF WORK/SAVE AREA VECTOR TABLE 27499602 IHAWSAVT CLASS=CPU 27499702 END 27500001