TITLE 'IEAVEDS0 - PROLOGUE' 00040002 * /* START OF SPECIFICATIONS **** 00060002 * 00080002 *01* MODULE-NAME = IEAVEDS0 00100002 * 00120002 *02* CSECT-NAME = IEAVEDS0 00140002 * 00160002 *01* DESCRIPTIVE-NAME = DISPATCHER 00180002 * 00200002 *01* COPYRIGHT = NONE 00220002 * 00240002 *01* STATUS = CHANGE LEVEL 0 00260002 * 00280002 *01* FUNCTION = DISPATCHES TASKS, LOCAL SUPERVISOR ROUTINES AND SRB'S. 00300002 * 00320002 *02* OPERATION =THE DISPATCHER SCANS VARIOUS INDICATORS FOR WORK TO 00340002 * BE DONE WHENEVER IT IS ENTERED. IT STARTS BY TESTING FOR ANY 00360002 * SPECIAL EXITS WHICH MAY HAVE BEEN INDICATED BY SOME SYSTEM 00380002 * FUNCTION SUCH AS VARY CPU PROCESSING OR ACR. IF NONE OF THE 00400002 * SPECIAL EXITS HAVE BEEN SPECIFIED THE DISPATCHER SCANS ITS 00420002 * VARIOUS QUEUES FOR SRBS, LOCAL SUPERVISOR ROUTINES OR TASKS TO 00440002 * DISPATCH. QUEUES ARE SCANNED IN THIS ORDER; THE GLOBAL 00460002 * SERVICE MANAGER QUEUE, THE GLOBAL SERVICE PRIORITY LIST, THE 00480002 * LOCAL SERVICE MANAGER QUEUE, THE PSAANEW FIELD (FOR ADDRESS 00500002 * SPACE SWITCH), THE LOCAL SERVICE PRIORITY LIST, THE LOCAL LOCK 00520002 * IS CHECKED FOR LOCAL SUPERVISOR ROUTINES, AND THE TCB 00540002 * DISPATCHING QUEUE IS SCANNED FOR READY TASKS. IF NO WORK IS 00560002 * FOUND IN THE SYSTEM, THE WAIT TASK IS DISPATCHED. 00580002 * 00600002 *01* NOTES = 00620002 * 00640002 *02* DEPENDENCIES = NONE 00660002 * 00680002 *03* CHARACTER-CODE-DEPENDENCIES = CHARACTER CODE INDEPENDENT 00700002 * 00720002 *02* RESTRICTIONS = NONE 00740002 * 00760002 *02* REGISTER-CONVENTIONS = DEFINED IN THE EQUATES SECTION OF THIS 00780002 * MODULE 00800002 * 00820002 *02* PATCH-LABEL = NUCLEUS PATCH AREA 00840002 * 00860002 *01* MODULE-TYPE = PROCEDURE 00880002 * 00900002 *02* PROCESSOR = ASSEMBLER-370R 00920002 * 00940002 *02* MODULE-SIZE = SEE ESD FOR THIS MODULE 00960002 * 00980002 *02* ATTRIBUTES = NUCLEUS|SUPERVISOR MODE|REFRESHABLE|FIXED| 01000002 * ZERO PROTECT KEY|DISABLED 01020002 * 01040002 *01* ENTRY-POINT = IEA0DS 01060002 * 01080002 *02* PURPOSE = MAIN DISPATCHER ENTRY POINT. DISABLED, KEY ZERO, 01100002 * SUPERVISOR MODE AND NO LOCKS EXCEPT PERHAPS THE LOCAL LOCK 01120002 * WHEN A LOCAL SUPERVISOR ROUTINE IS BEING PREEMPTED. 01140002 * 01160002 *02* LINKAGE = THE DISPATCHER IS ENTERED VIA A BRANCH. NO 01180002 * PARAMETERS ARE PASSED INTO IT. MODULES ENTERING THE 01200002 * DISPATCHER AT THIS POINT ARE: THE INTERRUPT HANDLERS, EXIT 01220002 * PROLOG, VARY CPU PROCESSOR, THE LOCK MANAGER, ETC. 01240002 * 01260002 *02* INPUT = THE DISPATCHER DOES NOT LOOK AT ANY INPUT REGISTERS ON 01280002 * ENTRY. DATA REQUIRED FOR IT'S PROCESSING IS OBTAINED FROM THE 01300002 * SPECIAL EXITS INDICATORS IN THE LCCA, THE GLOBAL SERVICE 01320002 * MANAGER QUEUE HEADER, THE GLOBAL SERVICE PRIORITY LIST, THE 01340002 * LOCAL SERVICE MANAGER QUEUE HEADER, THE PSAANEW AND PSAAOLD 01360002 * FIELDS, THE LOCAL SERVICE PRIORITY LISTS, THE CONDITION OF THE 01380002 * LOCAL LOCK AND THE QUEUE OF TASKS IN AN ADDRESS SPACE. 01400002 * 01420002 *02* OUTPUT = THE DISPATCHER RESTORES THE STATUS (REGISTERS, 01440002 * FLOATING POINT REGISTERS, CPU INTERVAL TIMER VALUE, LOCKING 01460002 * STATUS AND PSW) OF THE UNIT BEING DISPATCHED. THE UNIT BEING 01480002 * DISPATCHED MAY OR MAY NOT BE THE UNIT WHICH WAS CURRENTLY 01500002 * ACTIVE WHEN THE DISPATCHER WAS ENTERED. IF THE UNIT WAS THE 01520002 * CURRENTLY ACTIVE TASK OR LOCAL SUPERVISOR ROUTINE, THE GENERAL 01540002 * PURPOSE REGISTERS AND PSW ARE RESTORED. IF THE UNIT CHOSEN TO 01560002 * BE DISPATCHED WAS NOT THE CURRENT TASK OR LOCAL SUPERVISOR 01580002 * ROUTINE, THE FLOATING POINT REGISTERS, CPU INTERVAL VALUE AND 01600002 * LOCKING STATUS FOR THE UNIT BEING PREEMPTED IS STORED INTO 01620002 * EITHER THE TCB, FOR A TASK, OR INTO THE INTERRUPT HANDLER SAVE 01640002 * AREA (IHSA), FOR A LOCAL SUPERVISOR ROUTINE. THIS INFORMATION 01660002 * MUST ALSO BE RESTORED FOR THE NEW UNIT BEING DISPATCHED. 01680002 * 01700002 *02* REGISTERS-SAVED = NONE 01720002 * 01740002 *02* REGISTER-USAGE = REG 9 - BASE REGISTER , REGISTER 8 - CURRENT 01760002 * ASCB ADDRESS, REGISTER 7 - LCCA ADDRESS. ALL OTHER REGISTER 01780002 * USAGE VARIES AT DIFFERENT POINTS WITHIN THE MODULE. 01800002 * 01820002 *02* REGISTERS-RESTORED = ALL OF THE REGISTERS FOR A LOCAL 01840002 * SUPERVISOR ROUTINE, A SUSPENDED SRB, OR A TASK ARE RESTORED AT 01860002 * DISPATCH. ON THE INITIAL DISPATCH OF AN SRB, REGISTER 0 IS 01880002 * SET TO THE ADDRESS OF THE SRB, REGISTER 1 CONTAINS THE ADDRESS 01900002 * IN THE PARM FIELD OF THE SRB, REGISTER 14 CONTAINS THE RETURN 01920002 * ADDRESS TO THE DISPATCHER AND REGISTER 15 CONTAINS THE ENTRY 01940002 * POINT ADDRESS OF THE SRB ROUTINE. ON THE DISPATCH OF THE WAIT 01960002 * TASK, ALL REGISTERS ARE SET TO ZERO. 01980002 * 02000002 *01* ENTRY-POINT = IEAVDSTC @Z40FPXJ 02000840 * @Z40FPXJ 02001640 *02* PURPOSE = ENTRY POINT FOR TCTL FUNCTION IN ORDER TO @Z40FPXJ 02002440 * DISPATCH A TASK, THE ADDRESS OF WHICH IS PASSED IN @Z40FPXJ 02003240 * REGISTER 6. THIS ENTRY IS WITHIN THE PORTION OF THE @Z40FPXJ 02004040 * TASK DISPATCHER AFTER A DISPATCHABLE TASK HAS BEEN @Z40FPXJ 02004840 * CHOSEN.(THE TCTL FUNCTION ALLOWS AN SRB TO GIVE CON- @Z40FPXJ 02005640 * TROL DIRECTLY TO A TASK BY USING THE DISPATCHER @Z40FPXJ 02006440 * FACILITIES). @Z40FPXJ 02007240 * @Z40FPXJ 02008040 *02* LINKAGE = THIS IS A BRANCH ENTRY POINT @Z40FPXJ 02008840 * @Z40FPXJ 02009640 *02* INPUT = THE FOLLOWING REGISTERS ARE SET UP BY TCTL @Z40FPXJ 02010440 * PRIOR TO ENTERING THE DISPATCHER AT THIS POINT: @Z40FPXJ 02011240 * REG 5 - RB ADDRESS, REG 6 - TCB ADDRESS, REG 7 - @Z40FPXJ 02012040 * LCCA ADDRESS, REG 8 - ASCB ADDRESS, REG 9 - DISPATCH- @Z40FPXJ 02012840 * ER BASE ADDRESS, REG 13 - NON-ZERO (USED TO DETERMINE @Z40FPXJ 02013640 * IF ENTRY WAS FROM TCTL FOR LOCAL LOCK PROCESSING @Z40FPXJ 02014440 * @Z40FPXJ 02015240 *02* REGISTERS-SAVED = NONE @Z40FPXJ 02016040 * @Z40FPXJ 02016840 *02* REGISTER-RESTORED = ALL OF THE REGISTERS FOR A TASK @X40FPXJ 02017640 * ARE RESTORED ON EXIT FROM THE DISPATCHER @Z40FPXJ 02018440 * @Z40FPXJ 02019240 *01* ENTRY-POINT = DSSRBRTN @Z40FPXJ 02020040 * @Z40FPXJ 02120040 *02* PURPOSE = ENTRY POINT FOR TYPE 6 SVC. THIS ENTRY IS @Z40FPXJ 02220040 * USED BY THE SVC FLIH WHEN A TYPE 6 SVC ISSUES A @Z40FPXJ 02320040 * SCHEDULE FOR AN SRB. @Z40FPXJ 02420040 * @Z40FPXJ 02520040 *02* LINKAGE = THIS IS A BRANCH ENTRY POINT @Z40FPXJ 02570040 * @Z40FPXJ 02620040 *02* INPUT = THE FOLLOWING REGISTERS ARE SET UP BY TYPE 6 @Z40FPXJ 02670040 * PRIOR TO ENTERING THE DISPATCHER AT THIS POINT: @Z40FPXJ 02720040 * REG 2 -SRB ADDRESS, REG 5 -ASCB ADDRESS, REG 7 - @Z40FPXJ 02770040 * LCCA ADDRESS, REG 8 - ASCB ADDRESS, REG 9 - DISPATCH- @Z40FPXJ 02820040 * ER BASE ADDRESS. @Z40FPXJ 02870040 * @Z40FPXJ 02920040 *02* REGISTERS-SAVED = NONE @Z40FPXJ 02970040 * @Z40FPXJ 03020040 *02* REGISTER-RESTORED = ALL OF THE REGISTERS FOR AN SRB @X40FPXJ 03070040 * ARE RESTORED ON EXIT FROM THE DISPATCHER @Z40FPXJ 03120040 * @Z40FPXJ 03170040 *01* ENTRY-POINT = IEAPDS6 05280002 * 05300002 *02* PURPOSE = THIS ENTRY POINT IS USED BY END-OF-TASK (EOT) WHEN 05320002 * IT HAS DELETED A TASK. THE PURPOSE OF THIS ENTRY IS TO 05340002 * PROVIDE THE FOLLOWING FUNCTIONS: JOB STEP TIMING, CLEARING 05360002 * OF PSATNEW AND PSATOLD AND DECREMENTING OF THE COUNT OF THE 05380002 * NUMBER OF CPUS DISPATCHED IN THE ADDRESS SPACE. ENTRY 05400002 * CONDITIONS ARE: DISABLED, KEY ZERO, SUPERVISOR MODE AND NO 05420002 * LOCKS HELD. 05440002 * 05460002 *02* LINKAGE = THE DISPATCHER IS ENTERED VIA A BRANCH. NO 05480002 * PARAMETERS ARE PASSED INTO IT. EOT IS THE ONLY USER OF THIS 05500002 * ENTRY POINT. 05520002 * 05540002 *02* INPUT = THE DISPATCHER DOES NOT LOOK AT ANY INPUT REGISTERS ON 05560002 * ENTRY. DATA REQUIRED FOR IT'S PROCESSING IS OBTAINED FROM THE 05580002 * SPECIAL EXITS INDICATORS IN THE LCCA, THE GLOBAL SERVICE 05600002 * MANAGER QUEUE HEADER, THE GLOBAL SERVICE PRIORITY LIST, THE 05620002 * LOCAL SERVICE MANAGER QUEUE HEADER, THE PSAANEW AND PSAAOLD 05640002 * FIELDS, THE LOCAL SERVICE PRIORITY LISTS, THE CONDITION OF THE 05660002 * LOCAL LOCK AND THE QUEUE OF TASKS IN AN ADDRESS SPACE. 05680002 * 05700002 *02* OUTPUT = THE DISPATCHER RESTORES THE STATUS (REGISTERS AND 05720002 * PSW) OF THE UNIT BEING DISPATCHED. 05740002 * 05760002 *02* REGISTERS-SAVED = NONE 05780002 * 05800002 *02* REGISTER-USAGE = REG 9 - BASE REGISTER , REGISTER 8 - CURRENT 05820002 * ASCB ADDRESS, REGISTER 7 - LCCA ADDRESS. ALL OTHER REGISTER 05840002 * USAGE VARIES AT DIFFERENT POINTS WITHIN THE MODULE. 05860002 * 05880002 *02* REGISTERS-RESTORED = ALL OF THE REGISTERS FOR A LOCAL 05900002 * SUPERVISOR ROUTINE, A SUSPENDED SRB, OR A TASK ARE RESTORED ON 05920002 * EXIT FROM THE DISPATCHER. ON THE INITIAL DISPATCH OF AN SRB, 05940002 * REGISTER 0 IS SET TO THE ADDRESS OF THE SRB, REGISTER 1 05960002 * CONTAINS THE ADDRESS IN THE PARM FIELD OF THE SRB AND REGISTER 05980002 * 14 CONTAINS THE RETURN POINT TO THE DISPATCHER. ON THE 06000002 * DISPATCH OF THE WAIT TASK, ALL REGISTERS ARE SET TO ZERO. 06020002 * 06040002 *01* ENTRY-POINT = IEAPDS7 06060002 * 06080002 *02* PURPOSE = THIS ENTRY POINT IS USED BY THE I/O AND SVC FLIH'S 06100002 * ON THEIR NORMAL RETURN TO THE DISPATCHER. THE PURPOSE OF 06120002 * THIS ENTRY IS TO BYPASS THE RESTORING OF THE SUPERSTACK 06140002 * ADDRESS BY THE DISPATCHER SINCE IT IS ALREADY HELD BY THE 06160002 * FLIH'S. ENTRY CONDITIONS ARE THE SAME AS FOR THE IEA0DS 06180002 * ENTRY. 06200002 * 06220002 *02* LINKAGE = THE DISPATCHER IS ENTERED VIA A BRANCH. NO 06240002 * PARAMETERS ARE PASSED INTO IT. I/0 AND SVC FLIH'S ARE THE 06260002 * ONLY USERS OF THIS ENTRY POINT. 06280002 * 06300002 *02* INPUT = THE DISPATCHER DOES NOT LOOK AT ANY INPUT REGISTERS ON 06320002 * ENTRY. DATA REQUIRED FOR IT'S PROCESSING IS OBTAINED FROM THE 06340002 * SPECIAL EXITS INDICATORS IN THE LCCA, THE GLOBAL SERVICE 06360002 * MANAGER QUEUE HEADER, THE GLOBAL SERVICE PRIORITY LIST, THE 06380002 * LOCAL SERVICE MANAGER QUEUE HEADER, THE PSAANEW AND PSAAOLD 06400002 * FIELDS, THE LOCAL SERVICE PRIORITY LISTS, THE CONDITION OF THE 06420002 * LOCAL LOCK AND THE QUEUE OF TASKS IN AN ADDRESS SPACE. 06440002 * 06460002 *02* OUTPUT = THE DISPATCHER RESTORES THE STATUS (REGISTERS AND 06480002 * PSW) OF THE UNIT BEING DISPATCHED. 06500002 * 06520002 *02* REGISTERS-SAVED = NONE 06540002 * 06560002 *02* REGISTER-USAGE = REG 9 - BASE REGISTER , REGISTER 8 - CURRENT 06580002 * ASCB ADDRESS, REGISTER 7 - LCCA ADDRESS. ALL OTHER REGISTER 06600002 * USAGE VARIES AT DIFFERENT POINTS WITHIN THE MODULE. 06620002 * 06640002 *02* REGISTERS-RESTORED = ALL OF THE REGISTERS FOR A LOCAL 06660002 * SUPERVISOR ROUTINE, A SUSPENDED SRB, OR A TASK ARE RESTORED ON 06680002 * EXIT FROM THE DISPATCHER. ON THE INITIAL DISPATCH OF AN SRB, 06700002 * REGISTER 0 IS SET TO THE ADDRESS OF THE SRB, REGISTER 1 06720002 * CONTAINS THE ADDRESS IN THE PARM FIELD OF THE SRB AND REGISTER 06740002 * 14 CONTAINS THE RETURN POINT TO THE DISPATCHER. ON THE 06760002 * DISPATCH OF THE WAIT TASK, ALL REGISTERS ARE SET TO ZERO. 06780002 * 06800002 *01* ENTRY-POINT = IEAPDSRT 06820002 * 06840002 *02* PURPOSE = RETURN POINT IN THE DISPATCHER FOR ALL SRB ROUTINES. 06860002 * THE DISPATCHER RESETS ALL SRB MODE INDICATORS AND DOES THE JOB 06880002 * STEP TIMING FOR THE ADDRESS SPACE UNDER WHICH THE SRB WAS 06900002 * RUNNING. ENTRY CONDITIONS ARE: ENABLED OR DISABLED, NO LOCKS, 06920002 * SUPERVISOR MODE. 06940002 * 06960002 *02* LINKAGE = THE DISPATCHER IS ENTERED VIA A BRANCH. NO 06980002 * PARAMETERS ARE PASSED INTO IT. ALL SRB ROUTINES RETURN TO 07000002 * THIS ENTRY POINT. 07020002 * 07040002 *02* INPUT = THE DISPATCHER DOES NOT LOOK AT ANY INPUT REGISTERS ON 07060002 * ENTRY. DATA REQUIRED FOR IT'S PROCESSING IS OBTAINED FROM THE 07080002 * SPECIAL EXITS INDICATORS IN THE LCCA, THE GLOBAL SERVICE 07100002 * MANAGER QUEUE HEADER, THE GLOBAL SERVICE PRIORITY LIST, THE 07120002 * LOCAL SERVICE MANAGER QUEUE HEADER, THE PSAANEW AND PSAAOLD 07140002 * FIELDS, THE LOCAL SERVICE PRIORITY LISTS, THE CONDITION OF THE 07160002 * LOCAL LOCK AND THE QUEUE OF TASKS IN AN ADDRESS SPACE. 07180002 * 07200002 *02* OUTPUT = THE DISPATCHER RESTORES THE STATUS (REGISTERS AND 07220002 * PSW) OF THE UNIT BEING DISPATCHED. 07240002 * 07260002 *02* REGISTERS-SAVED = NONE 07280002 * 07300002 *02* REGISTER-USAGE = REG 9 - BASE REGISTER , REGISTER 8 - CURRENT 07320002 * ASCB ADDRESS, REGISTER 7 - LCCA ADDRESS. ALL OTHER REGISTER 07340002 * USAGE VARIES AT DIFFERENT POINTS WITHIN THE MODULE. 07360002 * 07380002 *02* REGISTERS-RESTORED = ALL OF THE REGISTERS FOR A LOCAL 07400002 * SUPERVISOR ROUTINE, A SUSPENDED SRB, OR A TASK ARE RESTORED ON 07420002 * EXIT FROM THE DISPATCHER. ON THE INITIAL DISPATCH OF AN SRB, 07440002 * REGISTER 0 IS SET TO THE ADDRESS OF THE SRB, REGISTER 1 07460002 * CONTAINS THE ADDRESS IN THE PARM FIELD OF THE SRB AND REGISTER 07480002 * 14 CONTAINS THE RETURN POINT TO THE DISPATCHER. ON THE 07500002 * DISPATCH OF THE WAIT TASK, ALL REGISTERS ARE SET TO ZERO. 07520002 * 07540002 * 07560002 *01* EXIT-NORMAL = GLOBAL SRB DISPATCH 07580002 * 07600002 *02* CONDITIONS = LOAD PSW TO THE SRB ROUTINE, ENABLED, SUPERVISOR 07620002 * MODE, AND IN THE KEY SPECIFIED IN THE SRB. 07640002 * 07660002 *02* OUTPUT = REGISTER 0 CONTAINS THE ADDRESS OF THE SRB, REGISTER 07680002 * 1 CONTAINS THE PARM FIELD FROM THE SRB, REGISTER 14 CONTAINS 07700002 * THE RETURN ADDRESS TO THE DISPATCHER AND REGISTER 15 CONTAINS 07720002 * THE SRB ENTRY POINT ADDRESS. 07740002 * 07760002 *02* RETURN-CODES = NONE 07780002 * 07800002 *01* EXIT-NORMAL = SUSPENDED SRB DISPATCH 07820002 * 07840002 *02* CONDITIONS = LOAD PSW AND ALL REGISTERS TO RE-ESTABLISH THE 07860002 * ENVIRONMENT OF THE SRB WHEN IT WAS SUSPENDED. 07880002 * 07900002 *02* OUTPUT = PSW AND REGISTERS RETURNED TO THEIR STATUS AT 07920002 * SUSPEND. 07940002 * 07960002 *02* RETURN-CODES = NONE 07980002 * 08000002 *01* EXIT-NORMAL = LOCAL SUPERVISOR DISPATCH 08020002 * 08040002 *02* CONDITIONS = LOAD PSW AND ALL REGISTERS TO RE-ESTABLISH THE 08060002 * ENVIRONMENT FOR THE LOCAL SUPERVISOR ROUTINE. THE LOCAL LOCK 08080002 * AND, IF IT WAS HELD, THE CMS LOCK IS ALSO RESTORED. 08100002 * 08120002 *02* OUTPUT = THE ENVIRONMENT IS RESTABLISHED TO WHAT IT WAS WHEN 08140002 * THE LOCAL SUPERVISOR ROUTINE WAS PREEMPTED. 08160002 * 08180002 *02* RETURN-CODES = NONE 08200002 * 08220002 *01* EXIT-NORMAL = TASK DISPATCH 08240002 * 08260002 *02* CONDITIONS = LOAD PSW AND ALL REGISTERS TO RE-ESTABLISH THE 08280002 * ENVIRONMENT OF THE INTERRUPTED TASK. 08300002 * 08320002 *02* OUTPUT = ENVIRONMENT (REGISTERS AND PSW) RESTORED. 08340002 * 08360002 *02* RETURN-CODES = NONE 08380002 * 08400002 *01* EXIT-NORMAL = WAIT TASK DISPATCH 08420002 * 08440002 *02* CONDITIONS = LOAD WAIT PSW AND ZERO ALL REGISTERS. 08460002 * 08480002 *02* OUTPUT = ENABLED WAIT STATE PSW LOADED AND ALL REGISTERS SET 08500002 * TO ZERO. 08520002 * 08540002 *02* RETURN-CODES = NONE 08560002 * 08580002 *01* EXIT-ERROR = NONE 08600002 * 08620002 *02* RETURN-CODES = NONE 08640002 * 08660002 *01* EXTERNAL-REFERENCES = 08680002 * IEAGSMQ - GLOBAL SERVICE MANAGER QUEUE HEADER 08700002 * IEALSMQ - LOCAL SERVICE MANAGER QUEUE HEADER 08720002 * IEAGSPL - GLOBAL SERVICE PRIORITY LIST 08740002 * IEAWTCB - WAIT TCB 08760002 * IEAWPSW - WAIT PSW 08780002 * IEAWASCB - WAIT ASCB 08800002 * IEAMASCB - MASTER'S ASCB 08820002 * IEACMSLK - CMS LOCK 08840002 * 08860002 *02* ROUTINES = 08880002 * IEAVESC1 - GLOBAL SCHEDULE 08900002 * REASON - PLACE GLOBAL SRB'S ONTO THE GLOBAL SPL QUEUE 08920002 * LINKAGE - BRANCH AND LINK R3,R4 08940002 * IEAVESC2 - LOCAL SCHEDULE 08960002 * REASON - PLACE LOCAL SRB'S ONTO THE LOCAL SPL QUEUES 08980002 * LINKAGE - BRANCH AND LINK R3,R4 09000002 * IEA0EF03 - STAGE THREE EXIT EFFECTOR 09020002 * REASON - PLACE IRB'S ONTO THE RB QUEUE 09040002 * LINKAGE BRANCH AND LINK VIA REGISTERS 10,11 09060002 * IEAVRSPN - TIMER RECOVERY SPIN ROUTINE 09140002 * REASON - TO SYNCHRONIZE THE CLOCKS DURING A RECOVERY 09160002 * SEQUENCE. 09180002 * LINKAGE - BRANCH ON REGISTER 15 09200002 * IEAVEMS0 - MEMORY SWITCH 09220002 * REASON - TO CAUSE A SWITCH TO THE MASTER'S ADDRESS SPACE 09240002 * LINKAGE - BRANCH AND LINK ON REGISTERS 14,15 09260002 * TRDISP - TASK TRACE ENTRY 09280002 * REASON - TO TRACE TASK AND LOCAL SUPERVISOR ACTIVITY 09300002 * LINKAGE - BRANCH AND LINK ON REGISTERS 11,10 09320002 * TRSRB1 - INITIAL SRB TRACE ENTRY 09340002 * REASON - TO TRACE INITIAL SRB DISPATCH ACTIVITY 09360002 * LINKAGE - BRANCH AND LINK ON REGISTERS 11,10 09380002 * TRSRB2 - SUSPENDED SRB TRACE ENTRY 09400002 * REASON - TO TRACE ACTIVITY OF SUSPENDED SRBS 09420002 * LINKAGE - BRANCH AND LINK ON REGISTERS 11,10 09440002 * IEADISP1 - INITIAL SRB GTF ENTRY 09460002 * REASON - TO ALLOW GTF TO TRACK INITIAL SRB ACTIVITY 09480002 * LINKAGE - HOOK MACRO 09500002 * IEADISP2 - SUSPENDED SRB GTF ENTRY 09520002 * REASON - TO ALLOW GTF TO TRACK SUSPENDED SRB ACTIVITY 09540002 * LINKAGE - HOOK MACRO 09560002 * IEADISP3 - TCB/LOCAL SUPERVISOR GTF ENTRY 09580002 * REASON - TO ALLOW GTF TO TRACK TASK ACTIVITY 09600002 * LINKAGE - HOOK MACRO 09620002 * 09640002 *02* DATA-AREAS = NONE 09660002 * 09680002 *02* CONTROL-BLOCKS = 09700002 * 1. PSA - W/R 09720002 * 2. LCCA - W/R 09740002 * 3. PCCA - R 09760002 * 4. CVT - R 09780002 * 5. ASCB - W/R 09800002 * 6. ASXB - R 09820002 * 7. TCB - W/R 09840002 * 8. RB - R 09860002 * 9. TQE - W/R 09880002 * 10. SRB - R 09900002 * 11. SSRB - R/D 09920002 * 12. IHSA - W/R 09940002 * 13. IEAVBK - W/R 09960002 * 14. IHAFRRS - W/R 09980002 * 15. CSD - W/R 10000002 * 16. SPL - W/R 10020002 * 17. WSAVT - R 10040002 * 10060002 *01* TABLES = WSACEDS0 - DISPATCHER'S REGISTER SAVE AREA. 10080002 * 10100002 *01* MACROS = 10120002 * 1. HOOK - GTF INTERFACE 10140002 * 2. MODESET - RESET TO KEY ZERO ON RETURN FROM SRB 10160002 * ROUTINE 10180002 * 3. SETLOCK - OBTAIN AND RELEASE OF VARIOUS LOCKS 10200002 * 4. CALLRTM - RTM INTERFACE 10220002 * 5. SCHEDULE - SCHEDULE SRB TO LOCAL QUEUE 10240002 * 6. SETFRR - PURGE FRR STACK 10260002 * 7. FREECELL - FREE SUSPENDED SRB AND SAVE AREA 10280002 * 8. FREEMAIN - FREE SUSPENDED SRB AND SAVE AREA 10300002 * 10320002 *02* SERIALIZATION = 10340002 * 1. GLOBAL DISPATCHER LOCK - SERIALIZE ON THE ASCB 10360002 * DISPATCHING QUEUE AND THE SPL QUEUES 10380002 * 2. LOCAL LOCK - SERIALIZE ON THE TCB DISPATCHING QUEUE 10400002 * 3. SALLOC LOCK - SERIALIZE FREEMAIN 10420002 * 10440002 *01* CHANGE-ACTIVITY = SUPPORT CODES - Y02715,Y02751,Y02752 10460002 * 10480002 *01* MESSAGES = NONE 10500002 * 10520002 *01* ABEND-CODES = 10540002 * 1. 22F - ISSUED WHEN AN SRB IS FOUND ON THE SPL QUEUES 10560002 * WHICH HAS AFFINITY TO A CPU WHICH IS NOT CURRENTLY 10580002 * ONLINE. 10600002 * 2. 072 - ISSUED WHEN A TASK IS FOUND WHICH HAS SPECIFIED 10620002 * USE OF THE CPU INTERVAL TIMER AND THERE ARE CURRENTLY 10640002 * NO CPU TIMERS WORKING ON ANY CPUS. 10660002 * 10680002 **** END OF SPECIFICATIONS ***/ 10700002 TITLE 'IEAVEDS0 - CSECT - ENTRIES' 10720002 IEAVEDS0 CSECT 10740002 SPACE 4 10760002 */*IEAVEDS0: CHART DISPATCHER */ 10780002 */* HEADER 10800002 */* 10820002 */* 10840002 */* 10860002 */* SECTION: 3.1.8.2 10880002 */* DISPATCHER 10900002 */* PAGE # */ 10920002 SPACE 4 10940002 MODID BR=NO MODULE IDENTIFICATION 10960002 SPACE 4 10980002 * BRANCH ENTRY POINTS TO THE DISPATCHER 11000002 ENTRY IEA0DS 11020002 ENTRY DSBASE 11030002 ENTRY IEAPDS2 11040002 ENTRY IEAPDS6 11120002 ENTRY IEAPDS7 11140002 ENTRY IEAPDSRT 11146040 ENTRY IEAVDSTC @Z40FPXJ 11152040 SPACE 2 11180002 * RANGE OF INSTRUCTINS FOR JOB STEP TIMING 11200002 ENTRY IEAVEDS1 11220002 ENTRY IEAVEDS2 11240002 SPACE 2 11245002 * WAIT PSW ALTERED BY NIP PROCESSING 11250002 ENTRY DSWPSW 11255002 SPACE 2 11260002 * LPSW POINTS 11280002 ENTRY LWAITPSW 11300002 ENTRY LISRBPSW 11320002 ENTRY LSSRBPSW 11340002 ENTRY LLSPVPSW 11360002 ENTRY LTASKPSW 11380002 TITLE 'IEAVEDS0 - EQUATES' 11400002 * REGISTER EQUATES 11420002 R0 EQU 0 REGISTER 0 11440002 R1 EQU 1 REGISTER 1 11460002 R2 EQU 2 REGISTER 2 11480002 R3 EQU 3 REGISTER 3 11500002 R4 EQU 4 REGISTER 4 11520002 R5 EQU 5 REGISTER 5 11540002 R6 EQU 6 REGISTER 6 11560002 R7 EQU 7 LCCA ADDRESS 11580002 R8 EQU 8 ASCB ADDRESS 11600002 R9 EQU 9 BASE REGISTER 11620002 RA EQU 10 REGISTER 10 11640002 RB EQU 11 * REGISTERS * 11660002 RC EQU 12 * USED BY * 11680002 RD EQU 13 * LOCK * 11700002 R13 EQU 13 * REG 13 @Z40FPXJ 11710040 RE EQU 14 * MANAGER * 11720002 RF EQU 15 REGISTER 15 11740002 * HEX EQUATES 11760002 DSX0 EQU X'00' HEX ZERO 11780002 DSXFF EQU X'FF' HEX FF 11800002 * LENGTH EQUATES 11820002 DSL0 EQU 0 LENGTH 0 11840002 DSL1 EQU 1 LENGTH 1 11860002 DSL2 EQU 2 LENGTH 2 11880002 DSL3 EQU 3 LENGTH 3 11900002 DSL4 EQU 4 LENGTH 4 11920002 DSL6 EQU 6 LENGTH 6 11940002 DSL8 EQU 8 LENGTH 8 11960002 DSL60 EQU 60 LENGTH 60 11980002 * INCREMENT EQUATES 12000002 DSI0 EQU 0 INCREMENT 0 12020002 DSI1 EQU 1 INCREMENT 1 12040002 * CONDITION CODE MASK EQUATES 12060002 DSCC1 EQU 1 CONDITION CODE 3 - MASK 1 12080002 DSCC2 EQU 2 CONDITION CODE 2 - MASK 2 12100002 DSCC3 EQU 3 CONDITION CODE 2/3 - MASK 3 12120002 DSCC4 EQU 4 CONDITION CODE 1 - MASK 4 12140002 DSCC6 EQU 6 CONDITION CODE 1/2 - MASK 6 12160002 DSCC7 EQU 7 CONDITION CODE 1/2/3 - MASK 7 12180002 DSCC8 EQU 8 CONDITION CODE 0 - MASK 8 12200002 DSCC11 EQU 11 CONDITION CODE 0/2/3 - MASK 11 12220002 DSCC12 EQU 12 CONDITION CODE 0/1 - MASK 12 12240002 * MISCELLANEOUS EQUATES 12260002 DSO3 EQU 3 OFFSET 3 12270002 DSLLHI EQU 1 LOCAL LOCK HELD INDICATOR 12272002 DSCMSHI EQU 2 CMS LOCK HELD INDICATOR 12274002 GSPLSIZ2 EQU 8 NO. BYTES COMPARED FOR SPL TEST 12276002 LSPLSIZ2 EQU 8 NO. BYTES COMPARED FOR SPL TEST 12278002 DSPSWMSK EQU B'11111100' PSW MASK WITH I/O AND EXT DISABLED. 12280002 DSPSWIOE EQU B'00000011' PSW MASK TO ENABLE I/O AND EXT. 12300002 DSLSAV EQU 64 DISPATCHER'S SAVE AREA LENGTH. 12320002 DSRSTKL EQU 340 * 12340002 DSRSTKM1 EQU 256 * RECOVERY STACK MOVE MASKS. 12360002 DSRSTKM2 EQU DSRSTKL-DSRSTKM1 * 12380002 * NOTE THAT DSRSTKL IS PLACED HERE AS AN ABSOLUTE VALUE AND 12400002 * SHOULD BE REPLACED WHEN A MACRO EQUATE BECOMES AVAILABLE. 12420002 DSTRACEM EQU X'FA' TRACE ACTIVE MASK. 12440002 TITLE 'IEAVEDS0 - ENTRY IEA0DS' 12460002 *********************************************************************** 12480002 * * 12500002 * IEA0DS - MAIN DISPATCHER ENTRY POINT * 12520002 * * 12540002 *********************************************************************** 12560002 SPACE 2 12580002 */*IEA0DS: E MAIN DISPATCHER ENTRY POINT */ 12600002 SPACE 2 12620002 IEA0DS DC 0H'0' MAIN DISPATCHER ENTRY POINT 12640002 SPACE 12660002 */* P ESTABLISH ADDRESSABILITY TO THE FLC */ 12680002 SPACE 12700002 USING FLC,R0 FLC-PSA ADDRESSABILITY 12720002 LOADPSA DC 0H'0' ***** FOR TSO TEST ***** 12740002 SPACE 2 12760002 */* P SET SUPER RECOVERY STACK ADDRESS */ 12780002 SPACE 2 12800002 L R1,PSASSTK SUPER STACK ADDRESS. 12820002 ST R1,PSACSTK SET CURRENT TO SUPER STACK ADDRESS. 12840002 SPACE 4 12860002 *********************************************************************** 12880002 * * 12900002 * IEAPDS7 - ENTERED FROM THE I/O AND SVC FLIH'S. THIS IS THE * 12920002 * NORMAL ENTRY POINT FROM THESE FLIH'S. THE SUPER FRR * 12940002 * STACK HAS BEEN ESTABLISHED AS CURRENT PRIOR TO ENTRY * 12960002 * TO THE DISPATCHER. * 12980002 * * 13000002 *********************************************************************** 13020002 SPACE 2 13040002 */*IEAPDS7: E ENTRY FROM SVC AND I/O FLIH'S */ 13060002 SPACE 2 13080002 IEAPDS7 DC 0H'0' SVC AND I/O FLIH ENTRY POINT. 13100002 SPACE 2 13120002 */* P SET DISPATCHER INDICATOR */ 13140002 SPACE 2 13160002 OI PSASUP1,PSADISP SET DISPATCHER INDICATOR 13180002 SPACE 2 13200002 */* P ESTABLISH BASE - REGISTER 9 */ 13220002 SPACE 2 13240002 BALR R9,R0 BASE REGISTER - 9 13260002 DSBASE DC 0H'0' 13280002 USING DSBASE,R9 ADDRESSABILITY 13300002 SPACE 2 13320002 */* P ESTABLISH ADDRESSABILITY TO THE LCCA AND ASCB */ 13340002 SPACE 2 13360002 L R8,PSAAOLD ASCB 13380002 USING ASCB,R8 ADDRESSING 13400002 SPACE 13420002 L R7,PSALCCAV LCCA 13440002 USING LCCA,R7 ADDRESSABILITY 13460002 SPACE 2 13480002 *********************************************************************** 13500002 * * 13520002 * TEST FOR SPECIAL EXITS * 13540002 * * 13560002 *********************************************************************** 13580002 SPACE 2 13600002 */*DS01: D (YES,DS011,NO,) TEST FOR SPECIAL EXITS */ 13620002 SPACE 2 13640002 DS01 DC 0H'0' ENTER FOR SPECIAL EXITS TEST 13660002 CLI LCCADSF1,DSX0 TEST FOR SPECIAL EXITS. 13680002 BNE DS011 YES. GO TO TEST SPECIFIC EXIT. 13700002 SPACE 2 13720002 *********************************************************************** 13740002 * * 13760002 * TEST FOR SRB'S ON THE GSMQ * 13780002 * * 13800002 *********************************************************************** 13820002 SPACE 2 13840002 */* D (YES,DS021,NO,) TEST FOR SRB'S ON THE GSMQ */ 13860002 SPACE 2 13880002 DST001 DC 0H'0' *** TEST LABEL *** 13900002 L R6,DSGSMQ ADDRESS OF START OF GSMQ. 13920002 L R5,0(R6) FIRST ENTRY. 13940002 LTR R5,R5 TEST FOR SRB'S. 13960002 BNZ DS021 MAY BE SRB'S. GO TO COMPARE AND SWAP 13980002 SPACE 2 14000002 *********************************************************************** 14020002 * * 14040002 * TEST FOR SRB'S ON THE GSPL * 14060002 * * 14080002 *********************************************************************** 14100002 SPACE 2 14120002 */*DS03: D (YES,DS031,NO,) TEST FOR SRB'S ON THE GSPL */ 14140002 SPACE 2 14160002 DS03 DC 0H'0' 14180002 L R4,DSGSPL ADDRESS OF GSPL 14200002 L R0,DSL4(R4) ANY NON-Q SRBS? @YM03564 14205002 O R0,DSL8(R4) OR SYSTEM SRBS? @YM03564 14210002 BNZ DS031 SRBS. GO CHECK FURTHER. @YM03564 14215002 SPACE 2 14260002 *********************************************************************** 14280002 * * 14300002 * TEST FOR SRB'S ON THE LOCAL SMQ * 14320002 * * 14340002 *********************************************************************** 14360002 SPACE 2 14380002 */*DS04: D (YES,DS041,NO,) TEST FOR SRB'S ON THE LSMQ */ 14400002 SPACE 2 14420002 DS04 DC 0H'0' 14440002 L R6,DSLSMQ ADDRESS OF START OF LSMQ. 14460002 L R5,0(R6) FIRST ENTRY. 14480002 LTR R5,R5 TEST FOR SRB'S. 14500002 BNZ DS041 MAY BE SRB'S. GO TO COMPARE AND SWAP 14520002 SPACE 2 14540002 *********************************************************************** 14560002 * * 14580002 * TEST FOR ADDRESS SPACE SWITCH. * 14600002 * * 14620002 *********************************************************************** 14640002 SPACE 2 14660002 */*DS05: D (YES,DS051,NO,) TEST FOR ADDRESS SPACE SWITCH */ 14680002 SPACE 2 14700002 DS05 DC 0H'0' 14720002 C R8,PSAANEW DOES CURRENT MATCH THE ASCB IN "NEW" 14740002 BNE DS051 NO. GO TO SWITCH ADDRESS SPACES. 14760002 SPACE 2 14780002 *********************************************************************** 14800002 * * 14820002 * TEST FOR SRB'S ON THE LSPL * 14840002 * * 14860002 *********************************************************************** 14880002 SPACE 2 14900002 */*DS06: D (YES,DS061,NO,) TEST FOR SRB'S ON THE LSPL */ 14920002 SPACE 2 14940002 DS06 DC 0H'0' 14960002 L R4,ASCBSPL ADDRESS OF LOCAL SPL 14980002 L R0,DSL4(R4) ANY NON-Q SRBS? @YM03564 14986002 O R0,DSL8(R4) OR SYSTEM SRBS? @YM03564 14992002 BNZ DS061 NOT ZERO. GO TO CHECK FURTHER. 15020002 SPACE 2 15040002 *********************************************************************** 15060002 * * 15080002 * TEST FOR LOCAL SUPERVISOR * 15100002 * * 15120002 *********************************************************************** 15140002 SPACE 2 15160002 */*DS07: D (YES,DS08,NO,) TEST FOR LOCAL LOCK AVAILABLE */ 15180002 SPACE 2 15200002 DS07 DC 0H'0' 15220002 L R1,ASCBLOCK CURRENT LOCKWORD VALUE @YM03564 15240002 LH R3,PSACPULA LOGICAL CPU ADDRESS. 15260002 LTR R1,R1 IS LOCK AVAILABLE? @YM03564 15261002 BZ DS08 LOCK IS AVAILABLE, OBTAIN IT 15262002 SPACE 2 @YM03564 15263002 */* D (YES,DS08A,NO,) TEST FOR LOCAL SUPERVISOR */ 15264002 SPACE 2 @YM03564 15265002 BM DS08A INTERRUPT ID, GO OBTAIN IT @YM03564 15266002 SPACE 2 @YM03564 15267002 */* D (YES,,NO,DS08B) WAS LOCK OWNED BY THIS CPU? */ @ZA24768 15268040 SPACE 2 @YM03564 15268240 CR R1,R3 WAS LOCAL LOCK OWNED BY THIS CPU? 15268440 BNE DS08B NO, LOCK IS NOT AVAILABLE. @ZA24768 15268640 SPACE 2 @YM03564 15268840 */* D (NO,DS081,YES,) RE-DISP AFTER I/O OR EXT INTERRUPT? */ @ZA24768 15269040 SPACE 2 @ZA24768 15269240 L R1,LCCAITOD GET INTERRUPT TOD VALUE. @ZA24768 15269440 LTR R1,R1 IF ZERO, NOT RE-DISP AFTER @ZA24768 15269640 BZ DS081 I/O OR EXT INTERRUPT. @ZA24768 15269840 SPACE 2 @ZA24768 15270040 */* S DSJST: ADJUST JST TO EXCLUDE INTERRUPT PROCESSING */ @ZA24768 15270240 SPACE 2 @ZA24768 15270440 BAL RE,DSJST ADJUST JOB STEP TIMING. @ZA24768 15270640 SPACE 2 @ZA24768 15270840 */* P (,DS081) UPDATE DTOD VALUE FOR RE-DISPATCH */ @ZA24768 15271040 SPACE 2 @ZA24768 15271240 STCK LCCADTOD SET DTOD FOR RE-DISPATCH. @ZA24768 15271440 B DS081 GO TO LOCAL SUPV DISPATCHER.@ZA24768 15271640 SPACE 2 @ZA24768 15271840 */*DS08: D (YES,DS08X,NO,) ANY READY TCBS TO DISPATCH? */ @ZA16871 15273240 SPACE 2 @YM03564 15275002 DS08 DC 0H'0' @YM03564 15280002 L R4,ASCBTCBS GET READY TCB COUNT @YM07654 15280202 C R4,ASCBCPUS IS IT GREATER THAN CPUS @YM07654 15280402 BNL DS08X YES. FOUND WORK FOR THIS CPU@ZA16871 15280540 SPACE 2 @YM03564 15280802 */* D (YES,,NO,DS08B) ANY ASYNCH EXITS TO DISPATCH? */ @ZA16871 15280940 SPACE 2 @ZA16871 15281540 TM ASCBFLG1,ASCBS3S TEST FOR ASYNCH EXITS @ZA16871 15281640 BNO DS08B NONE. NO WORK IN THIS ASCB @ZA16871 15281740 SPACE 2 @ZA16871 15281840 */*DS08X: D (YES,DS09,NO,DS08B) OBTAIN LOCAL LOCK SUCCESSFUL? */ 15283040 SPACE 2 @YM03564 15283140 DS08X DC 0H'0' @YM07654 15283240 CS R1,R3,ASCBLOCK OBTAIN FREE LOCK WITH CPUID @YM03564 15283540 BC DSCC7,DS08B LOCK WAS NOT AVAILABLE @YM03564 15284002 OI PSAHLHI+DSL3,DSLLHI INDICATE LOCAL LOCK NOW OWNED 15286002 B DS09 GO TO TASK DISPATCHER @YM03564 15288002 SPACE 2 @YM03564 15290002 */*DS08A: D (YES,DS071,NO,) INTERRUPT ID STILL IN LOCK? */ 15292002 SPACE 2 @YM03564 15294002 DS08A DC 0H'0' @YM03564 15296002 CS R1,R3,ASCBLOCK TEST FOR ID. 15300002 BC DSCC8,DS071 YES.ID WAS IN LOCK. CPU ADDRESS NOW 15320002 * IS. GO TO RESTORE LOCAL SUPVR. 15340002 SPACE 2 15800002 *********************************************************************** 15820002 * * 15840002 * TEST RECURSION THROUGH WAIT TASK * 15860002 * * 15880002 *********************************************************************** 15900002 SPACE 2 15920002 */*DS08B: D (NO,DS08C,YES,) WAIT TASK ACTIVE?*/ 15940002 SPACE 2 15960002 DS08B DC 0H'0' @YM03564 15980002 L R3,PSATOLD TEST CURRENT TCB PTR TO SEE IF IT 16000002 C R3,DSWTCB IS THE WAIT TCB. 16020002 BNE DS08C NO. GO TO GET NEXT ADDRESS SPACE. 16040002 SPACE 2 @YM03564 16045002 */*DS08B2: D (NO,DS05C,YES,) ANY WORK ON RECURSIVE SEARCH?*/ 16046040 SPACE 2 @YM03564 16055002 DS08B2 DC 0H'0' @ZA09433 16056040 SPACE 1 16057040 DST0035 DC 0H'0' *** TEST LABEL *** 16060002 TM LCCADSF2,LCCADSRW RECUSIVE SEARCH OF READY QUEUE 16070002 * WAS ANY WORK FOUND. 16072002 BZ DS05C NO. RECURSION. GO TO DISPATCH WAIT 16080002 * TASK. 16100002 NI LCCADSF2,DSXFF-LCCADSRW TURN OFF READY WORK IND. 16110002 BAL RF,DSSAVE SAVE STATUS @YM03564 16111002 SPACE 2 16112402 */*DSLOCKW: S SETLOCK:OBTAIN THE GLOBAL DISPATCHER LOCK */ 16112802 SPACE 2 16113202 DSLOCKW DC 0H'0' 16116502 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*16119702 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK8,DSLOCK11,DSLOCK14,DSLOC*16122602 K16,DSLOCK17,DSLOCK18,DSLOCK19)) 16125502 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 16128402 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 16129302 ST RD,PSAANEW ZERO ANEW TO FORCE TOP OF QUEUE 16130202 B DSRT01 RE-SEARCH QUEUE FOR READY WORK 16134202 SPACE 2 @YM03564 16134602 */*DS08C: S DSSAVE:SAVE PREVIOUS STATUS */ 16135002 SPACE 2 @YM03564 16135402 DS08C DC 0H'0' @YM03564 16135802 BAL RF,DSSAVE SAVE PREVIOUS TASK'S STATUS @YM03564 16136202 SPACE 2 @YM03564 16136602 */*S SETLOCK:OBTAIN THE DISPATCHER LOCK */ 16137102 SPACE 2 @YM03564 16137302 L RD,AGSLDISP LOCK MANAGER'S SPECIAL DISP ENTRY PT 16137502 BALR RE,RD UNCOND OBTAIN DISPATCHER LOCK 16137702 L R6,FLCCVT CVT POINTER FOR MEMORY DISP @YM03564 16137902 L R5,CVTCSD-CVT(R6) CSD ADDR FOR MEMORY DISP @YM03564 16138102 L R8,ASCBFWDP NEXT ASCB TO BE PROCESSED @YM03564 16138302 SPACE 2 @YM03564 16138502 */* P (,DS054) SET UP FOR MEMORY DISPATCHER */ 16138702 SPACE 2 @YM03564 16138902 B DS054 @YM03564 16139102 TITLE 'IEAVEDS0 - ENTRY IEAPDS2' @YM03564 16139302 *********************************************************************** 16140002 * * 16160002 * IEAPDS2 - ENTERED FROM THE LOCK MANAGER WHEN SUSPENDING * 16180002 * A CALLER WHICH HAS REQUESTED A BOUNCE LOCK AND CANNOT * 16200002 * GET IT. THE GLOBAL DISPATCHER LOCK IS HELD ON THIS * 16220002 * ENTRY. * 16240002 * * 16260002 *********************************************************************** 16280002 SPACE 2 16300002 */*IEAPDS2: E ENTRY FROM LOCK MANAGER */ 16320002 SPACE 2 16340002 IEAPDS2 DC 0H'0' 16360002 SPACE 2 16380002 */* P SET SUPER FRR STACK */ 16400002 SPACE 2 16420002 L R1,PSASSTK SUPER STACK ADDRESS. 16440002 ST R1,PSACSTK SET TO CURRENT. 16460002 SPACE 2 16480002 */* P SET THE DISPATCHER INDICATOR */ 16500002 SPACE 2 16520002 OI PSASUP1,PSADISP DISPATCHER INDICATOR 16540002 SPACE 2 16560002 */* P ESTABLISH MODULE ADDRESSABILITY */ 16580002 SPACE 2 16600002 BALR R9,R0 ESTABLISH LOCAL ADDRESSABILITY 16620002 USING *,R9 16640002 L R9,DSBASEAD DISPATCHER BASE ENTRY 16660002 USING DSBASE,R9 ESTABLISH DISPATCHER ADDRESSABILITY. 16680002 SPACE 2 16700002 */* P ESTABLISH ASCB AND LCCA ADDRESSABILITY */ 16720002 SPACE 2 16740002 L R8,PSAAOLD CURRENT ASCB ADDRESSABILITY 16760002 L R7,PSALCCAV LCCA ADDRESSABILITY 16780002 SPACE 16920002 DST004 DC 0H'0' *** TEST LABEL *** 16940002 B DSRT01 GO TO SRB RETURN MAINLINE. 16960002 TITLE 'IEAVEDS0 - ENTRY IEAPDS6' 20000002 *********************************************************************** 20020002 * * 20040002 * IEAPDS6 - ENTERED FROM END-OF-TASK (EOT). NO LOCKS ARE HELD * 20060002 * ON THIS ENTRY. THE DISPATCHER CLEARS THE PSATNEW AND * 20080002 * PSATOLD FIELDS, RESETS THE CPU INTERVAL TIMER TO A HIGH* 20100002 * VALUE, DECREMENTS THE COUNT OF THE NUMBER OF CPU'S IN * 20120002 * THE ADDRESS SPACE AND CALCULATES THE JOB STEP TIME ON * 20140002 * THIS ENTRY. * 20160002 * * 20180002 *********************************************************************** 20200002 SPACE 2 20220002 */*IEAPDS6: E ENTRY FROM EOT */ 20240002 SPACE 2 20260002 IEAPDS6 DC 0H'0' 20280002 SPACE 2 20300002 */* P SET SUPER RECOVERY STACK ADDRESS */ 20320002 SPACE 2 20340002 L R1,PSASSTK SUPER STACK ADDRESS. 20360002 ST R1,PSACSTK SET CURRENT TO SUPER STACK ADDRESS. 20380002 SPACE 2 20400002 */* P SET DISPATCHER INDICATOR */ 20420002 SPACE 2 20440002 OI PSASUP1,PSADISP SET DISPATCHER INDICATOR 20460002 SPACE 2 20480002 */* P ESTABLISH MODULE ADDRESSABILITY */ 20500002 SPACE 2 20520002 BALR R9,R0 ESTABLISH LOCAL ADDRESSABILITY 20540002 USING *,R9 20560002 L R9,DSBASEAD DISPATCHER BASE ENTRY 20580002 USING DSBASE,R9 ESTABLISH DISPATCHER ADDRESSABILITY 20600002 SPACE 2 20620002 */* P ESTABLISH ASCB AND LCCA ADDRESSABILITY */ 20640002 SPACE 2 20660002 L R8,PSAAOLD CURRENT ASCB ADDRESSABILITY 20680002 L R7,PSALCCAV LCCA ADDRESSABILITY 20700002 SPACE 2 20720002 */* P CLEAR THE PSATNEW/PSATOLD FIELDS */ 20740002 SPACE 2 20760002 SR R1,R1 20780002 ST R1,PSATNEW CLEAR THE PSATNEW AND PSATOLD FIELDS 20800002 ST R1,PSATOLD SO STATUS WILL NOT BE STORED. 20820002 SPACE 2 20840002 */* P STORE A HIGH VALUE IN THE CPU INTERVAL TIMER */ 20860002 SPACE 2 20880002 SPT DSHITIME SET HIGH VALUE INTO CPU INTVL TIMER 20900002 * SO TIMER WONT POP FOR NEXT GUY. 20920002 SPACE 20940002 DS601 DC 0H'0' 20960002 SPACE 2 20980002 */*DS601: P DECREMENT COUNT OF NUMBER OF CPU'S DISPATCHED IN ADDRESS 21000002 */*SPACE*/ 21020002 SPACE 2 21040002 L R2,ASCBCPUS * 21060002 LR R3,R2 * DECREMENT COUNT OF NUMBER OF 21080002 BCTR R2,R0 * CPUS DISPATCHED IN 21100002 DST0075 DC 0H'0' *** TEST LABEL *** 21120002 CS R3,R2,ASCBCPUS * THE ADDRESS SPACE. 21140002 BC DSCC4,DS601 * 21160002 SPACE 21180002 DST008 DC 0H'0' *** TEST LABEL *** 21200002 SPACE 2 21220002 */* S (,DS01) DSJST:CALCULATE JOB STEP TIME */ 21240002 SPACE 2 21260002 BAL RE,DSJST GO TO CALCULATE JOB STEP TIME 21280002 * DSJST USES REGISTERS 0,1,2,3 AND 14. 21300002 SPACE 21320002 DST009 DC 0H'0' *** TEST LABEL *** 21340002 B DS01 RETURN TO MAINLINE. 21360002 TITLE 'IEAVEDS0 - ENTRY IEAPDSRT' 21380002 *********************************************************************** 21400002 * * 21420002 * IEAPDSRT - ENTERED ON THE RETURN FROM AN SRB ROUTINE. THE * 21440002 * RETURN MUST BE IN SUPERVISOR MODE BUT MAY BE IN A NON * 21460002 * ZERO KEY. THE DISPATCHER ON THIS ENTRY GETS THE GLOBAL* 21480002 * DISPATCHER LOCK AND PERFORMS A PARALLEL SERIES OF TESTS* 21500002 * AS AT ENTRY POINT IEA0DS. THE TESTS AT IEA0DS ARE DONE* 21520002 * WITHOUT THE GLOBAL DISPATCHER LOCK. * 21540002 * * 21560002 *********************************************************************** 21580002 SPACE 2 21600002 */*IEAPDSRT: E ENTRY FOR SRB RETURN */ 21620002 SPACE 2 21640002 IEAPDSRT DC 0H'0' 21660002 SPACE 2 21680002 */* S MODESET:GET INTO KEY ZERO */ 21700002 SPACE 2 21720002 MODESET EXTKEY=SUPR GET INTO KEY ZERO 21740002 SPACE 2 21750002 */*DSLOCK6: S SETLOCK:OBTAIN THE GLOBAL DISPATCHER LOCK */ 21752002 SPACE 2 21754002 DSLOCK6 DC 0H'0' 21756002 SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*21758002 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK8,DSLOCK11,DSLOCK14,DSLOC*21758402 K16,DSLOCK17,DSLOCK18,DSLOCK19)) 21758802 DST010 DC 0H'0' *** TEST LABEL *** 21759202 SPACE 2 21760002 */* P SET SUPER RECOVERY STACK ADDRESS */ 21780002 SPACE 2 21800002 L R1,PSASSTK SUPER STACK ADDRESS. 21820002 ST R1,PSACSTK SET CURRENT TO SUPER STACK ADDRESS. 21840002 SPACE 2 21860002 */* P SET THE DISPATCHER INDICATOR */ 21880002 SPACE 2 21900002 OI PSASUP1,PSADISP SET DISPATCHER INDICATOR 21920002 SPACE 2 22100002 */* P ESTABLISH LOCAL ADDRESSABILITY */ 22120002 SPACE 2 22140002 BALR R9,R0 LOCAL ADDRESSABILITY 22160002 USING *,R9 22180002 SPACE 22200002 DST0095 DC 0H'0' *** TEST LABEL *** 22220002 SPACE 2 22240002 */* P ESTABLISH MODULE ADDRESSABILITY */ 22260002 SPACE 2 22280002 L R9,DSBASEAD DISPATCHER BASE ENTRY 22300002 USING DSBASE,R9 ESTABLISH DISPATCHER ADDRESSABILITY 22320002 SPACE 2 22340002 */* P ESTABLISH LCCA AND ASCB ADDRESSABILITY */ 22360002 SPACE 2 22380002 L R8,PSAAOLD ASCB ADDRESSABILITY 22400002 L R7,PSALCCAV LCCA ADDRESSABILITY 22420002 SPACE 22520002 DST0105 DC 0H'0' *** TEST LABEL *** 22540002 SPACE 2 22560002 */* S DSJST:CALCULATE JOB STEP TIME */ 22580002 SPACE 2 22600002 BAL RE,DSJST GO TO CALCULATE JOB STEP TIME 22620002 * DSJST USES REGISTERS 0,1,2,3 AND 14. 22640002 SPACE 2 22650002 */* P RESET THE SRB MODE BITS */ 22652002 SPACE 2 22654002 NI LCCADSF2,DSXFF-LCCASRBM-LCCAGSRB RESET SRB BITS 22656002 SPACE 2 22660002 */* P DECREMENT COUNT OF NUMBER OF SRB'S IN THE ADDRESS SPACE */ 22680002 SPACE 2 22700002 DST011 DC 0H'0' *** TEST LABEL *** 22720002 LH R4,ASCBSRBS * DECREMENT COUNT 22740002 BCTR R4,DSI0 * OF THE NUMBER OF SRB'S 22760002 STH R4,ASCBSRBS * DISPATCHED IN THE ADDRESS SPACE 22780002 SPACE 2 22800002 */* D (NO,DSRT01,YES,) ARE TCB'S STOPPED? */ 22820002 SPACE 2 22840002 TM ASCBFLG1,ASCBSTND ARE TCB'S STOPPED BECAUSE A STATUS 22860002 * STOP SRB'S IS IN PROCESS? 22880002 BZ DSRT01 NO. CONTINUE. 22900002 SPACE 2 22920002 */* D (YES,DSRT005,NO,) IS COUNT OF SRB'S EQUAL ZERO */ 22940002 SPACE 2 22960002 * ENTER FOR TCB'S STOPPED BECAUSE OF STATUS STOP SRB'S 22980002 DST012 DC 0H'0' *** TEST LABEL *** 23000002 LTR R4,R4 IS COUNT OF SRB'S EQUAL ZERO 23020002 BZ DSRT005 YES. GO TO SET TCB'S DISPATCHABLE. 23040002 DST013 DC 0H'0' *** TEST LABEL *** 23060002 SPACE 2 23080002 */* D (YES,DSRT01,NO,) ARE THERE MORE LOCAL SRB'S? */ 23100002 SPACE 2 23120002 L R3,ASCBSPL LOCAL SPL ADDRESS. 23140002 L R0,DSL4(R3) ANY NON-Q SRBS? @YM03564 23146002 O R0,DSL8(R3) OR SYSTEM SRBS? @YM03564 23152002 BNZ DSRT01 YES. GO TO DISPATCHING TESTS. 23180002 SPACE 2 23200002 */* D (YES,DSRT01,NO,) IS ADDRESS SPACE SWITCH SET UP? */ 23220002 SPACE 2 23240002 DST014 DC 0H'0' *** TEST LABEL *** 23260002 C R8,PSAANEW TEST FOR ADDRESS SPACE SWITCH SET UP 23280002 BNE DSRT01 YES. GO TO DISPATCHING TESTS. 23300002 DST015 DC 0H'0' *** TEST LABEL *** 23320002 SPACE 2 23340002 */* P (,DSRT01) STORE ZERO INTO "PSAANEW" - DISP WILL SCAN FROM TOP OF 23360002 */*QUEUE */ 23380002 SPACE 2 23400002 SR R3,R3 NO SWITCH SET UP. FORCE DISP TO 23420002 ST R3,PSAANEW SCAN FROM TOP OF QUEUE. 23440002 B DSRT01 GO TO DISP TESTS 23460002 SPACE 2 23480002 */*DSRT005: P TURN OFF TCB'S NON-DISPATCH. BIT */ 23500002 SPACE 2 23520002 DSRT005 DC 0H'0' ENTER TO SET TCB'S DISPATCHABLE. 23540002 NI ASCBFLG1,DSXFF-ASCBSTND TURN OFF TCB'S NON-DISPATCHABLE 23560002 SPACE 2 23580002 */* D (YES,DSRT01,NO,) SET UP TO CONTINUE IN THE ADDRESS SPACE */ 23600002 SPACE 2 23620002 C R8,PSAANEW ARE WE SET UP TO CONTINUE IN THIS 23640002 * ADDRESS SPACE? 23660002 BE DSRT01 YES. GO TO DISPATCHABLE TESTS 23680002 DST016 DC 0H'0' *** TEST LABEL *** 23700002 LR R1,R8 ASCB ADDRESS. 23720002 L RF,DSMS0 MEMORY SWITCH ADDRESS 23740002 SPACE 2 23760002 */* S IEAVEMS0:SWITCH TO THIS ADDRESS SPACE */ 23780002 SPACE 2 23800002 DSTMEMSW DC 0H'0' *** TEST LABEL *** 23820002 BALR RE,RF GO TO MEMORY SWITCH 23840002 SPACE 2 23860002 *********************************************************************** 23880002 * * 23900002 * TEST FOR SPECIAL EXITS * 23920002 * * 23940002 *********************************************************************** 23960002 SPACE 2 23980002 */*DSRT01: D (NO,DSRT015,YES,) TEST FOR SPECIAL EXITS */ 24000002 SPACE 2 24020002 DSRT01 DC 0H'0' 24040002 CLI LCCADSF1,DSX0 TEST FOR SPECIAL EXITS 24060002 BE DSRT015 NO. CONTINUE 24080002 SPACE 2 24100002 */*DSLOCK19: S (,DS012) SETLOCK:RELEASE GLOBAL DISPATCHER LOCK */ 24120002 SPACE 2 24140002 DSLOCK19 DC 0H'0' 24160002 * SETLOCK RELEASE,TYPE=DISP,RELATED=('ASCB QUEUE/GSPL/LSPL/PSAAN*24180002 EW',IEAVEDS0,(DSLOCK5,DSLOCK6,DSLOCK7,DSLOCK9,DSLOCK10,D*24200002 SLOCK12,DSLOCK13,DSLOCK22,DSLOCK3)) 24220002 L RB,DSDISPLK OBTAIN DISP LOCK ADDR @YM03564 24224002 SLR RD,RD ZERO A REGISTER @YM03564 24228002 ST RD,DSL0(RB) FREE LOCK VIA STORE ZEROS @YM03564 24232002 NI PSAHLHI+DSL2,X'EF' INDICATE DISPATCHER LOCK NOT HELD 24236002 DST017 DC 0H'0' *** TEST LABEL *** 24240002 B DS012 GO TO TEST SPECIFIC EXIT. 24260002 SPACE 2 24280002 *********************************************************************** 24300002 * * 24320002 * TEST FOR SRB'S ON THE GSMQ * 24340002 * * 24360002 *********************************************************************** 24380002 SPACE 2 24400002 */*DSRT015: D (NONE,DSRT017,YES,DS021A) TEST FOR SRB'S ON THE GSMQ */ 24420002 SPACE 2 24440002 DSRT015 DC 0H'0' 24460002 L R6,DSGSMQ ADDRESS OF START OF GSMQ 24480002 L R5,0(R6) FIRST ENTRY 24500002 LTR R5,R5 TEST FOR SRB'S 24520002 BNZ DS021A SRB'S. GO TO DEQUEUE. 24540002 * NO SRB'S ON GSMQ. FALL THROUGH TO TEST FOR SRB'S ON GSPL. 24560002 SPACE 2 24580002 *********************************************************************** 24600002 * * 24620002 * TEST FOR SRB'S ON THE GSPL * 24640002 * * 24660002 *********************************************************************** 24680002 SPACE 2 24700002 */*DSRT017: D (YES,DS032,NO,) TEST FOR SRB'S ON THE GSPL */ 24720002 SPACE 2 24740002 DSRT017 DC 0H'0' 24760002 L R4,DSGSPL ADDRESS OF GSPL 24780002 L R0,DSL4(R4) ANY NON-Q SRBS? @YM03564 24786002 O R0,DSL8(R4) OR SYSTEM SRBS? @YM03564 24792002 BNZ DS032 GO TO DEQUEUE AN SRB UNDER THE GDL 24820002 SPACE 2 24840002 *********************************************************************** 24860002 * * 24880002 * TEST FOR SRB'S ON THE LOCAL SMQ * 24900002 * * 24920002 *********************************************************************** 24940002 SPACE 2 24960002 */*DSRT0173: D (NONE,DSRT0177,YES,DS0411) TEST FOR SRB'S ON THE LSMQ */ 24980002 SPACE 2 25000002 DSRT0173 DC 0H'0' 25020002 L R6,DSLSMQ ADDRESS OF START OF LSMQ 25040002 L R5,0(R6) FIRST ENTRY 25060002 LTR R5,R5 TEST FOR SRB'S 25080002 BNZ DS0411 SRB'S. GO TO DEQUEUE. 25100002 * NO SRB'S ON LSMQ. FALL THROUGH TO TEST ADDRESS SPACE SWITCH. 25120002 SPACE 2 25140002 *********************************************************************** 25160002 * * 25180002 * TEST FOR ADDRESS SPACE SWITCH. * 25200002 * * 25220002 *********************************************************************** 25240002 SPACE 2 25260002 */*DSRT0177: D (YES,DS052,NO,) TEST FOR ADDRESS SPACE SWITCH INDICATED 25280002 */**/ 25300002 SPACE 2 25320002 DSRT0177 DC 0H'0' 25340002 C R8,PSAANEW DOES OLD ASCB EQUAL NEW ASCB 25360002 BNE DS052 NO. GO TO MEMORY DISPATCHER 25380002 SPACE 2 25400002 *********************************************************************** 25420002 * * 25440002 * TEST FOR SRB'S ON THE LSPL * 25460002 * * 25480002 *********************************************************************** 25500002 SPACE 2 25520002 */* D (YES,DS062,NO,) TEST FOR SRB'S ON THE LSPL */ 25540002 SPACE 2 25560002 DST022 DC 0H'0' *** TEST LABEL *** 25580002 L R4,ASCBSPL 25600002 L R0,DSL4(R4) ANY NON-Q SRBS? @YM03564 25606002 O R0,DSL8(R4) OR SYSTEM SRBS? @YM03564 25612002 BNZ DS062 NOT ZERO. GO TO DEQUEUE SRB'S 25640002 SPACE 2 @YM03564 25642002 */* D (YES,DSLOCK8,NO,) ANY READY TCB'S IN ASCB? */ @ZA16871 25643040 SPACE 2 @YM03564 25646002 L RD,ASCBTCBS GET NUMBER OF TCBS @YM03564 25648002 C RD,ASCBCPUS ANY READY WORK IN MEMORY @YM03564 25650002 BH DSLOCK8 YES. GO TRY TO DISPATCH TCB @ZA16871 25651040 SPACE 2 25660002 */* D (YES,,NO,DS052) ANY ASYNCH EXITS TO DISPATCH? */ @ZA16871 25662040 SPACE 2 @ZA16871 25664040 TM ASCBFLG1,ASCBS3S TEST FOR ASYNCH EXITS @ZA16871 25666040 BZ DS052 NONE. NO WORK IN THIS ASCB @ZA16871 25668040 SPACE 2 @ZA16871 25670040 */*DSLOCK8: S SETLOCK: RELEASE THE GLOBAL DISPATCHER LOCK */ @ZA16871 25672040 SPACE 2 25700002 DSLOCK8 DC 0H'0' 25720002 * SETLOCK RELEASE,TYPE=DISP,RELATED=('ASCB QUEUE/GSPL/LSPL/PSAAN*25740002 EW',IEAVEDS0,(DSLOCK5,DSLOCK6,DSLOCK9,DSLOCK10,DSLOCK12)*25760002 ) 25780002 L RB,DSDISPLK OBTAIN DISP LOCK ADDR @YM03564 25784002 SLR RD,RD ZERO A REGISTER @YM03564 25788002 ST RD,DSL0(RB) FREE LOCK VIA STORE ZEROS @YM03564 25792002 NI PSAHLHI+DSL2,X'EF' INDICATE DISPATCHER LOCK NOT HELD 25796002 SPACE 2 @ZA16871 25800040 */* D (YES,DSRT02,NO,) TEST FOR LOCAL LOCK AVAILABLE */ @ZA16871 25800940 SPACE 2 25801840 DST023 DC 0H'0' *** TEST LABEL *** @ZA16871 25802740 L R1,ASCBLOCK CURRENT LOCKWORD VALUE @ZA16871 25803640 LH R3,PSACPULA LOGICAL CPU ADDRESS. @ZA16871 25804540 LTR R1,R1 IS LOCK AVAILABLE? @ZA16871 25805440 BZ DSRT02 LOCK IS AVAILABLE, OBTAIN IT@ZA16871 25806340 SPACE 2 @ZA16871 25807240 */* D (YES,DSRT025,NO,) TEST FOR LOCAL SUPERVISOR */ @ZA16871 25808140 SPACE 2 @ZA16871 25809040 BM DSRT025 INTERRUPT ID, GO OBTAIN IT @ZA16871 25809940 SPACE 2 @ZA16871 25810840 */* D (YES,DS081,NO,DS08B) WAS LOCAL LOCK HELD BY THIS CPU? */ @ZA16871 25811740 SPACE 2 @ZA16871 25812640 CR R1,R3 LOCAL LOCK HELD BY THIS CPU?@ZA16871 25813540 BE DS081 YES. GO DISPATCH LOCAL @ZA16871 25814440 * SUPERVISOR ROUTINE. @ZA16871 25815340 B DS08B LOCK IS NOT AVAILABLE. GO @ZA16871 25816240 * TEST WAIT TASK RECURSION. @ZA16871 25817140 SPACE 2 @ZA16871 25820040 */*DSRT02: D (YES,DS09,NO,DS08B) OBTAIN LCL LOCK SUCCESSFUL? */@ZA16871 25821040 SPACE 2 @ZA16871 25822040 DSRT02 DC 0H'0' @ZA16871 25823040 CS R1,R3,ASCBLOCK OBTAIN FREE LOCK WITH CPUID @ZA16871 25824040 BC DSCC7,DS08B LOCK WAS NOT AVAILABLE. GO @ZA16871 25825040 * TEST WAIT TASK RECURSION. @ZA16871 25826040 OI PSAHLHI+DSL3,DSLLHI INDICATE LCL LOCK NOW OWNED @ZA16871 25827040 B DS09 GO TO TASK DISPATCHER @ZA16871 25828040 SPACE 2 @ZA16871 25829040 */*DSRT025: D (YES,DS071,NO,DS08B) INTRUPT ID STILL IN LOCK? */@ZA16871 25830040 SPACE 2 @ZA16871 25831040 DSRT025 DC 0H'0' @ZA16871 25832040 CS R1,R3,ASCBLOCK COMPARE ID : SWAP IN CPULA @ZA16871 25833040 BC DSCC8,DS071 SUCCESS. GO RESTROR LOCAL @ZA16871 25834040 * SUPERVISOR. @ZA16871 25835040 B DS08B GO TEST WAIT TASK RECURSION @ZA16871 25836040 TITLE 'IEAVEDS0 - SPECIAL EXITS' 25860002 *********************************************************************** 25880002 * * 25900002 * THIS SECTION TESTS FOR SPECIAL EXITS. * 25920002 * * 25940002 *********************************************************************** 25960002 SPACE 2 25980002 */*DS011: S DSSAVE:SAVE STATUS OF PREVIOUS TASK */ 26000002 SPACE 2 26020002 DS011 DC 0H'0' 26040002 BAL RF,DSSAVE SAVE STATUS OF PREVIOUS TASK. 26060002 * DSSAVE USES REGISTERS 0,1,2,3,14 AND 15. 26080002 SPACE 2 26100002 *********************************************************************** 26120002 * * 26140002 * TEST FOR ACR * 26160002 * * 26180002 *********************************************************************** 26200002 SPACE 2 26220002 */*DS012: D (NO,DS013,YES,DSTCLRTM) TEST FOR ACR */ 26240002 SPACE 2 26260002 DS012 DC 0H'0' 26280002 TM LCCADSF1,LCCAACR TEST FOR ACR 26300002 BZ DS013 NO. GO TO TRY NEXT SPECIAL EXIT 26320002 SPACE 2 26340002 */*DSTCLRTM: R CALLRTM - EXIT TO ACR */ 26360002 SPACE 2 26380002 DSTCLRTM DC 0H'0' 26400002 NI PSASUP1,DSXFF-PSADISP RESET DISPATCHER INDICATOR. 26420002 CALLRTM TYPE=ACRDISP GO TO ACR PROCESSOR. 26440002 * NOTE - ACR DOES NOT RETURN HERE - CONTROL WILL COME BACK 26460002 * EVENTUALLY TO IEA0DS. 26480002 SPACE 2 26500002 *********************************************************************** 26520002 * * 26540002 * TEST FOR VARY CPU PROCESSING * 26560002 * * 26580002 *********************************************************************** 26600002 SPACE 2 26620002 */*DS013: D (NO,DS014,YES,) TEST FOR VARY CPU */ 26640002 SPACE 2 26660002 DS013 DC 0H'0' 26680002 TM LCCADSF1,LCCAVCPU TEST FOR VARY CPU 26700002 BZ DS014 NO. GO TO TRY NEXT SPECIAL EXIT 26720002 DST025 DC 0H'0' *** TEST LABEL *** 26740002 SPACE 2 26760002 */*DSLOCK20: S SETLOCK:OBTAIN GLOBAL DISPATCHER LOCK */ 26780002 SPACE 2 26800002 DSLOCK20 DC 0H'0' 26820002 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=(PSAANEW,IEAVEDS0*26840002 ,(DSLOCK21)) 26860002 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 26866002 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 26872002 DST025A DC 0H'0' *** TEST LABEL *** 26880002 SPACE 2 26900002 */* P TRANSFER TO MASTER'S ADDRESS SPACE */ 26920002 SPACE 2 26940002 L R8,DSMASCB MASTER'S ASCB ADDRESS 26960002 ST R8,PSAAOLD SET PSAAOLD 27000002 ST R8,PSAANEW SET PSAANEW 27020002 LCTL R1,R1,PSASTOR MASTER'S SEG TABLE ORIGIN REG. 27030002 SPACE 2 27040002 */*DSLOCK21: S SETLOCK:RELEASE GLOBAL DISPATCHER LOCK */ 27060002 SPACE 2 27080002 DSLOCK21 DC 0H'0' 27100002 * SETLOCK RELEASE,TYPE=DISP,RELATED=(PSAANEW,IEAVEDS0,(DSLOCK20)*27120002 ) 27140002 L RB,DSDISPLK OBTAIN DISP LOCK ADDR @YM03564 27144002 SLR RD,RD ZERO A REGISTER @YM03564 27148002 ST RD,DSL0(RB) FREE LOCK VIA STORE ZEROS @YM03564 27152002 NI PSAHLHI+DSL2,X'EF' INDICATE DISPATCHER LOCK NOT HELD 27156002 DST025B DC 0H'0' *** TEST LABEL *** 27160002 SPACE 2 27180002 */* P RESET THE DISPATCHER INDICATOR */ 27200002 SPACE 2 27220002 NI PSASUP1,DSXFF-PSADISP RESET DISPATCHER INDICATOR. 27240002 SPACE 2 27260002 */* R EXIT TO VARY CPU PROCESSOR */ 27280002 SPACE 2 27300002 L RB,FLCCVT LOCATE THE CVT 27310002 USING CVT,RB 27312002 L RF,CVTQUIT VARY CPU ENTRY POINT 27320002 DROP RB 27330002 BR RF EXIT. 27340002 SPACE 2 27360002 *********************************************************************** 27380002 * * 27400002 * TEST FOR DSS IN PROCESS * 27420002 * * 27440002 *********************************************************************** 27460002 SPACE 2 27480002 */*DS014: D (NO,DS015,YES,) TEST FOR DSS IN PROCESS */ 27500002 SPACE 2 27520002 DS014 DC 0H'0' 27540002 TM LCCADSF1,LCCADSS TEST FOR DSS IN PROCESS 27560002 BZ DS015 NO. GO TO TRY NEXT SPECIAL EXIT. 27580002 SPACE 2 27600002 */*DSLOCK7: S SETLOCK:OBTAIN GLOBAL DISPATCHER LOCK */ 27620002 SPACE 2 27640002 DSLOCK7 DC 0H'0' 27660002 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*27680002 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK11,DSLOCK14,DSLOCK16,DSLO*27700002 CK17,DSLOCK18,DSLOCK19)) 27720002 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 27726002 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 27732002 DST026 DC 0H'0' *** TEST LABEL *** 27740002 SPACE 2 27760002 */* S IEAVEMS0:SWITCH TO MASTER'S ADDRESS SPACE */ 27780002 SPACE 2 27800002 L R1,DSMASCB MASTER'S ASCB ADDRESS 27820002 L RF,DSMS0 MEMORY SWITCH ADDRESS 27840002 BALR RE,RF SWITCH TO MASTER'S ADDRESS SPACE 27860002 DST027 DC 0H'0' *** TEST LABEL *** 27880002 SPACE 2 27900002 */* P (,DSRT015) RESET THE DSS IN PROCESS BIT */ 27920002 SPACE 2 27940002 NI LCCADSF1,DSXFF-LCCADSS TURN OFF DSS IN PROGRESS BIT 27960002 B DSRT015 GO TO DISP. TESTS UNDER THE GDL LOCK 27980002 SPACE 2 28000002 *********************************************************************** 28020002 * * 28040002 * TEST FOR TIMER RECOVERY * 28060002 * * 28080002 *********************************************************************** 28100002 SPACE 2 28120002 */*DS015: D (NO,DS016,YES,) TEST FOR TIMER RECOVERY */ 28140002 SPACE 2 28160002 DS015 DC 0H'0' 28180002 TM LCCADSF1,LCCATIMR TEST FOR TIMER RECOVERY. 28200002 BZ DS016 NO. GO TO TRY NEXT SPECIAL EXIT. 28220002 SPACE 2 28240002 */* R EXIT TO TIMER RECOVERY */ 28260002 SPACE 2 28280002 DST028 DC 0H'0' *** TEST LABEL *** 28300002 NI PSASUP1,DSXFF-PSADISP RESET DISPATCHER INDICATOR. 28320002 L RF,DSRSPN TIMER RECOVERY ROUTINE ENTRY PT. 28340002 BR RF EXIT TO TIMER RECOVERY. 28360002 SPACE 2 28380002 */*DS016: R ADDITIONAL SPECIAL EXITS GO HERE */ 28400002 SPACE 2 28420002 DS016 DC 0H'0' 28440002 * 28460002 * PLACE ADDITIONAL SPECIAL EXITS TESTS HERE 28480002 * 28500002 MVI LCCADSF1,DSX0 CLEAR THE SPECIAL EXITS INDICATOR 28520002 B DS01 GO FIND SOME WORK. 28540002 TITLE 'IEAVEDS0 - GLOBAL SMQ' 28560002 *********************************************************************** 28580002 * * 28600002 * THIS SECTION IS ENTERED WHEN THERE ARE FOUND TO BE SRB'S ON * 28620002 * THE GLOBAL SERVICE MANAGER QUEUE * 28640002 * * 28660002 * ON ENTRY : * 28680002 * R5 - FIRST SRB ADDRESS (CONTENTS OF GSMQ HEADER) * 28700002 * R6 - ADDRESS OF GSMQ * 28720002 * * 28740002 *********************************************************************** 28760002 SPACE 2 28780002 */*DS021: S DSSAVE:SAVE STATUS OF PREVIOUS TASK */ 28800002 SPACE 2 28820002 DS021 DC 0H'0' 28840002 BAL RF,DSSAVE GO TO SAVE PREVIOUS TASK'S STATUS. 28860002 * DSSAVE USES REGISTERS 0,1,2,3,14 AND 15. 28880002 SPACE 2 28900002 */*DSLOCK9: S SETLOCK: OBTAIN GLOBAL DISPATCHER LOCK */ 28920002 SPACE 2 28940002 DSLOCK9 DC 0H'0' 28960002 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*28980002 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK8,DSLOCK11,DSLOCK14,DSLOC*29000002 K16,DSLOCK17,DSLOCK18,DSLOCK19)) 29020002 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 29026002 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 29032002 SPACE 2 29040002 */*DS021A: P CLEAR REG FOR COMPARE AND SWAP */ 29060002 SPACE 2 29080002 DS021A DC 0H'0' 29100002 SR R3,R3 PREPARE TO STORE ZERO INTO GSMQ HDR. 29120002 SPACE 2 29140002 */*DS021B: P (OK,DS021C,ZERO,DSRT017,ADD,DS021B) COMPARE AND SWAP GSMQ 29160002 */**/ 29180002 SPACE 2 29200002 DS021B DC 0H'0' 29220002 CS R5,R3,DSL0(R6) COMPARE & SWAP TO PICK UP SRB CHAIN. 29240002 BC DSCC8,DS021C OK. CONTINUE. 29260002 DST029 DC 0H'0' *** TEST LABEL *** 29280002 LTR R5,R5 TEST FOR SRB PICKED UP IN C&S. 29300002 BNZ DS021B YES. SCHEDULE HAS ADDED ONE. GO TO 29320002 * DEQUEUE AGAIN. 29340002 DST030 DC 0H'0' *** TEST LABEL *** 29360002 B DSRT017 NO. ANOTHER CPU HAS DEQUEUED THEM. 29380002 * RETURN TO MAINLINE. 29400002 SPACE 29420002 *********************************************************************** 29440002 * * 29460002 * THE SRB'S HAVE BEEN DEQUEUED FROM THE GSMQ PREPARE TO MOVE THEM * 29480002 * TO THE GSPL AND DISPATCH THEM. * 29500002 * * 29520002 * SET UP TO GO TO GLOBAL SCHEDULE * 29540002 * R3 - RETURN ADDRESS * 29560002 * R4 - ENTRY POINT ADDRESS * 29580002 * R5 - CONTENTS OF GSMQ (FIRST SRB ADDRESS) * 29600002 * R7 - LCCA ADDRESS * 29620002 * R8 - ASCB ADDRESS * 29640002 * R9 - DISPATCHER BASE ADDRESS * 29660002 * * 29680002 *********************************************************************** 29700002 SPACE 2 29720002 */*DS021C: S IEAVESC1:GLOBAL SCHEDULE */ 29740002 SPACE 2 29760002 DS021C DC 0H'0' 29780002 ST R5,LCCASMQJ JOURNAL SMQ ENTRY 29790002 L R4,DSVESC1 GLOBAL SCHEDULE ADDRESS 29800002 BALR R3,R4 GO TO GLOBAL SCHEDULE 29820002 DST031 DC 0H'0' *** TEST LABEL *** 29840002 * 29860002 * REGISTERS 7,8 AND 9 ARE RETURNED FROM GLOBAL SCHEDULE 29880002 * 29900002 SPACE 2 29920002 */* P (,DS032) SET GSPL ADDRESS */ 29940002 SPACE 2 29960002 L R4,DSGSPL SET UP GSPL ADDRESS IN REG 4. 29980002 SPACE 30000002 B DS032 GO TO DEQUEUE AN SRB FROM THE SPL. 30020002 TITLE 'IEAVEDS0 - GLOBAL SPL' 30040002 *********************************************************************** 30060002 * * 30080002 * THIS SECTION IS ENTERED WHEN THERE ARE SRB'S ON THE GLOBAL * 30100002 * SERVICE PRIORITY LIST. * 30120002 * R4 - CONTAINS THE ADDRESS OF THE GSPL. * 30140002 * * 30160002 *********************************************************************** 30180002 SPACE 2 30200002 */*DS031: S DSSAVE:SAVE PREVIOUS TASK'S STATUS */ 30220002 SPACE 2 30240002 DS031 DC 0H'0' 30260002 BAL RF,DSSAVE GO TO SAVE PREVIOUS TASKS STATUS. 30280002 * DSSAVE USES REGISTERS 0,1,2,3,14 AND 15. 30300002 SPACE 30320002 */*DSLOCK10: S SETLOCK:OBTAIN THE GLOBAL DISPATCHER LOCK */ 30340002 SPACE 2 30360002 DSLOCK10 DC 0H'0' 30380002 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*30400002 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK8,DSLOCK11,DSLOCK14,DSLOC*30420002 K16,DSLOCK17,DSLOCK18,DSLOCK19)) 30440002 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 30446002 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 30452002 SPACE 30460002 * 30480002 * DEQUEUE SRB FROM THE GLOBAL SERVICE PRIORITY LIST 30500002 * 30520002 SPACE 2 30540002 */*DS032: P SET UP TO INDEX THROUGH SRB'S */ 30560002 SPACE 2 30580002 DS032 DC 0H'0' 30600002 L R3,FLCCVT CVT ADDRESS 30620002 USING CVTMAP,R3 30640002 L R6,CVTCSD CSD ADDRESS 30660002 DROP R3 DROP CVT ADDRESSING 30680002 USING CSD,R6 30700002 LA R3,GSPLSIZE(R4) END OF GSPL 30720002 SPACE 2 30740002 */*DS0321: P GET SRB ADDRESS */ 30760002 SPACE 2 30780002 DS0321 DC 0H'0' 30800002 L R2,DSL0(R4) SRB ADDRESS 30820002 SPACE 2 30840002 */*DS0322: D (YES,DS03225,NO,) IS THERE AN SRB? */ 30860002 SPACE 2 30880002 DS0322 DC 0H'0' ENTER FOR LOOP. 30900002 LTR R2,R2 SRB ? 30920002 BNZ DS03225 YES. CONTINUE. 30940002 SPACE 2 30960002 */* D (NO,DS0321,YES,DSRT0173) END OF SPL? */ 30980002 SPACE 2 31000002 DST032 DC 0H'0' *** TEST LABEL *** 31020002 LA R4,DSL8(R4) GET NEXT SPL ENTRY ADDRESS 31040002 CLR R4,R3 FINISHED ? 31060002 BNE DS0321 NO. GO TO TEST FOR SRB'S AT THIS LVL 31080002 DST033 DC 0H'0' *** TEST LABEL *** 31100002 B DSRT0173 DONE. NO SRB'S FOUND. 31120002 SPACE 2 31140002 */*DS03225: P GET SRB'S ASCB ADDRESS */ 31160002 SPACE 2 31180002 DS03225 DC 0H'0' 31200002 USING SRBSECT,R2 SRB ADDRESSABILITY. 31220002 L R5,SRBASCB SRB'S ASCB ADDRESS. 31240002 DROP R8 TEMP DROP 8 AS ASCB ADDRESS REG. 31260002 USING ASCB,R5 TEMP SET ASCB ADDRESSABILITY TO 5 31280002 SPACE 2 31300002 */* D (NO,DS0323,YES,) IS SYSTEM NON DISPATCH? */ 31320002 SPACE 2 31340002 TM CSDSCFL1,CSDSYSND IS SYSTEM NON-DISPATCHABLE. 31360002 BZ DS0323 NO. GO AROUND EXEMPT CHECK 31380002 DST034 DC 0H'0' *** TEST LABEL *** 31400002 SPACE 2 31420002 */* D (NO,DS0329,YES,DS0323) IS ADDRESS SPACE EXEMPT? */ 31440002 SPACE 2 31460002 TM ASCBFLG2,ASCBXMPT YES. TEST IF ADDRESS SPACE IS EXEMPT 31480002 BZ DS0329 NOT EXEMPT. GO TO GET NEXT SRB. 31500002 SPACE 2 31520002 */*DS0323: D (YES,DS0329,NO,) IS ADDR SPACE NON DISPATCH? */ 31540002 SPACE 2 31560002 DS0323 DC 0H'0' ENTER FOR SYSTEM DISPATCHABLE. 31580002 CLI ASCBDSP1,DSX0 IS THIS ADDRESS SPACE NON-DISPATCH. 31600002 BNE DS0329 YES. GO TO GET NEXT SRB. 31620002 SPACE 2 31640002 */* D (YES,DS0329,NO,) ARE ALL SRB'S STOPPED IN ASCB? */ 31644002 SPACE 2 31648002 TM ASCBFLG2,ASCBSNQS ARE ALL SRB'S STOPPED IN ASCB? 31652002 BO DS0329 YES. GO TO GET NEXT SRB. 31656002 SPACE 2 31660002 */* D (YES,DS0324,NO,) IS SRB NON QUIESC? */ 31680002 SPACE 2 31700002 CLI SRBPRIOR,SRBPNONQ IS THIS SRB NON-QUIESCEABLE. 31720002 BE DS0324 YES. GO AROUND SYSTEM SRB CHECKS. 31740002 SPACE 2 31900002 */* D (YES,DS0329,NO,DS0324) STOP QUIES. SRB'S IN ASCB? */ 31920002 SPACE 2 31940002 LH R1,ASCBSSRB STOP QUIESCEABLE SRB'S IN THIS ASCB? 31960002 LTR R1,R1 TEST COUNT GTR THAN ZERO. 31980002 BNZ DS0329 YES. GO TO GET NEXT SRB. 32000002 SPACE 2 32020002 */*DS0324: D (NO,DS0325,YES,) IS CPU AFFIN SPEC? */ 32040002 SPACE 2 32060002 DS0324 DC 0H'0' 32080002 LH RB,SRBCPAFF SRB'S CPU AFFINITY MASK. 32100002 LTR RB,RB ANY? 32120002 BZ DS0325 NOT SPECIFIED. BYPASS AFFINITY CHECK 32140002 DST038 DC 0H'0' *** TEST LABEL *** 32160002 SPACE 2 32180002 */* P GET CPU'S AFFINITY MASK */ 32200002 SPACE 2 32220002 L RE,PSAPCCAV PCCA ADDRESS 32240002 USING PCCA,RE 32260002 LH RF,PCCACAFM CPU'S MASK. 32280002 DROP RE 32300002 SPACE 2 32320002 */* D (NO,DS032A,YES,DS0325) CAN SRB RUN ON THIS CPU? */ 32340002 SPACE 2 32360002 NR RF,RB CAN SRB RUN ON THIS CPU? 32380002 BC DSCC8,DS032A NO. GO TO TEST FOR ANY CPU. 32400002 SPACE 2 32420002 */*DS0325: D (YES,DS03251,NO,) IS THIS TOP SRB ON SPL? */ 32440002 SPACE 2 32460002 DS0325 DC 0H'0' 32480002 C R2,DSL0(R4) IS THIS TOP SRB ON SPL? 32500002 BE DS03251 YES. CONTINUE. 32520002 DST039 DC 0H'0' *** TEST LABEL *** 32540002 SPACE 2 32560002 */* P (,DS032F) SET RETURN TO GLOBAL SRB DISP */ 32580002 SPACE 2 32600002 LA RD,DS033 SET RTN TO GLBL SRB DISP. 32620002 B DS032F GO TO DEQ SRB NOT TOP. 32640002 SPACE 2 32660002 */*DS03251: P CHAIN NEXT SRB TO SPL */ 32680002 SPACE 2 32700002 DS03251 DC 0H'0' ENTER FOR DEQ OF TOP SRB. 32720002 L RC,SRBFLNK FORWARD CHAIN POINTER. 32740002 ST RC,DSL0(R4) RE-CHAIN TO SPL. 32760002 SPACE 2 32780002 */* D (NO,DS0326,YES,) IS THE LAST SRB? */ 32800002 SPACE 2 32820002 LTR RC,RC IS THIS THE ONLY (LAST) SRB? 32840002 BNZ DS0326 NO. GO AROUND CLEARING LAST PTR. 32860002 DST040 DC 0H'0' *** TEST LABEL *** 32880002 SPACE 2 32900002 */* P (,DS033) CLEAR POINTER TO LAST SRB */ 32920002 SPACE 2 32940002 ST RC,DSL4(R4) CLEAR PTR TO LAST SRB. 32960002 B DS033 GO TO GLOBAL SRB DISPATCHER 32980002 SPACE 2 33000002 */*DS0326: P (,DS033) CLEAR SRB CHAIN ADDRESS */ 33020002 SPACE 2 33040002 DS0326 DC 0H'0' ENTER FOR LAST SRB ON SPL. 33060002 SR RE,RE 33080002 ST RE,SRBFLNK CLEAR SRB CHAIN ADDRESS. 33100002 B DS033 GO TO GLOBAL SRB DISPATCHER. 33120002 SPACE 4 33140002 */*DS0329: D (YES,DS03290,NO,) IS THIS THE TOP SRB? */ 33160002 SPACE 2 33180002 DS0329 DC 0H'0' ENTER TO DEQ SRB & SCHEDULE LOCALLY 33200002 C R2,DSL0(R4) IS THIS THE TOP SRB ON SPL? 33220002 BE DS03290 YES. CONTINUE. 33240002 DST041 DC 0H'0' *** TEST LABEL *** 33260002 SPACE 2 33280002 */* P (,DS032F) SET RETURN TO DS03291 */ 33300002 SPACE 2 33320002 LA RD,DS03291 NO. SET RTN. 33340002 B DS032F GO TO DEQ SRB NOT ON TOP OF SPL. 33360002 SPACE 2 33380002 */*DS03290: P CHAIN NEXT SRB TO SPL */ 33400002 SPACE 2 33420002 DS03290 DC 0H'0' ENTER FOR TOP SRB ON SPL. 33440002 L RC,SRBFLNK FORWARD CHAIN POINTER. 33460002 ST RC,DSL0(R4) RE-CHAIN TO SPL. 33480002 SPACE 2 33500002 */* D (NO,DS03291,YES,) IS THIS THE ONLY SRB? */ 33520002 SPACE 2 33540002 LTR RC,RC IS THIS THE ONLY (LAST) SRB? 33560002 BNZ DS03291 NO. GO AROUND CLEARING LAST POINTER. 33580002 DST042 DC 0H'0' *** TEST LABEL *** 33600002 SPACE 2 33620002 */* P CLEAR SPL POINTER TO LAST SRB */ 33640002 SPACE 2 33660002 ST RC,DSL4(R4) DEQ'D LAST SRB. CLEAR SPL PTR TO LAS 33680002 SPACE 2 33700002 */*DS03291: S SCHEDULE:SCHEDULE SRB TO LSMQ */ 33720002 SPACE 2 33740002 DS03291 DC 0H'0' ENTER FOR SCHEDULING SRB LOCALLY. 33760002 LR R1,R2 THIS SRB ADDRESS. 33780002 SCHEDULE SRB=(1),SCOPE=LOCAL SCHEDULE SRB TO LOCAL QUEUE. 33800002 SPACE 2 33820002 */* P (,DS0322) GET NEXT SRB */ 33840002 SPACE 2 33860002 LR R2,RC GET NEXT SRB. 33880002 B DS0322 GO TO SEE IF THIS SRB WILL RUN. 33900002 SPACE 4 33920002 */*DS032A: P GET SYSTEM WIDE CPU AFFINITY MASK */ 33940002 SPACE 2 33960002 DS032A DC 0H'0' ENTER FOR SRB AFFINITY CHECK. 33980002 LH RF,CSDCPUAL SYSTEM WIDE CPU AFFINITY MASK. 34000002 SPACE 2 34020002 */* D (NO,DS0325,YES,) CAN SRB RUN ON ANY CPU? */ 34040002 SPACE 2 34060002 NR RF,RB CAN SRB RUN ON ANY CPU. 34080002 BC DSCC8,DS0325 NO. GO TO DISPATCH AND ABEND. 34100002 DST043 DC 0H'0' *** TEST LABEL *** 34120002 SPACE 2 34140002 */* P (,DS0322) GET NEXT SRB */ 34160002 SPACE 2 34180002 L R2,SRBFLNK SRB CAN RUN ON OTHER CPU. GET NEXT. 34200002 B DS0322 GO TO CHECK NEXT SRB DISPATCHIBILITY 34220002 SPACE 4 34240002 * 34260002 * ENTER FOR NOT TOP SRB ON SPL QUEUE. 34280002 * 34300002 SPACE 2 34320002 */*DS032F: P GET TOP SRB */ 34340002 SPACE 2 34360002 DS032F DC 0H'0' 34380002 L RE,DSL0(R4) TOP SRB. 34400002 SPACE 2 34420002 */*DS032F1: P GET NEXT SRB */ 34440002 SPACE 2 34460002 DS032F1 DC 0H'0' 34480002 L RF,SRBFLNK-SRBSECT(RE) NEXT SRB. 34500002 SPACE 2 34520002 */* D (YES,DS032F2,NO,) IS IT THE CURRENT SRB? */ 34540002 SPACE 2 34560002 CLR RF,R2 IS IT CURRENT? 34580002 BE DS032F2 YES. RE HAS ADDRESS OF PREVIOUS. 34600002 DST044 DC 0H'0' *** TEST LABEL *** 34620002 SPACE 2 34640002 */* P (,DS032F1) SET UP TO SCAN NEXT SRB */ 34660002 SPACE 2 34680002 LR RE,RF NO. SET UP TO SCAN NEXT SRB. 34700002 B DS032F1 GO TO GET NEXT SRB. 34720002 SPACE 2 34740002 */*DS032F2: P CHAIN NEXT SRB TO PREVIOUS */ 34760002 SPACE 2 34780002 DS032F2 DC 0H'0' 34800002 L RC,SRBFLNK NEXT SRB FROM CURRENT. 34820002 ST RC,SRBFLNK-SRBSECT(RE) CHAIN UP TO PREVIOUS 34840002 SPACE 2 34860002 */* D (NO,DST045A,YES,) WAS SRB LAST ON QUEUE? */ 34880002 SPACE 2 34900002 LTR RC,RC WAS CURRENT SRB LAST ON QUEUE? 34920002 DST044A DC 0H'0' *** TEST LABEL *** 34940002 BCR DSCC7,RD NO. DONE. GO BACK TO CALLER 34960002 DST045 DC 0H'0' *** TEST LABEL *** 34980002 SPACE 2 35000002 */* P STORE PREVIOUS SRB ADDRESS INTO SPL */ 35020002 SPACE 2 35040002 ST RE,DSL4(R4) YES. STORE PREVIOUS SRB ADDRESS 35060002 * INTO SPL. 35080002 SPACE 2 35100002 */*DST045A: R RETURN TO CALLER */ 35120002 SPACE 2 35140002 DST045A DC 0H'0' *** TEST LABEL *** 35160002 BR RD GO BACK TO CALLER 35180002 DROP R5 35200002 USING ASCB,R8 RE-ESTABLISH ASCB ADDRESSABILITY 35220002 TITLE 'IEAVEDS0 - GLOBAL SRB DISPATCHER' 35240002 *********************************************************************** 35260002 * * 35280002 * GLOBAL SRB DISPATCHER * 35300002 * R2 HAS SRB ADDRESS R5 HAS ASCB ADDRESS * 35320002 * * 35340002 *********************************************************************** 35360002 SPACE 2 35380002 */*DS033: P SET SRB MODE INDICATORS */ 35400002 SPACE 2 35420002 ENTRY DSSRBRTN @Z40FPXJ 35426040 DSSRBRTN DS 0H @Z40FPXJ 35432040 DS033 DC 0H'0' 35440002 OI LCCADSF2,LCCASRBM+LCCAGSRB+LCCADSRW SET SRBMODE AND 35460002 * GLOBAL SRB MODE INDICATORS 35480002 ST R2,LCCASPLJ JOURNAL GLOBAL ENTRY 35490002 SPACE 2 35500002 */* P RELOAD ASCB ADDRESS FOR ADDRESSABILITY */ 35520002 SPACE 2 35540002 LR R8,R5 RELOAD ASCB FOR ADDRESSABILITY 35560002 SPACE 2 35680002 */* P SET PSAAOLD TO ADDRESS OF ASCB IN SRB */ 35700002 SPACE 2 35720002 ST R5,PSAAOLD SET "CURRENT" ASCB ADDRESS 35740002 SPACE 2 35743002 */* P LOAD CONTROL REGISTER WITH NEW ASCB'S STOR */ 35746002 SPACE 2 35749002 LCTL R1,R1,ASCBSTOR LOAD FOR NEW ADDRESS SPACE ADDRESS- 35752002 * ABILITY @YM06905 35755002 SPACE 2 35760002 */*DS0331: P INCREMENT COUNT OF SRB'S IN ADDR. SPACE */ 35780002 SPACE 2 35800002 DS0331 DC 0H'0' 35820002 LH R3,ASCBSRBS * INCREMENT COUNT OF THE 35840002 LA R3,DSI1(R3) * NUMBER OF SRB'S DISPATCHED 35860002 STH R3,ASCBSRBS * IN THIS ADDRESS SPACE. 35880002 DST046 DC 0H'0' *** TEST LABEL *** 36020002 SPACE 2 36040002 */* P BUILD MODEL PSW IN LOW CORE */ 36060002 SPACE 2 36080002 L R4,DSSRBPSW MODEL PSW 36100002 ST R4,PSAPSWSV MOVE TO LOW CORE. 36120002 SPACE 36140002 OC PSAPSWSV+DSL1(DSL1),SRBPKF SET PROTECT KEY AS 36200002 * SPECIFIED IN THE SRB. 36220002 SPACE 36240002 L RF,SRBEP * 36260002 LA RF,DSL0(RF) * SET PSW ENTRY ADDRESS 36280002 ST RF,PSAPSWSV+DSL4 * 36300002 SPACE 2 36320002 */* P MOVE SRB AFFIN, PURGE ASID/TCB ADDRS TO LCCA */ 36340002 SPACE 2 36360002 MVC LCCASRBF(DSL8),SRBFLC MOVE SRB AFFINITY, PURGE ASID 36380002 * AND PURGE TCB ADDR TO LCCA. 36400002 SPACE 2 36422002 */* P PURGE THE NORMAL STACK */ 36424002 SPACE 2 36426002 SETFRR F,WRKREGS=(R3,R4) PURGE THE NORMAL STACK 36428002 SPACE 2 36430002 */* P RESET THE DISPATCHER INDICATOR */ 36432002 SPACE 2 36434002 NI PSASUP1,DSXFF-PSADISP RESET DISPATCHER INDICATOR 36436002 SPACE 2 36436402 */* P ZERO SPL JOURNAL WORD */ 36436802 SPACE 2 36437202 SR R4,R4 ZERO A REGISTER 36437602 ST R4,LCCASPLJ ZERO THE SPL JOURNAL WORD 36437702 SPACE 2 36438002 */* P RESET SUPER STACK TO NORMAL */ 36438402 SPACE 2 36438802 LISRBPSW DC 0H'0' 36439202 L R3,PSANSTK OBTAIN NORMAL STACK ADDR 36439302 ST R3,PSACSTK SET CURRENT STACK TO NORMAL ADDR. 36439602 SPACE 2 36439702 */* P SET R0 = SRB ADDRESS, R1 = PARM ADDRESS AND R14 = RETURN ADDR */ 36440002 SPACE 2 36460002 LR R0,R2 SRB ADDRESS 36480002 L R1,SRBPARM PARAMETER ADDRESS 36500002 SPACE 2 36540002 */* P GET ADDRESSABILITY TO CVT */ 36560002 SPACE 2 36580002 L RB,FLCCVT CVT ADDRESSABILITY TO GET 36600002 USING CVT,RB CVT TRACE ENTRY 36620002 SPACE 2 36640002 */* D (NO,DS03315,YES,) DOES SRB HAVE AFFINITY? */ 36660002 SPACE 2 36680002 LH RA,SRBCPAFF SRB'S CPU AFFINITY MASK. 36700002 LTR RA,RA TEST FOR AFFINITY SPECIFIED. 36720002 BZ DS03315 NO. GO TO TEST TRACE ACTIVE. 36740002 SPACE 2 36760002 */* P GET CPU'S AFFINITY MASK FROM THE PCCA */ 36780002 SPACE 2 36800002 L R5,PSAPCCAV PCCA'S ADDRESS FROM PSA. 36820002 USING PCCA,R5 ESTABLISH PCCA ADDRESSABILITY. 36840002 LH R5,PCCACAFM CPU'S AFFINITY MASK. 36860002 DROP R5 DROP PCCA ADDRESSABILITY. 36880002 SPACE 2 36900002 */* D (YES,DS03315,NO,) CAN SRB RUN ON THIS CPU? */ 36920002 SPACE 2 36940002 NR R5,RA TEST SRB MASK AGAINST CPU MASK. 36960002 BNZ DS03315 MATCH. SRB CAN RUN ON THIS CPU. 36980002 SPACE 2 37000002 */* P SET REG 1 TO 072 ABEND CODE */ 37020002 SPACE 2 37040002 L R1,DSABAFFN LOAD REGISTER 1 WITH 072 ABEND CODE 37060002 SPACE 2 37080002 */* P SET SRB'S PSW TO POINT TO SVC ABEND INSTRUCTION IN CVT */ 37100002 SPACE 2 37120002 LA R5,CVTQABST ADDRESS OF SVC D INST IN CVT. 37140002 ST R5,PSAPSWSV+DSL4 SET PSW TO GO TO SVC D. 37160002 SPACE 2 37180002 */* P REMOVE SRB'S AFFN TO OFFLINE CPU IN LCCA FOR ABEND */ @ZA25275 37182040 SPACE 2 @ZA25275 37184040 SLR R5,R5 ZERO A REGISTER. @ZA25275 37186040 STH R5,LCCASRBF ZERO SRB'S INVALID AFFN @ZA25275 37188040 * SET IN LCCA. @ZA25275 37190040 SPACE 2 @ZA25275 37192040 */*DS03315: D (NO,DS0332,YES,) IS TRACE ACTIVE? */ 37200002 SPACE 2 37220002 DS03315 DC 0H'0' 37240002 CLI CVTTRACE+DSL1,DSTRACEM IS TRACE ACTIVE? 37260002 BNE DS0332 NO. BYPASS. 37280002 DROP RB DROP CVT BASE. 37300002 SPACE 2 37320002 */* S TRSRB1:TRACE SRB DISPATCH */ 37340002 SPACE 2 37360002 L RA,DSTRSRB1 TRACE SRB ENTRY ADDRESS 37380002 DST046A DC 0H'0' *** TEST LABEL *** 37400002 BALR RB,RA GO TO TRACE 37420002 LOADPSA1 DC 0H'0' ***** FOR TSO TEST ***** 37440002 SPACE 2 37460002 */*DS0332: S IEADISP1:GTF INTERFACE */ 37480002 SPACE 2 37500002 DS0332 DC 0H'0' 37520002 HOOK EID=IEADISP1,TYPE=P GO TO GTF 37540002 SPACE 2 37560002 */* P STORE TOD CLOCK INTO LCCA FOR JOB STEP TIMING */ 37580002 SPACE 2 37600002 STCK LCCADTOD STORE TOD CLOCK FOR JOB STEP TIMING 37620002 SPACE 2 37990002 */*DSLOCK11: S SETLOCK:RELEASE GLOBAL DISPATCHER LOCK */ 37992002 SPACE 2 37994002 DSLOCK11 DC 0H'0' 37996002 * SETLOCK RELEASE,TYPE=DISP,RELATED=('ASCB QUEUE/GSPL/LSPL/PSAAN*37998002 EW',IEAVEDS0,(DSLOCK5,DSLOCK6,DSLOCK7,DSLOCK9,DSLOCK10)) 37998402 L RB,DSDISPLK OBTAIN DISP LOCK ADDR @YM03564 37998702 SLR RD,RD ZERO A REGISTER @YM03564 37999002 ST RD,DSL0(RB) FREE LOCK VIA STORE ZEROS @YM03564 37999302 NI PSAHLHI+DSL2,X'EF' INDICATE DISPATCHER LOCK NOT HELD 37999602 SPACE 2 38000002 *********************************************************************** 38020002 * * 38040002 * LOAD PSW FOR INITIAL DISPATCH OF AN SRB * 38060002 * * 38080002 *********************************************************************** 38100002 SPACE 2 38120002 */*ISRBPSW: R LPSW */ 38140002 SPACE 2 38160002 ISRBPSW DC 0H'0' 38180002 LA RE,IEAPDSRT RETURN ADDRESS 38190002 LPSW PSAPSWSV INITIAL SRB DISPATCH 38200002 TITLE 'IEAVEDS0 - SRBS ON LSMQ' 38220002 *********************************************************************** 38240002 * * 38260002 * LOCAL SRB'S ON THE LOCAL SERVICE MANAGER QUEUE PROCESSING. * 38280002 * R5 - HAS FIRST SRB ADDRESS * 38300002 * R6 - HAS LSMQ ADDRESS * 38320002 * * 38340002 *********************************************************************** 38360002 SPACE 2 38380002 */*DS041: S DSSAVE:SAVE STATUS OF PREVIOUS TASK */ 38400002 SPACE 2 38420002 DS041 DC 0H'0' 38440002 BAL RF,DSSAVE SAVE STATUS OF PREVIOUS TASK. 38460002 * DSSAVE USES REGISTERS 0,1,2,3,14 AND 15. 38480002 SPACE 2 38500002 */*DSLOCK12: S SETLOCK: OBTAIN GLOBAL DISPATCHER LOCK */ 38520002 SPACE 2 38540002 DSLOCK12 DC 0H'0' 38560002 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*38580002 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK8,DSLOCK14,DSLOCK16,DSLOC*38600002 K17,DSLOCK18,DSLOCK19)) 38620002 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 38626002 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 38632002 SPACE 2 38640002 */*DS0411: P SET UP FOR COMPARE AND SWAP */ 38660002 SPACE 2 38680002 DS0411 DC 0H'0' 38700002 SR R3,R3 CLEAR FOR COMPARE AND SWAP 38720002 SPACE 2 38740002 */*DS0412: P (OK,DS042,ZERO,DSRT0177,ADD,DS0412) CMPR & SWAP LSMQ */ 38760002 SPACE 2 38780002 DS0412 DC 0H'0' 38800002 CS R5,R3,DSL0(R6) DEQUEUE ENTIRE QUEUE 38820002 BC DSCC8,DS042 OK. CONTINUE. 38840002 DST050 DC 0H'0' *** TEST LABEL *** 38860002 LTR R5,R5 TEST FOR SRB PICKED UP IN CS 38880002 BNZ DS0412 YES. SCHED HAS ADDED ONE. GO TO TRY 38900002 * AGAIN. 38920002 DST051 DC 0H'0' *** TEST LABEL *** 38940002 B DSRT0177 NO. ANOTHER CPU HAS DEQUEUED THEM. 38960002 * GO TO TEST MEMORY SWITCH. 38980002 SPACE 39000002 *********************************************************************** 39020002 * * 39040002 * SET UP TO GO TO LOCAL SCHEDULE * 39060002 * R3 - RETURN ADDRESS * 39080002 * R4 - ENTRY POINT ADDRESS * 39100002 * R5 - CONTENTS OF LSMQ (FIRST SRB ADDRESS) * 39120002 * R7 - LCCA ADDRESS * 39140002 * R8 - ASCB ADDRESS * 39160002 * R9 - DISPATCHER BASE ADDRESS * 39180002 * * 39200002 *********************************************************************** 39220002 SPACE 2 39240002 */*DS042: S IEAVESC2:LOCAL SCHEDULE TO MOVE SRB'S TO LSPL'S */ 39260002 SPACE 2 39280002 DS042 DC 0H'0' 39300002 ST R5,LCCASMQJ JOURNAL LOCAL SMQ ENTRY 39310002 L R4,DSVESC2 LOCAL SCHEDULE ADDRESS 39320002 BALR R3,R4 GO. 39340002 DST052 DC 0H'0' *** TEST LABEL *** 39360002 * 39380002 * REGISTERS 7,8 AND 9 ARE RETURNED FROM LOCAL SCHEDULE 39400002 * 39420002 SPACE 2 39440002 */*DS043: D (YES,DS052,NO,) TEST FOR MEMORY SWITCH */ 39460002 SPACE 2 39480002 DS043 DC 0H'0' 39500002 C R8,PSAANEW TEST FOR MEMORY SWITCH. 39520002 BNE DS052 YES. GO TO MEMORY DISPATCHER. 39540002 DST053 DC 0H'0' *** TEST LABEL *** 39560002 SPACE 2 39580002 */* D (YES,DS062,NO,DSLOCK18) ANY LOCAL SPL ADDRESS */ @ZA20174 39590040 SPACE 2 39620002 L R4,ASCBSPL NO. GET LOCAL SPL ADDRESS. 39640002 L R0,DSL4(R4) ANY NON-Q SRBS? @YM03564 39645002 O R0,DSL8(R4) OR SYSTEM SRBS? @YM03564 39650002 BNZ DS062 YES GO TO LOCAL SPL PROCESSOR 39655002 B DSLOCK18 NO GO TO PROCESS MEMORY @YM03564 39660002 TITLE 'IEAVEDS0 - MEMORY DISPATCHER' 39680002 *********************************************************************** 39700002 * * 39720002 * MEMORY DISPATCHER SECTION - THIS SECTION IS ENTERED WHEN AN * 39740002 * ADDRESS SPACE SWITCH HAS BEEN INDICATED BY PSAANEW NOT BEING * 39760002 * EQUAL TO PSAAOLD. * 39780002 * * 39800002 *********************************************************************** 39820002 SPACE 2 39840002 */*DS051: S DSSAVE:SAVE STATUS OF PREVIOUS TASK */ 39860002 SPACE 2 39880002 DS051 DC 0H'0' 39900002 BAL RF,DSSAVE GO TO SAVE STATUS OF PREVIOUS TASK. 39920002 * DSSAVE USES REGISTERS 0,1,2,3,14 AND 15. 39940002 SPACE 2 39960002 */*DSLOCK13: S SETLOCK:OBTAIN GLOBAL DISPATCHER LOCK */ 39980002 SPACE 2 40000002 DSLOCK13 DC 0H'0' 40020002 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*40040002 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK14,DSLOCK16,DSLOCK17,DSLO*40060002 CK18,DSLOCK19)) 40080002 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 40086002 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 40092002 SPACE 2 40100002 */*DS052: P SET UP CVT AND CSD ADDRESSING */ 40120002 SPACE 2 40140002 DS052 DC 0H'0' 40160002 L R6,FLCCVT CVT 40180002 USING CVT,R6 ADDRESSING. 40200002 L R5,CVTCSD CSD 40220002 USING CSD,R5 ADDRESSING. 40240002 SPACE 2 40260002 */* P GET PSAANEW */ 40280002 SPACE 2 40300002 L R8,PSAANEW NEXT ASCB TO DISPATCH. 40320002 SPACE 2 40340002 */* D (NO,DS054,YES,DS053) IS PSAANEW EQUAL ZERO? */ 40360002 SPACE 2 40380002 LTR R8,R8 TEST FOR "PSAANEW"=0 - START FROM 40400002 * TOP OF ASCB DISPATCHING QUEUE? 40420002 BNZ DS0543 NO. GO AROUND @Z40FPXJ 40440040 SPACE 2 40460002 */*DS053: P GET HEAD OF ASCB DISP QUEUE FROM CVT */ 40480002 SPACE 2 40500002 DS053 DC 0H'0' 40520002 L R8,CVTASCBH HEAD OF ASCB DISPATCHING QUEUE. 40540002 SPACE 2 40560002 */*DS054: D (YES,DS05B,NO,) TEST FOR END OF QUEUE */ 40580002 SPACE 2 40600002 DS054 DC 0H'0' 40620002 LTR R8,R8 HAVE WE SCANNED ALL ASCB'S AND 40640002 * FOUND NO WORK? 40660002 BZ DS05B YES. GO TO DISPATCH WAIT TASK. 40680002 SPACE 40700002 DST054 DC 0H'0' *** TEST LABEL *** 40720002 SPACE 2 40740002 */* D (YES,DS053,NO,) IS ASCB OFF QUEUE? */ 40760002 SPACE 2 40780002 DS0543 DS 0H @Z40FPXJ 40790040 TM ASCBDSP1,ASCBNOQ HAS THE ASCB FROM PSAANEW BEEN 40800002 * REMOVED FROM THE DISPATCHING Q. 40820002 BO DS053 YES. GO TO START AT HEAD OF QUEUE. 40840002 SPACE 40860002 DST055 DC 0H'0' *** TEST LABEL *** 40880002 SPACE 2 40900002 */* D (NO,DS0545,YES,) HAS ASCB FAILED? */ 40920002 SPACE 2 40940002 TM ASCBDSP1,ASCBFAIL IS THIS ASCB IN FAILURE MODE AND IN 40960002 * THE PROCESS OF BEING REMOVED 40980002 * FROM THE QUEUE OUT OF MASTER. 41000002 BZ DS0545 NO. CONTINUE. 41020002 DST056 DC 0H'0' *** TEST LABEL *** 41040002 SPACE 2 41060002 */* P (,DS054) GET NEXT ASCB */ 41080002 SPACE 2 41100002 L R8,ASCBFWDP GET NEXT ASCB. 41120002 B DS054 GO TO TEST IT'S DISPATCHABILITY. 41140002 SPACE 2 41160002 */*DS0545: D (NO,DS055,YES,) IS SYS NON DISP? */ 41180002 SPACE 2 41200002 DS0545 DC 0H'0' 41220002 TM CSDSCFL1,CSDSYSND IS THE SYSTEM NON-DISPATCHABLE? 41240002 BZ DS055 NO. GO AROUND. 41260002 DST057 DC 0H'0' *** TEST LABEL *** 41280002 SPACE 2 41300002 */* D (YES,DS055,NO,) IS ASCB EXEMPT? */ 41320002 SPACE 2 41340002 TM ASCBFLG2,ASCBXMPT IS THIS ADDRESS SPACE EXEMPT FROM 41360002 * BEING SET NON-DISPATCHABLE? 41380002 BO DS055 YES. CONTINUE. 41400002 DST058 DC 0H'0' *** TEST LABEL *** 41420002 SPACE 2 41440002 */* P (,DS054) GET NEXT ASCB */ 41460002 SPACE 2 41480002 L R8,ASCBFWDP GET NEXT ASCB. 41500002 B DS054 GO TO TEST IT'S DISPATCHABILITY. 41520002 SPACE 2 41540002 */*DS055: P GET LOCAL SPL ADDRESS */ 41560002 SPACE 2 41580002 DS055 DC 0H'0' 41600002 L R4,ASCBSPL LOCAL SPL ADDRESS 41620002 SPACE 2 41640002 */* D (NO,DS0551,YES,) ANY LOCAL SRB'S? */ 41660002 SPACE 2 41680002 L R0,DSL4(R4) ANY NON-Q SRBS? @YM03564 41686002 O R0,DSL8(R4) OR SYSTEM SRBS? @YM03564 41692002 BZ DS0551 NO. CONTINUE. @YM03564 41720002 SPACE 2 41744002 */* D (YES,DS0551,NO,) ARE ALL SRB'S STOPPED IN ASCB? */ 41764002 SPACE 2 41768002 TM ASCBFLG2,ASCBSNQS ARE ALL SRB'S STOPPED? 41776002 BO DS0551 YES CONTINUE @YM03564 41776802 SPACE 2 @YM03564 41778802 */*P SET PSAANEW AND PSAAOLD */ 41779202 SPACE 2 @YM03564 41780002 ST R8,PSAAOLD SET "CURRENT". @YM03564 41784002 ST R8,PSAANEW SET "NEXT". @YM03564 41788002 SPACE 2 @YM03564 41788802 */* P (,DS062A) LOAD CONTROL REGISTER WITH NEW STOR */ 41789602 SPACE 2 @YM03564 41790402 LCTL R1,R1,ASCBSTOR NEW SEGMENT TABLE ORIGIN. @YM06905 41791202 B DS062A GO TO LOCAL SPL PROCESSOR @YM03564 41792002 SPACE 2 @YM03564 41796002 */*DS0551: D (YES,DS056,NO,) IS INTRPT ID IN LCL LOCK? */ 41800002 SPACE 2 41820002 DS0551 DC 0H'0' 41824002 L R3,ASCBLOCK LOCAL LOCK 41840002 C R3,DSINTPID DOES IT CONTAIN INTERRUPTED ID. 41860002 BE DS056 YES. GO TO DISPATCH LOCAL SUPVR. 41880002 SPACE 41900002 DST060 DC 0H'0' *** TEST LABEL *** 41920002 SPACE 2 41940002 */* D (YES,DS0552,NO,) IS LOCAL LOCK AVAILABLE? */ 41960002 SPACE 2 41980002 LTR R3,R3 IS THE LOCAL LOCK AVAILABLE? 42000002 BZ DS0552 YES. GO AROUND. 42020002 DST061 DC 0H'0' *** TEST LABEL *** 42040002 SPACE 2 42060002 */* P (,DS054) GET NEXT ASCB */ 42080002 SPACE 2 42100002 L R8,ASCBFWDP GET NEXT ASCB. 42120002 B DS054 GO TO TEST IT'S DISPATCHABILITY. 42140002 SPACE 2 42160002 */*DS0552: D (YES,DS0554,NO,) ARE TCB'S DISPATCH? */ 42180002 SPACE 2 42200002 DS0552 DC 0H'0' 42220002 TM ASCBFLG1,ASCBSTND ARE TCB'S DISPATCHABLE? 42240002 BZ DS0554 YES. GO AROUND. 42260002 DST062 DC 0H'0' *** TEST LABEL *** 42280002 SPACE 2 42300002 */* P (,DS054) GET NEXT ASCB */ 42320002 SPACE 2 42340002 L R8,ASCBFWDP GET NEXT ASCB. 42360002 B DS054 GO TO TEST IT'S DISPATCHABILITY. 42380002 SPACE 2 42400002 */*DS0554: D (YES,DS056,NO,) ASYNCH EXITS? */ 42420002 SPACE 2 42440002 DS0554 DC 0H'0' 42460002 TM ASCBFLG1,ASCBS3S ARE THERE ASYNCHRONOUS EXITS? 42480002 BO DS056 YES. GO TO DISPATCH ADDRESS SPACE. 42500002 DST063 DC 0H'0' *** TEST LABEL *** 42520002 SPACE 2 42540002 */* D (YES,DS056,NO,) IS NBR TCB'S GTR NBR CPU'S? */ 42560002 SPACE 2 42580002 L RD,ASCBTCBS NUMBER OF TCBS READY @YM03564 42590002 C RD,ASCBCPUS IS NUMBER TCB'S GTR NUMBER CPU'S. 42600002 BH DS056 YES. GO TO DISPATCH THE ADDR SPACE 42620002 DST064 DC 0H'0' *** TEST LABEL *** 42640002 SPACE 2 42660002 */* P (,DS054) GET NEXT ASCB */ 42680002 SPACE 2 42700002 L R8,ASCBFWDP GET NEXT ASCB. 42720002 B DS054 GO TO TEST IT'S DISPATCHABILITY. 42740002 SPACE 42760002 DROP R5 DROP CSD ADDRESSING 42780002 DROP R6 DROP CVT ADDRESSING 42800002 SPACE 42820002 * 42840002 * DISPATCH THE ADDRESS SPACE 42860002 * R4 HAS LOCAL SPL ADDRESS 42880002 * 42900002 DS056 DC 0H'0' 42980002 SPACE 2 43020002 */*DS056: P SET PSAANEW AND PSAAOLD */ 43040002 SPACE 2 43060002 ST R8,PSAAOLD SET "CURRENT". 43080002 ST R8,PSAANEW SET "NEXT". 43100002 SPACE 2 43120002 */* P LOAD CONTROL REGISTER WITH NEW STOR */ 43140002 SPACE 2 43160002 LCTL R1,R1,ASCBSTOR NEW SEGMENT TABLE ORIGIN. @YM06905 43180002 SPACE 2 43240002 */*DSLOCK18: S (,DS07) SETLOCK:RELEASE GLOBAL DISPATCHER LOCK */ 43260002 SPACE 2 43280002 DSLOCK18 DC 0H'0' 43300002 * SETLOCK RELEASE,TYPE=DISP,RELATED=('ASCB QUEUE/GSPL/LSPL/PSAAN*43320002 EW',IEAVEDS0,(DSLOCK5,DSLOCK6,DSLOCK7,DSLOCK9,DSLOCK10,D*43340002 SLOCK12,DSLOCK13,DSLOCK22,DSLOCK3)) 43360002 L RB,DSDISPLK OBTAIN DISP LOCK ADDR @YM03564 43364002 SLR RD,RD ZERO A REGISTER @YM03564 43368002 ST RD,DSL0(RB) FREE LOCK VIA STORE ZEROS @YM03564 43372002 NI PSAHLHI+DSL2,X'EF' INDICATE DISPATCHER LOCK NOT HELD 43376002 DST065 DC 0H'0' *** TEST LABEL *** 43380002 SPACE 2 43390002 */* D (YES,DS08X,NO,) TEST FOR LOCAL LOCK AVAILABLE */ 43400002 SPACE 2 43401002 L R1,ASCBLOCK CURRENT LOCKWORD VALUE @YM07654 43402002 LH R3,PSACPULA LOGICAL CPU ADDRESS. @YM07654 43403002 LTR R1,R1 IS LOCK AVAILABLE? @YM07654 43404002 BZ DS08X LOCK IS AVAILABLE, OBTAIN IT@YM07654 43405002 SPACE 2 @YM07654 43406002 */* D (YES,DS08A,NO,) TEST FOR LOCAL SUPERVISOR */ 43407002 SPACE 2 @YM07654 43408002 BM DS08A INTERRUPT ID, GO OBTAIN IT @YM07654 43409002 SPACE 2 @YM07654 43410002 */* D (YES,DS081,NO,DS08B) WAS LOCK OWNED BY THIS CPU? */ 43411002 SPACE 2 @YM07654 43412002 CR R1,R3 WAS LOCAL LOCK OWNED BY THIS CPU? 43413002 BE DS081 YES. GO TO LOCAL SUPVR DISPATCHER 43420002 B DS08B LOCK IS NOT AVAILABLE @YM07654 43426002 TITLE 'IEAVEDS0 - WAIT DISPATCHER' 43432002 *********************************************************************** 43440002 * * 43460002 * PREPARE TO DISPATCH THE WAIT TASK * 43480002 * THIS SECTION IS ENTERED WHEN NO WORK HAS BEEN FOUND * 43500002 * IN THE INITIAL SCAN. THE WAIT TASK IS SET UP AND THE * 43520002 * QUEUES ARE SCANNED ONCE MORE TO PICK UP ANY SRB'S WHICH * 43540002 * MAY HAVE BEEN SCHEDULED DURING THE FIRST SCAN. * 43560002 * * 43580002 *********************************************************************** 43600002 SPACE 2 43620002 */*DS05B: P PICK UP ADDRESS OF WAIT TCB AND ASCB */ 43640002 SPACE 2 43660002 DS05B DC 0H'0' 43680002 L R8,DSWASCB WAIT ASCB ADDRESS 43700002 L R5,DSWTCB WAIT TCB ADDRESS 43720002 */*DS05BB: P OBTAIN OLD CPUS COUNT */ 43732002 SPACE 2 43734002 DS05BB DC 0H'0' 43735002 L R4,ASCBCPUS NUMBER OF CPUS DISPATCHED TO WAIT 43736002 SPACE 2 43736502 */*DS05B1: P (CHNG,DS05B1,,) COMPARE AND SWAP # CPU'S IN WAIT */ 43737002 SPACE 2 43737502 DS05B1 DC 0H'0' 43738002 LA R3,DSI1(R4) INCREMENT COUNT OF NUMBER CPUS. 43738402 CS R4,R3,ASCBCPUS UPDATE COUNT 43738802 BC DSCC4,DS05B1 CHANGED. GO TRY AGAIN 43739202 SPACE 2 43740002 */*DS05B2: P STORE WAIT ASCB ADDRESS INTO PSAANEW AND PSAAOLD */ 43750002 SPACE 2 43760002 DS05B2 DC 0H'0' 43790002 ST R8,PSAAOLD SET PSAAOLD 43880002 ST R8,PSAANEW SET PSAANEW 43900002 SPACE 2 43904002 */* P LOAD MASTER'S STOR */ 43906040 SPACE 2 43912002 LCTL R1,R1,PSASTOR MASTER'S STOR. @YM06905 43916002 SPACE 2 43920002 */* P STORE WAIT TCB ADDRESS INTO PSATNEW AND PSATOLD */ 43940002 SPACE 2 43960002 ST R5,PSATOLD SET PSATOLD 43980002 ST R5,PSATNEW SET PSATNEW 44000002 SPACE 2 44180002 */*DSLOCK14: S (,DS08B2) SETLOCK:RELEASE GLOBAL DISP LOCK */ 44190040 SPACE 2 44220002 DSLOCK14 DC 0H'0' 44240002 * SETLOCK RELEASE,TYPE=DISP,RELATED=('ASCB QUEUE/GSPL/LSPL/PSAAN*44260002 EW',IEAVEDS0,(DSLOCK5,DSLOCK6,DSLOCK7,DSLOCK9,DSLOCK10,D*44280002 SLOCK12,DSLOCK13,DSLOCK22,DSLOCK3)) 44300002 L RB,DSDISPLK OBTAIN DISP LOCK ADDR @YM03564 44304002 SLR RD,RD ZERO A REGISTER @YM03564 44308002 ST RD,DSL0(RB) FREE LOCK VIA STORE ZEROS @YM03564 44312002 NI PSAHLHI+DSL2,X'EF' INDICATE DISPATCHER LOCK NOT HELD 44316002 DST066 DC 0H'0' *** TEST LABEL *** 44320002 SPACE 44340002 B DS08B2 GO TO RECURSE. @ZA09433 44350040 EJECT 44380002 *********************************************************************** 44400002 * * 44420002 * DISPATCH THE WAIT TASK * 44440002 * THIS SECTION IS ENTERED TO DISPATCH THE WAIT TASK AFTER A * 44460002 * SECOND SCAN HAS BEEN MADE OF THE DISPATCHING QUEUES. * 44480002 * * 44500002 *********************************************************************** 44520002 SPACE 2 44540002 */*DS05C: P MOVE WAIT PSW TO LOW CORE */ 44560002 SPACE 2 44580002 DS05C DC 0H'0' 44600002 MVC PSAPSWSV(DSL8),DSWPSW WAIT PSW TO LOW CORE. @YM03464 44620002 SPACE 2 44640002 */* D (BAD,DS053,GOOD,) TEST FOR GOOD TOD CLOCK */ 44660002 SPACE 2 44680002 L R5,PSAPCCAV ADDRESS OF PCCA. 44700002 USING PCCA,R5 PCCA ADDRESSABILITY. 44720002 TM PCCATODE,PCCANUTD TEST FOR BAD TOD CLOCK. 44740002 BO DS05C3 BAD. BYPASS TOD CLOCK SETTING. 44760002 DROP R5 DROP PCCA ADDRESSABILITY. 44780002 SPACE 2 44800002 */* P STORE TOD CLOCK INTO THE LCCA */ 44820002 SPACE 2 44840002 STCK LCCADTOD TIME OF DAY 44860002 SPACE 2 @YM03564 44864002 */* P INDICATE WORK DISPATCHED */ 44868002 SPACE 2 @YM03564 44872002 OI LCCADSF2,LCCADSRW READY WORK DISPATCHED @YM03564 44876002 SPACE 2 44880002 */*DS05C3: P GET ADDRESSABILITY TO CVT. */ 44900002 SPACE 2 44920002 DS05C3 DC 0H'0' 44940002 L R6,FLCCVT CVT 44960002 USING CVT,R6 ADDRESSING. 44980002 SPACE 2 45000002 */* D (NO,DS05C5,YES,) IS TRACE ACTIVE? */ 45020002 SPACE 2 45040002 CLI CVTTRACE+DSL1,DSTRACEM IS TRACE ACTIVE? 45060002 BNE DS05C5 NO. BYPASS. 45080002 DROP R6 45100002 SPACE 2 45120002 */* S TRDISP:TRACE ENTRY TO WAIT STATE */ 45140002 SPACE 2 45160002 L RA,DSTRDISP TRACE ENTRY POINT. 45180002 SLR RF,RF ZERO REGISTER 15 FOR TRACE @YM03564 45200002 SLR R0,R0 ZERO REGISTER 0 @YM03564 45206002 SLR R1,R1 ZERO REGISTER 1 @YM03564 45212002 DST066A DC 0H'0' *** TEST LABEL *** 45220002 BALR RB,RA GO TO TRACE 45240002 LOADPSA2 DC 0H'0' ***** FOR TSO TEST ***** 45260002 SPACE 2 45280002 */*DS05C5: S IEADISP3:MONITOR CALL TO GTF */ 45300002 SPACE 2 45320002 DS05C5 DC 0H'0' 45340002 HOOK EID=IEADISP3,TYPE=P GO TO GTF 45360002 SPACE 2 @YM03564 45364002 */* P PURGE THE NORMAL STACK */ 45368002 SPACE 2 @YM03564 45372002 SETFRR F,WRKREGS=(R1,R2) @YM03564 45376002 SPACE 2 45380002 */* P CLEAR ALL REGISTERS TO ZERO */ 45400002 SPACE 2 45420002 SLR R0,R0 ZERO ALL REGISTERS @YM03564 45440002 SLR R1,R1 ZERO REGISTER 1 @YM03564 45441002 SLR R2,R2 ZERO REGISTER 2 @YM03564 45442002 SLR R3,R3 ZERO REGISTER 3 @YM03564 45443002 SLR R4,R4 ZERO REGISTER 4 @YM03564 45444002 SLR R5,R5 ZERO REGISTER 5 @YM03564 45445002 SLR R6,R6 ZERO REGISTER 6 @YM03564 45446002 SLR R7,R7 ZERO REGISTER 7 @YM03564 45447002 SLR R8,R8 ZERO REGISTER 8 @YM03564 45448002 SLR R9,R9 ZERO REGISTER 9 @YM03564 45449002 SLR RA,RA ZERO REGISTER 10 @YM03564 45450002 SLR RB,RB ZERO REGISTER 11 @YM03564 45451002 SLR RC,RC ZERO REGISTER 12 @YM03564 45452002 SLR RD,RD ZERO REGISTER 13 @YM03564 45453002 SLR RE,RE ZERO REGISTER 14 @YM03564 45454002 SLR RF,RF ZERO REGISTER 15 @YM03564 45455002 SPACE 2 45460002 */* P RESET THE DISPATCHER INDICATOR */ 45480002 SPACE 2 45500002 NI PSASUP1,DSXFF-PSADISP RESET DISPATCHER INDICATOR. 45520002 SPACE 2 45540002 */* P RESET FRR STACK POINTER TO NORMAL */ 45560002 SPACE 2 45580002 LWAITPSW DC 0H'0' 45600002 MVC PSACSTK(DSL4),PSANSTK MAKE NORMAL STACK CURRENT. 45620002 SPACE 2 45640002 *********************************************************************** 45660002 * * 45680002 * LOAD PSW TO DISPATCH THE WAIT TASK * 45700002 * * 45720002 *********************************************************************** 45740002 SPACE 2 45760002 */*WAITPSW: R LOAD WAIT PSW */ 45780002 SPACE 2 45800002 WAITPSW DC 0H'0' 45820002 LPSW PSAPSWSV LOAD WAIT PSW. 45840002 TITLE 'IEAVEDS0 - LSPL' 45860002 *********************************************************************** 45880002 * * 45900002 * LOCAL SRB'S ON THE LOCAL SERVICE PRIORITY LIST * 45920002 * R4 - HAS THE ADDRESS OF THE LOCAL SPL * 45940002 * * 45960002 *********************************************************************** 45980002 SPACE 2 46000002 */*DS061: S DSSAVE:SAVE STATUS OF PREVIOUS TASK */ 46020002 SPACE 2 46040002 DS061 DC 0H'0' 46060002 BAL RF,DSSAVE SAVE STATUS OF PREVIOUS TASK 46080002 * DSSAVE USES REGISTERS 0,1,2,3,14 AND 15. 46100002 SPACE 2 46120002 */*DSLOCK15: S SETLOCK:OBTAIN GLOBAL DISPATCHER LOCK */ 46140002 SPACE 2 46160002 DSLOCK15 DC 0H'0' 46180002 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*46200002 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK16,DSLOCK17)) 46220002 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 46229002 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 46238002 SPACE 2 46248002 */*DS062: D (YES,DS06235,NO,) ARE ALL SRB'S STOPPED IN ASCB? */ 46260002 SPACE 2 46280002 DS062 DC 0H'0' 46284002 * R4 HAS ADDRESS OF LOCAL SPL 46300002 TM ASCBFLG2,ASCBSNQS ARE ALL SRB'S STOPPED? 46304002 BO DS06235 YES. GO TO RELEASE GLOBAL DISP LOCK. 46308002 SPACE 2 46320002 */* P SET UP CVT AND CSD ADDRESSING */ 46340002 SPACE 2 46360002 L R6,FLCCVT CVT @YM03564 46400002 USING CVT,R6 ADDRESSING @YM03564 46420002 L R5,CVTCSD CSD ADDRESSING @YM03564 46440002 DROP R6 @YM03564 46460002 USING CSD,R5 @YM03564 46480002 SPACE 2 46500002 */*DS062A: P SET UP TO INDEX TO END OF LSPL */ 46520002 SPACE 2 @YM03564 46526002 DS062A DC 0H'0' @YM03564 46532002 LA R3,LSPLSIZE(R4) END OF LSPL 46560002 SPACE 2 46580002 */*DS0621: P GET SRB ADDRESS */ 46600002 SPACE 2 46620002 DS0621 DC 0H'0' 46640002 L R2,DSL0(R4) SRB ADDRESS 46660002 SPACE 2 46680002 */*DS0622: D (YES,DS0624,NO,DS0623) ANY SRB'S AT THIS SPL LEVEL? */ 46700002 SPACE 2 46720002 DS0622 DC 0H'0' 46740002 LTR R2,R2 ANY SRB'S 46760002 BNZ DS0624 YES.GO AROUND 46780002 SPACE 2 46800002 */*DS0623: P GET NEXT SPL ENTRY */ 46820002 SPACE 2 46840002 DS0623 DC 0H'0' 46860002 LA R4,DSL8(R4) GET NEXT SPL ENTRY. 46880002 SPACE 2 46900002 */* D (NO,DS0621,YES,) END OF SPL? */ 46920002 SPACE 2 46940002 CLR R4,R3 END OF SPL? 46960002 BNE DS0621 NO. GO CHECK SRB'S. 46980002 SPACE 2 47000002 */*DS06235: S (,DS07) SETLOCK:(DSLOCK16) RELEASE GLOBAL DISPATCHER LOCK 47020002 */**/ 47024002 SPACE 2 47040002 DS06235 DC 0H'0' 47044002 DSLOCK16 DC 0H'0' 47060002 * SETLOCK RELEASE,TYPE=DISP,RELATED=('ASCB QUEUE/GSPL/LSPL/PSAAN*47080002 EW',IEAVEDS0,(DSLOCK5,DSLOCK6,DSLOCK7,DSLOCK9,DSLOCK10,D*47100002 SLOCK12,DSLOCK13,DSLOCK15,DSLOCK22,DSLOCK3)) 47120002 L RB,DSDISPLK OBTAIN DISP LOCK ADDR @YM03564 47124002 SLR RD,RD ZERO A REGISTER @YM03564 47128002 ST RD,DSL0(RB) FREE LOCK VIA STORE ZEROS @YM03564 47132002 NI PSAHLHI+DSL2,X'EF' INDICATE DISPATCHER LOCK NOT HELD 47136002 B DS07 GO TO CHECK THE LOCAL LOCK. 47140002 SPACE 2 47160002 */*DS0624: D (YES,DS0625,NO,) IS SRB NON QUIESC.? */ 47180002 SPACE 2 47200002 DS0624 DC 0H'0' 47220002 CLI SRBPRIOR,SRBPNONQ IS SRB NON-QUIESCEABLE. 47240002 BE DS0625 YES. GO AROUND. 47260002 DST068 DC 0H'0' *** TEST LABEL *** 47280002 SPACE 2 47420002 */* P GET COUNT OF NUMBER OF STATUS STOP Q SRB'S */ 47440002 SPACE 2 47460002 LH R1,ASCBSSRB COUNT OF NUMBER OF LOCAL STATUS STOP 47480002 * QUIESCEABLE SRB'S. 47500002 SPACE 2 47520002 */* D (YES,DS0623,NO,DS0625) IS COUNT GTR THAN ZERO? */ 47540002 SPACE 2 47560002 LTR R1,R1 IS COUNT GTR THAN ZERO. 47580002 BNZ DS0623 YES. GO GET NEXT SPL LEVEL. 47600002 SPACE 2 47620002 */*DS0625: P GET SRB'S CPU AFFINITY MASK */ 47640002 SPACE 2 47660002 DS0625 DC 0H'0' ENTER TO TEST AFFINITY. 47680002 LH RB,SRBCPAFF SRB'S AFFINITY MASK 47700002 SPACE 2 47720002 */* D (NO,DS0626,NO,) IS CPU AFFIN SPEC? */ 47740002 SPACE 2 47760002 LTR RB,RB AFFINITY SPECIFIED? 47780002 BZ DS0626 NO. BYPASS AFFINITY CHECK. 47800002 DST070 DC 0H'0' *** TEST LABEL *** 47820002 SPACE 2 47840002 */* P GET CPU'S AFFINITY MASK FROM PCCA */ 47860002 SPACE 2 47880002 L RC,PSAPCCAV PCCA 47900002 USING PCCA,RC ADDRESSING 47920002 LH RC,PCCACAFM CPU'S AFFINITY MASK. 47940002 DROP RC 47960002 SPACE 2 47980002 */* D (NO,DS0628,YES,DS0626) CAN SRB RUN ON THIS CPU? */ 48000002 SPACE 2 48020002 NR RC,RB CAN SRB RUN ON THIS CPU? 48040002 BC DSCC8,DS0628 NO. GO TO TEST FOR ANY CPU 48060002 SPACE 2 48080002 */*DS0626: D (YES,DS0627,NO,) IS THIS THE TOP SRB? */ 48100002 SPACE 2 48120002 DS0626 DC 0H'0' ENTER TO DEQUEUE AN SRB. 48140002 C R2,DSL0(R4) IS THIS THE TOP SRB 48160002 BE DS0627 YES. GO AROUND DEQUEUE FROM MIDDLE 48180002 DST071 DC 0H'0' *** TEST LABEL *** 48200002 SPACE 2 48220002 */* P GET ADDRESS OF TOP SRB */ 48240002 SPACE 2 48260002 * ENTER FOR NOT TOP SRB ON SPL QUEUE 48280002 L RE,DSL0(R4) TOP SRB 48300002 SPACE 2 48320002 */*DS06261: P GET NEXT SRB */ 48340002 SPACE 2 48360002 DS06261 DC 0H'0' 48380002 L RF,SRBFLNK-SRBSECT(RE) NEXT SRB. 48400002 SPACE 2 48420002 */* D (YES,DS06262,NO,) IS IT THE CURRENT SRB? */ 48440002 SPACE 2 48460002 CLR RF,R2 IS IT CURRENT? 48480002 BE DS06262 YES. RE HAS ADDRESS OF PREVIOUS 48500002 DST072 DC 0H'0' *** TEST LABEL *** 48520002 SPACE 2 48540002 */* P (,DS06261) SET UP TO SCAN FOR NEXT SRB */ 48560002 SPACE 2 48580002 LR RE,RF NO. SET UP TO SCAN FOR NEXT. 48600002 B DS06261 GO TO GET NEXT SRB 48620002 SPACE 2 48640002 */*DS06262: P CHAIN NEXT SRB TO PREVIOUS */ 48660002 SPACE 2 48680002 DS06262 DC 0H'0' 48700002 L RC,SRBFLNK NEXT SRB FROM CURRENT 48720002 ST RC,SRBFLNK-SRBSECT(RE) CHAIN UP TO PREVIOUS 48740002 SPACE 2 48760002 */* D (NO,DS06263,YES,) WAS CURRENT SRB LAST ONE ON QUEUE? */ 48780002 SPACE 2 48800002 LTR RC,RC WAS CURRENT SRB LAST ONE ON QUEUE. 48820002 BNZ DS06263 NO. DONE. GO TO CLEAR SRBFLNK. 48840002 DST073 DC 0H'0' *** TEST LABEL *** 48860002 SPACE 2 48880002 */* P (,DS063) DEQUEUED LAST SRB. STORE PREVIOUS INTO SPL LAST FIELD */ 48900002 SPACE 2 48920002 ST RE,DSL4(R4) LAST SRB. STORE PREVIOUS INTO SPL. 48940002 B DS063 GO TO LOCAL SRB DISPATCHER. 48960002 SPACE 2 48980002 */*DS06263: P (,DS063) CLEAR SRBFLNK TO PREVENT ACCESS TO OTHER SRB'S 49000002 */**/ 49020002 SPACE 2 49040002 DS06263 DC 0H'0' ENTER FOR CLEAR OF SRBFLNK 49060002 SR R3,R3 49080002 ST R3,SRBFLNK CLEAR SRBFLNK TO PREVENT ACCESS TO 49100002 * OTHER SRB'S. 49120002 B DS063 GO TO LOCAL SRB DISPATCHER. 49140002 SPACE 49160002 * ENTER FOR TOP SRB ON SPL QUEUE. 49180002 SPACE 2 49200002 */*DS0627: P CHAIN NEXT SRB TO SPL */ 49220002 SPACE 2 49240002 DS0627 DC 0H'0' 49260002 L RC,SRBFLNK FORWARD CHAIN POINTER. 49280002 ST RC,DSL0(R4) RECHAIN TO SPL. 49300002 SPACE 2 49320002 */* D (NO,DS06263,YES,) IS THIS THE ONLY SRB ON SPL? */ 49340002 SPACE 2 49360002 LTR RC,RC IS THIS THE ONLY SRB ON THE LSPL? 49380002 BNZ DS06263 NO. DON'T CLEAR PTR TO LAST IN LSPL. 49400002 DST074 DC 0H'0' *** TEST LABEL *** 49420002 SPACE 2 49440002 */* P (,DS063) CLEAR SPL PTR TO LAST SRB */ 49460002 SPACE 2 49480002 ST RC,DSL4(R4) CLEAR PTR TO LAST SRB. 49500002 * SRBFLNK FIELD IS ALREADY ZERO. 49520002 B DS063 GO TO LOCAL SRB DISPATCHER. 49540002 SPACE 49560002 * ENTER FOR FURTHER CPU AFFINITY TESTS. 49580002 SPACE 2 49600002 */*DS0628: D (NO,DS0629,YES,) CAN SRB RUN ON ANY OTHER CPU? */ 49620002 SPACE 2 49640002 DS0628 DC 0H'0' 49660002 LH RC,CSDCPUAL SYSTEM-WIDE CPU AFFINITY MASK. 49680002 NR RC,RB CAN SRB RUN ON ANY OTHER CPU? 49700002 BC DSCC8,DS0629 NO. GO TO ABEND SRB/TASK. 49720002 DST075 DC 0H'0' *** TEST LABEL *** 49740002 SPACE 2 49760002 */* P (,DS0622) GET NEXT SRB */ 49780002 SPACE 2 49800002 L R2,SRBFLNK YES. GET NEXT SRB. 49820002 B DS0622 GO TO TEST DISPATCHABILITY. 49840002 SPACE 2 49860002 * ENTER FOR ABEND OF SRB/TASK WHOSE AFFINITY SPECIFICATION DOES NOT 49880002 * MATCH ANY CPU CURRENTLY AVAILABLE TO RUN SRB'S. 49900002 SPACE 2 49920002 */*DS0629: D (NO,DS0626,YES,) IS THIS A SUSPENDED SRB? */ 49940002 SPACE 2 49960002 DS0629 DC 0H'0' 49980002 L RC,SRBRMTR RMTR ADDRESS IF A SUSPENDED SRB 50000002 L RB,DSRMTR GET COMMMON SUSPEND'S RMTR ADR 50010002 CR RB,RC TEST FOR SUSPENDED SRB 50020002 BNE DS0626 NO. GO TO DISPATCH AND SET UP FOR 50040002 * ABEND IN GLOBAL SRB DISPATCHER 50060002 SPACE 2 50080002 */* P GET ADDRESSABILITY TO CVT */ 50100002 SPACE 2 50120002 L RC,FLCCVT CVT ADDRESS 50140002 USING CVT,RC CVT ADDRESSABILITY. 50160002 SPACE 2 50180002 */* P SET SRB PSW TO POINT TO SVC ABEND INSTRUCTION IN CVT */ 50200002 SPACE 2 50220002 LA RB,CVTQABST ADDRESS OF SVC D INSTRUCTION. 50240002 ST RB,SSRBCPSW+DSL4 SET PSW TO ADDRESS OF SVC D. 50260002 DROP RC DROP CVT ADDRESSABILITY. 50280002 SPACE 2 50300002 */* P SET SRB'S REG 1 TO 072 ABEND CODE. */ @ZA25275 50320040 SPACE 2 50328040 L RB,DSABAFFN 072 ABEND CODE. 50336040 ST RB,SSRBGPRS+DSL4 STORE INTO REG 1 SLOT IN SSRBSAVE. 50344040 SPACE 2 @ZA25275 50352040 */* P (,DSO626) REMOVE SRB'S AFFN TO OFFLINE CPU FOR ABEND */ @ZA25275 50360040 SPACE 2 @ZA25275 50368040 SLR RB,RB ZERO A REGISTER. @ZA25275 50376040 STH RB,SRBCPAFF ZERO SRB'S INVALID AFFN. @ZA25275 50384040 B DS0626 GO TO DISPATCH AND ABEND SRB. 50400002 TITLE 'IEAVEDS0 - LOCAL (SUSPENDED) SRB' 50420002 *********************************************************************** 50440002 * * 50460002 * LOCAL (SUSPENDED) SRB DISPATCHER * 50480002 * R2 - CONTAINS SRB ADDRESS * 50500002 * R6 - CONTAINS CSD ADDRESS * 50520002 * * 50540002 *********************************************************************** 50560002 SPACE 2 50580002 */*DS063: P SET SRB MODE INDICATOR (LCCASRBM) */ 50600002 SPACE 2 50620002 DS063 DC 0H'0' ENTER 50640002 OI LCCADSF2,LCCASRBM+LCCADSRW SET SRB MODE INDICATOR. 50660002 ST R2,LCCASPLJ JOURNAL LOCAL SPL ENTRY 50670002 SPACE 2 50680002 */* D (YES,,NO,DS0331) IS THIS A SUSPENDED SRB? */ 50700002 SPACE 2 50720002 L R5,SRBRMTR IF THIS SRB HAS AN SUSPENDED RMTR 50740002 L R1,DSRMTR (SUSPENDED RMTR ADDR) 50750002 CR R1,R5 ADDR IT IS A SUSPENDED SRB. IF 50760002 * NOT, IT IS AN INITIAL DISPATCH. 50780002 BNE DS0331 GO TO GLOBAL SRB DISPATCH. 50800002 SPACE 2 50820002 * ENTER FOR DISPATCH OF A SUSPENDED SRB. 50840002 SPACE 2 51780002 */* P RESTORE THE FLOATING POINT REGISTERS */ 51800002 SPACE 2 51820002 LD R0,SSRBFPR0 * RESTORE 51860002 LD R2,SSRBFPR2 * FLOATING 51880002 LD R4,SSRBFPR4 * POINT 51900002 LD R6,SSRBFPR6 * REGISTERS 51920002 SPACE 2 51940002 */* P RESTORE SRB'S FRR STACK */ 51960002 SPACE 2 51980002 LA R4,SSRBFRRS ADDRESS OF SAVED STACK 52030002 L R5,FRRSCURR-FRRS(R4) ADDR OF CURRENT ENTRY @YM03564 52032002 L RD,FRRSELEN-FRRS(R4) LENGTH OF AN ENTRY @YM03564 52034002 AR R5,RD ADDRESS OF END OF STACK @YM03564 52036002 L RC,PSANSTK ADDRESS OF NORMAL STACK 52052002 SR R5,RC LENGTH OF SAVED STACK @YM03564 52052602 LA RD,DSL0(R5) DUPLICATE LENGTH @YM03564 52053202 MVCL RC,R4 MOVE THE SAVED STACK 52054002 SPACE 2 52060002 */* P MOVE CPU AFFIN MASK AND PURGE ASID/TCB TO LCCA */ 52080002 SPACE 2 52100002 MVC LCCASRBF(DSL8),SRBFLC MOVE SRB AFFINITY, PURGE ASID 52120002 * AND PURGE TCB ADDR TO LCCA. 52140002 SPACE 2 52160002 */* P MOVE PSW TO LOW CORE */ 52180002 SPACE 2 52200002 MVC PSAPSWSV,SSRBCPSW MOVE PSW FOR DISPATCH. 52220002 */* D (NO,DS0631,YES,) DOES SRB HOLD LOCAL LOCK? */ 52392002 SPACE 2 52394002 TM SSRBFLG1,SSRBLLH IS THE LOCAL LOCK HELD BY THIS SRB. 52396002 BZ DS0631 NO. GO AROUND LOCK RESTORE. 52398002 SPACE 2 52398402 */* P STORE CPUID INTO THE LOCAL LOCK */ 52398802 SPACE 2 52399202 LH R4,PSACPULA CPU ID. 52399602 ST R4,ASCBLOCK STORE INTO LOCAL LOCKWORD. 52399702 SPACE 2 52399802 */* P SET LOCKS HELD INDICATOR TO LOCAL LOCK */ 52399902 SPACE 2 52406602 OI PSAHLHI+DSO3,DSLLHI TURN ON LOCAL LK HELD INDICATOR 52408602 SPACE 2 52410602 */* D (NO,DS0631,YES,) IS THE CMS LOCK ALSO HELD? */ 52412602 SPACE 2 52413002 TM ASCBFLG1,ASCBCMSH IS THE CMS LOCK ALSO HELD? 52413102 BZ DS0631 NO. GO AROUND CMS LOCK PROCESSING 52413202 SPACE 2 52419902 */* P SET LOCK HELD INDICATOR FOR CMS LOCK */ 52421902 SPACE 2 52423902 OI PSAHLHI+DSO3,DSCMSHI TURN ON CMS LOCK HELD INDICATOR 52425902 SPACE 2 52426302 */* P TURN OFF CMS LOCK HELD BIT IN ASCB */ 52426402 SPACE 2 52426502 NI ASCBFLG1,DSXFF-ASCBCMSH TURN OFF CMS LOCK HELD BIT. 52433202 SPACE 2 52433702 */*DS0631: P RESET DISPATCHER INDICATOR */ 52434102 SPACE 2 52434702 DS0631 DC 0H'0' 52434802 NI PSASUP1,DSXFF-PSADISP RESET DISPATCHER INDICATOR. 52434902 SPACE 2 52435002 */* P ZERO THE SPL JOURNAL WORD */ 52435102 SPACE 2 52435202 SR R1,R1 ZERO A REGISTER 52435302 ST R1,LCCASPLJ ZERO THE JOURNAL SPL WORD 52435602 SPACE 2 52436302 */* P RESET FRR STACK TO NORMAL */ 52436502 SPACE 2 52436702 LSSRBPSW DC 0H'0' 52436902 MVC PSACSTK(DSL4),PSANSTK RESET FRR STACK TO NORMAL. 52437102 SPACE 2 52437302 */*DSLOCK17: S SETLOCK:RELEASE GLOBAL DISPATCHER LOCK */ 52437602 SPACE 2 52439302 DSLOCK17 DC 0H'0' 52439702 * SETLOCK RELEASE,TYPE=DISP,RELATED=('ASCB QUEUE/GSPL/LSPL/PSAAN*52439802 EW',IEAVEDS0,(DSLOCK5,DSLOCK6,DSLOCK7,DSLOCK9,DSLOCK10,D*52440002 SLOCK12,DSLOCK13,DSLOCK15,DSLOCK22,DSLOCK3)),DISABLED 52445602 L RB,DSDISPLK OBTAIN DISP LOCK ADDR @YM03564 52446202 SLR RD,RD ZERO A REGISTER @YM03564 52446802 ST RD,DSL0(RB) FREE LOCK VIA STORE ZEROS @YM03564 52447402 NI PSAHLHI+DSL2,X'EF' INDICATE DISPATCHER LOCK NOT HELD 52448002 SPACE 2 52448602 */* P MOVE GENERAL PURPOSE REGISTERS TO CPU SAVE AREA */ 52450602 SPACE 2 52451002 L R5,LCCACPUS CPU SAVE AREA VECTOR TABLE ADDRESS. 52451402 USING WSAC,R5 52452002 L R5,WSACEDS0 DISPATCHER'S SAVE AREA ADDRESS. 52452402 DROP R5 52452802 MVC DSL0(DSLSAV,R5),SSRBGPRS SAVE SRB'S REGISTERS. 52453202 SPACE 2 52453902 SPACE 2 52455302 */*DS0632: D (NO,DS0633,YES,) WAS SSRB GETMAINED? */ 52457202 SPACE 2 52462902 DS0632 DC 0H'0' 52468602 TM SSRBFLG1,SSRBMAIN WAS SSRB GOTTEN FROM MAIN STORE? 52474302 BZ DS0633 NO. GO TO FREECELL. 52480002 SPACE 2 52500002 */*DSLOCK23: S SETLOCK:OBTAIN SALLOC LOCK */ 52520002 SPACE 2 52540002 DSLOCK23 DC 0H'0' 52560002 SETLOCK OBTAIN,TYPE=SALLOC,MODE=UNCOND,RELATED=('MAIN STORAGE'*52580002 ,IEAVEDS0,(DSLOCK24)) 52600002 SPACE 2 52620002 */* S FREEMAIN:FREEMAIN SSRB */ 52640002 SPACE 2 52660002 LA R0,SSRBLEN SSRB LENGTH 52680002 LR R1,R2 SSRB ADDRESS 52700002 SPACE 52720002 FREEMAIN RC,SP=245,LV=(0),A=(1),BRANCH=(YES,GLOBAL) 52740002 * REGISTERS 0-4 AND 14-15 HAVE BEEN DESTROYED. 52760002 SPACE 2 52780002 */*DSLOCK24: S (,DS0634) SETLOCK:RELEASE SALLOC LOCK */ 52800002 SPACE 2 52820002 DSLOCK24 DC 0H'0' 52840002 SETLOCK RELEASE,TYPE=SALLOC,RELATED=('MAIN STORAGE',IEAVEDS0,(*52860002 DSLOCK23)),DISABLED @YM03564 52880002 B DS0634 GO TO STORE TOD CLOCK. 52900002 SPACE 2 52920002 */*DS0633: S FREECELL:FREE THE SRB AND SAVE AREA */ 52940002 SPACE 2 52960002 DS0633 DC 0H'0' 52980002 L R0,DSCELLID SRB CELLPOOL ID. 53000002 LR R1,R2 SRB ADDRESS 53020002 SPACE 53040002 FREECELL CPID=(0),CELL=(1),SAVE=NO,BRANCH=YES 53060002 SPACE 53080002 * REGISTERS 0-4 AND 14-15 HAVE BEEN DESTROYED. 53100002 SPACE 53120002 SPACE 2 53140002 */*DS0634: P STORE TOD CLOCK FOR JOB STEP TIMING */ 53160002 SPACE 2 53180002 DS0634 DC 0H'0' 53200002 STCK LCCADTOD STORE TOD CLOCK FOR JOB STEP TIMING. 53220002 SPACE 2 53240002 */* D (NO,DS0635,YES,) IS TRACE ACTIVE? */ 53260002 SPACE 2 53280002 L RE,FLCCVT CVT ADDRESS 53300002 USING CVT,RE 53320002 CLI CVTTRACE+DSL1,DSTRACEM IS TRACE ACTIVE? 53340002 BNE DS0635 NO. BYPASS. 53360002 DROP RE 53380002 SPACE 2 53400002 */* S TRSRB2:TRACE SRB ACTIVITY */ 53420002 SPACE 2 53440002 LM R0,R1,DSL0(R5) RESTORE 0 AND 1 FOR TRACE. 53460002 L RA,DSTRSRB2 TRACE ENTRY POINT ADDRESS. 53480002 DST083A DC 0H'0' *** TEST LABEL *** 53500002 BALR RB,RA GO TO TRACE. 53520002 LOADPSA3 DC 0H'0' ***** FOR TSO TEST ***** 53540002 SPACE 2 53560002 */*DS0635: S IEADISP1:GTF INTERFACE */ 53580002 SPACE 2 53600002 * GTF INTERFACE 53620002 DS0635 DC 0H'0' 53640002 SR R0,R0 INDICATE SUSPENDED SRB TO GTF. 53660002 HOOK EID=IEADISP1,TYPE=P 53680002 SPACE 2 53700002 */* P RESTORE THE GENERAL PURPOSE REGISTERS */ 53720002 SPACE 2 53740002 LM R0,RF,DSL0(R5) RESTORE SRB'S GENERAL PURPOSE REGS. 53760002 SPACE 4 53960002 *********************************************************************** 53980002 * * 54000002 * LOAD PSW TO DISPATCH A SUSPENDED SRB * 54020002 * * 54040002 *********************************************************************** 54060002 SPACE 2 54080002 */*SSRBPSW: R LOAD SRB'S PSW */ 54100002 SPACE 2 54120002 SSRBPSW DC 0H'0' 54140002 LPSW PSAPSWSV DISPATCH THE SUSPENDED SRB. 54160002 TITLE 'IEAVEDS0 - INTERRUPTED LOCAL SUPERVISOR' 54180002 *********************************************************************** 54200002 * * 54220002 * INTERRUPTED LOCAL SUPERVISOR * 54240002 * THIS SEQUENCE IS ENTERED TO RESTORE THE STATUS OF AN * 54260002 * INTERRUPTED LOCAL SUPERVISOR ROUTINE WHICH HAD BEEN PRE- * 54280002 * EMPTED FOR HIGHER PRIORITY WORK. STATUS IS RESTORED FROM * 54300002 * THE INTERRUPT HANDLER SAVE AREA. * 54320002 * * 54340002 * ON ENTRY: * 54360002 * THE LOCAL LOCK IS HELD BY THIS CPU (CPU ID WAS STORED INTO * 54380002 * THE LOCAL LOCKWORD PRIOR TO ENTRY TO THIS SEQUENCE). * 54400002 * * 54420002 *********************************************************************** 54440002 SPACE 2 54460002 */*DS071: S DSSAVE:SAVE STATUS OF PREVIOUS TASK */ 54480002 SPACE 2 54500002 DS071 DC 0H'0' 54520002 SPACE 54540002 BAL RF,DSSAVE SAVE STATUS OF PREVIOUS TASK. 54560002 * DSSAVE USES REGISTERS 0,1,2,3,14 AND 15. 54580002 SPACE 2 54600002 */* P GET ADDRESSABILITY TO IHSA */ 54620002 SPACE 2 54640002 L RC,ASCBASXB ASXB 54660002 USING ASXB,RC ADDRESSABILITY. 54680002 L RC,ASXBIHSA IHSA ADDRESS 54700002 DROP RC DROP ASXB ADDRESSABILITY 54720002 USING IHSA,RC IHSA ADDRESSABILITY. 54740002 SPACE 2 54760002 */* P GET ADDRESSABILITY TO TCB */ 54780002 SPACE 2 54800002 L R5,IHSAOTCB TCB ADDRESS 54820002 SPACE 2 54840002 */* D (NO,DS074,YES,) IS THERE A TCB? */ 54860002 SPACE 2 54880002 LTR R5,R5 IS THERE A TCB? 54900002 BZ DS074 NO. GO AROUND. 54920002 SPACE 2 54940002 */* P ESTABLISH ADDRESSABILITY TO PCCA */ 54960002 SPACE 2 54980002 L R6,PSAPCCAV PCCA ADDRESS FROM PSA. 55000002 USING PCCA,R6 PCCA ADDRESSABILITY. 55020002 SPACE 2 55040002 */* P GET CPU AFFINITY INDICATOR FROM THE TCB */ 55060002 SPACE 2 55080002 USING TCB,R5 TCB ADDRESSABILITY 55100002 LH R4,TCBAFFN CPU AFFINITY MASK 55120002 SPACE 2 55140002 */* D (NO,DS0724,YES,) IS CPU AFFINITY SPECIFIED? */ 55160002 SPACE 2 55180002 C R4,DSCPUAFF IS CPU AFFINITY SPECIFIED? @YM04737 55186002 BE DS0724 NO. CONTINUE. @YM04737 55193002 LTR R4,R4 IS CPU AFFINITY SPECIFIED? 55200002 BZ DS0724 NO. CONTINUE. 55220002 SPACE 2 55240002 */* P GET CPU'S AFFINITY MASK */ 55260002 SPACE 2 55280002 LH RE,PCCACAFM CPU'S AFFINITY MASK 55300002 SPACE 2 55320002 */* D (YES,DS0724,NO,) DOES AFFINITY MATCH THIS CPU? */ 55340002 SPACE 2 55360002 NR RE,R4 TEST FOR MATCHING AFFINITY. 55380002 BNZ DS0724 AFFINITY TO THIS CPU. CONTINUE. 55400002 SPACE 2 55410002 */* P GET SYSTEM WIDE CPU ALIVES MASK */ 55412002 SPACE 2 55414002 L R3,FLCCVT LOCATE THE CVT 55416002 USING CVT,R3 55416402 L R1,CVTCSD CSD MASK 55418002 LH R2,CSDCPUAL-CSD(R1) CPU ALIVES MASK 55418402 SPACE 2 55418502 */* D (YES,DS0723,NO,) CAN TASK RUN ON ANY CPU? */ 55418602 SPACE 2 55418702 NR R2,R4 CAN TASK RUN ON ANY CPU? 55418802 BNZ DS0723 YES, BUT NOT THIS ONE, 55419202 * RESTORE STATUS AND LOOK FOR 55419602 * READY WORK 55419702 SPACE 2 55419802 */* P REMOVE AFFINITY IN ORDER TO DISP ABEND */ 55423402 SPACE 2 55425402 STH R2,TCBAFFN REMOVE AFFINITY AND ABEND 55427602 SPACE 2 55431002 */* P SET R1 FOR 072 ABEND AND PSW TO SVC D */ 55431102 SPACE 2 55431602 L R1,DSABAFFN 072 ABEND CODE 55432602 ST R1,IHSAGPRS+DSL4 STORE INTO REG 1 SLOT IN IHSA 55434802 LA R2,CVTQABST ADDRESS OF SVC D INSTR 55438402 DROP R3 55442002 ST R2,IHSACPSW+DSL4 SET PSW TO POINT TO SVC D 55445602 SPACE 2 55447602 */* P (,DS0724) CONTINUE WITH TASK DISPATCH */ 55448002 SPACE 2 55448402 B DS0724 CONTINUE WITH DISPATCH 55449202 SPACE 2 55452802 */*DS0723: P RESTORE INTERRUPT CODE TO LOCAL LOCK */ 55456402 SPACE 2 55460002 DS0723 DC 0H'0' 55480002 LH R1,PSACPULA LOGICAL CPU ADDRESS. 55500002 L R3,DSINTPID INTERRUPT ID. 55520002 CS R1,R3,ASCBLOCK RESTORE INTERRUPT ID. 55540002 SPACE 2 55560002 */*DSLOCK22: S SETLOCK:OBTAIN GLOBAL DISPATCHER LOCK */ 55580002 SPACE 2 55600002 DSLOCK22 DC 0H'0' 55620002 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*55640002 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK14,DSLOCK16,DSLOCK17,DSLO*55660002 CK18,DSLOCK19)) 55680002 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 55686002 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 55692002 SPACE 2 55700002 */* P SET UP ADDRESSABILITY TO CVT AND CSD */ 55720002 SPACE 2 55740002 L R6,FLCCVT CVT ADDRESS 55760002 L R5,CVTCSD-CVT(R6) CSD ADDRESS 55800002 SPACE 2 55840002 */* P (,DS054) GET ADDRESS OF NEXT ASCB */ 55860002 SPACE 2 55880002 L R8,ASCBFWDP GET ADDRESS OF NEXT ASCB 55900002 B DS054 GO TO MEMORY DISPATCHER. 55920002 SPACE 2 55940002 */*DS0724: D (NO,DS07247,YES,) DOES TCB HAVE A TQE? */ 55960002 SPACE 2 55980002 DS0724 DC 0H'0' 56030002 L R2,TCBTME TQE ADDRESS FROM THE TCB. 56039902 LTR R2,R2 IS THE A TQE? 56046602 BNH DS07247 NO. CONTINUE. 56053302 SPACE 2 56060002 */* D (NO,DS07243,YES,) IS THE CPU TIMER ON THIS CPU BAD? */ 56080002 SPACE 2 56100002 TM PCCAINTE,PCCANUIN IS THE CPU TIMER BAD? 56120002 BZ DS07243 NO. GO TO SET CLOCK. 56140002 SPACE 2 56144002 */* D (YES,DS07241,NO,) MUST TASK RUN ONLY ON THIS CPU? */ 56148002 SPACE 2 56152002 L R4,FLCCVT CVT ADDRESS. 56156002 USING CVT,R4 CVT ADDRESSABILITY. 56156802 CLC PCCACAFM(DSL2),TCBAFFN TEST FOR MATCHING AFFINITY MASKS 56157602 BE DS07241 YES. TCB MUST RUN ON THIS CPU. GO 56159202 * TO ABEND TASK SINCE CLOCK IS 56159302 * BAD ON THIS CPU. 56159502 SPACE 2 56160002 */* D (YES,DS07247,NO,) ARE THERE ANY CPU TIMERS WORKING? */ 56180002 SPACE 2 56200002 L R3,CVTCSD CSD ADDRESS. 56260002 USING CSD,R3 CSD ADDRESSABILITY. 56280002 L R1,CSDGDINT COUNT OF GOOD CPU TIMERS. 56300002 LTR R1,R1 ARE THERE ANY? 56320002 BNZ DS07247 YES. BYPASS CLOCK SETTING THIS 56340002 * DISPATCH. 56360002 DROP R3 DROP CSD ADDRESSABILITY. 56380002 DROP R6 DROP PCCA ADDRESSABILITY. 56400002 SPACE 2 56420002 */*DS07241: P SET REGISTER ONE TO 22F ABEND CODE. */ 56440002 SPACE 2 56460002 DS07241 DC 0H'0' 56464002 L R1,DSABTIME 22F ABEND CODE. 56480002 ST R1,IHSAGPRS+DSL4 R1 IN IHSA. LOADED AT DISPATCH. 56500002 SPACE 2 56520002 */* P (,DS07247) SET PSW TO POINT TO ABEND INSTRUCTION IN CVT */ 56540002 SPACE 2 56560002 LA R1,CVTQABST ADDRESS OF SVC D INSTRUCTION. 56580002 ST R1,IHSACPSW+DSL4 SET PSW TO POINT TO SVC D. 56600002 B DS07247 CONTINUE WITH DISPATCH. 56620002 DROP R4 DROP CVT ADDRESSABILITY. 56640002 SPACE 2 56660002 */*DS07243: P RESET THE CPU INTERVAL TIMER. */ 56680002 SPACE 2 56700002 DS07243 DC 0H'0' 56720002 SPT IHSACPUT RESET CPU INTERVAL TIMER. 56740002 SPACE 2 56742002 */*DS07247: P STORE CPUID INTO THE TCB */ 56744002 SPACE 2 56746002 DS07247 DC 0H'0' 56746402 LH R6,PSACPULA CPU ID. 56748002 STH R6,TCBCCPVI STORE INTO TCB. 56748402 SPACE 2 56750002 */*DS074: P RESTORE PSATNEW AND PSATOLD */ 56752002 SPACE 2 56754002 DS074 DC 0H'0' 56756002 ST R5,PSATNEW RESTORE TCBNEW. 56758002 ST R5,PSATOLD RESTORE TCBOLD. 56758402 DS0725 DC 0H'0' 56910002 SPACE 2 56960002 */* P RESTORE FLOATING POINT REGISTERS */ 56970002 SPACE 2 56980002 LD R0,IHSAFPR0 * RESTORE 56990002 LD R2,IHSAFPR2 * FLOATING 56992002 LD R4,IHSAFPR4 * POINT 56994002 LD R6,IHSAFPR6 * REGISTERS 56996002 SPACE 2 56998002 */* P RESTORE LOCAL SUPERVISOR'S FRR STACK */ 56998402 SPACE 2 56998802 LA R2,IHSAFRRS ADDRESS OF SAVED STACK 56999202 L R3,FRRSCURR-FRRS(R2) ADDRESS OF CURRENT ENTRY 56999602 L R4,FRRSELEN-FRRS(R2) LENGTH OF AN ENTRY @YM03564 57000002 AR R3,R4 ADDRESS OF END OF STACK @YM03564 57002002 L RA,PSANSTK ADDRESS OF NORMAL STK @YM03564 57004002 SR R3,RA LENGTH OF SAVED STACK @YM03564 57006002 LA RB,DSL0(R3) DUPLICATE LENGTH @YM03564 57008002 MVCL RA,R2 MOVED FOR SAVED NRM STACK @YM03564 57010002 SPACE 2 @YM03564 57012002 */* D (NO,DS073,YES,) IS THE CMS LOCK ALSO HELD? */ 57020002 SPACE 2 57040002 TM ASCBFLG1,ASCBCMSH IS THE CMS LOCK ALSO HELD? 57060002 BZ DS073 NO. GO AROUND. 57080002 DST085 DC 0H'0' *** TEST LABEL *** 57100002 SPACE 2 57120002 */* P STORE CPU LOCKS HELD IND INTO HIGHEST LOCK HELD IND */ 57160002 SPACE 2 57180002 * ENTER FOR CMS LOCK HELD 57200002 OI PSAHLHI+DSO3,DSCMSHI TURN ON CMS & LOCAL LK 57250002 * HELD INDICATORS 57300002 SPACE 2 57380002 */* P (,DS075) TURN OFF CMS LOCK HELD FLAG */ 57400002 SPACE 2 57420002 NI ASCBFLG1,DSXFF-ASCBCMSH TURN OFF CMS LOCK HELD FLAG. 57440002 SPACE 57460002 SPACE 2 57500002 */*DS073: P INCREMENT NO. OF CPUS IN THE ADDRESS SPACE */ 57520002 SPACE 2 57540002 DS073 DC 0H'0' 57560002 L R1,ASCBCPUS OBTAIN COUNT OF ACTIVE CPUS 57562002 DS073LP DC 0H'0' 57564002 LR R2,R1 DUPLICATE THE COUNT 57566002 LA R2,DSI1(R2) INCREMENT THE COUNT BY 1 57568002 CS R1,R2,ASCBCPUS UPDATE THE COUNT VIA C&S 57568402 BNZ DS073LP COUNT HAS CHANGED, REPEAT 57568802 SPACE 2 57570002 */* P SET CPU LOCKS HELD IND INTO HIGH LOCK HELD IND */ 57580002 SPACE 2 57590002 OI PSAHLHI+DSO3,DSLLHI TURN ON LOCAL LK HELD IND 57610002 SPACE 2 58040002 */*DS075: P (,DS082) STORE TOD CLOCK FOR JOB STEP TIMING */ 58060002 SPACE 2 58080002 DS075 DC 0H'0' 58090002 STCK LCCADTOD STORE TOD CLOCK FOR JOB STEP TIMING. 58100002 B DS082 GO TO LOCAL SUPERVISOR DISPATCHER. 58120002 DROP RC DROP IHSA ADDRESSABILITY 58140002 DROP R5 DROP TCB ADDRESSABILITY 58160002 TITLE 'IEAVEDS0 - LOCAL SUPERVISOR DISPATCHER' 58180002 *********************************************************************** 58200002 * * 58220002 * LOCAL SUPERVISOR DISPATCHER * 58240002 * THIS SEQUENCE IS ENTERED TO DISPATCH A PREEMPTED LOCAL * 58260002 * SUPERVISOR WHOSE STATUS HAS BEEN RESTORED IN THE SECTION * 58280002 * ENTITLED 'INTERRUPTED LOCAL SUPERVISOR' AND TO RE- * 58300002 * DISPATCH A LOCAL SUPERVISOR ROUTINE WHICH WAS INTERRUPTED * 58320002 * BUT NOT PREEMPTED. * 58340002 * * 58360002 *********************************************************************** 58380002 SPACE 2 58400002 */*DS081: P GET ADDRESSABILITY TO THE IHSA */ 58420002 SPACE 2 58440002 DS081 DC 0H'0' 58460002 L RC,ASCBASXB * 58480002 USING ASXB,RC * INTERRUPT HANDLER SAVE AREA 58500002 L RC,ASXBIHSA * ADDRESSABILITY. 58520002 DROP RC * 58540002 USING IHSA,RC * 58560002 SPACE 2 58580002 */*DS082: P MOVE PSW TO LOW CORE */ 58600002 SPACE 2 58620002 DS082 DC 0H'0' 58640002 MVC PSAPSWSV(DSL8),IHSACPSW MOVE PSW TO LOW CORE. 58660002 SPACE 2 58664002 */* D (NO,DS083,YES,) IS TRACE ACTIVE? */ 58668002 SPACE 2 58672002 L R5,FLCCVT CVT ADDRESS 58680002 USING CVT,R5 CVT ADDRESSING 58700002 CLI CVTTRACE+DSL1,DSTRACEM IS TRACE ACTIVE? 58720002 BNE DS083 NO. BYPASS. 58740002 DROP R5 DROP CVT ADDRESSING 58760002 SPACE 2 58780002 */* S TRDISP:TRACE LOCAL SUPERVISOR ACTIVITY */ 58800002 SPACE 2 58820002 L RA,DSTRDISP TRACE ADDRESS 58840002 LM R0,R1,IHSAGPRS LOAD 0 AND 1 FOR TRACE 58860002 L RF,IHSAGPRS+DSL60 LOAD 15 FOR TRACE 58880002 BALR RB,RA GO TO TRACE 58920002 */*DS083: S IEADISP2:GTF INTERFACE */ 59000002 SPACE 2 59020002 DS083 DC 0H'0' 59040002 HOOK EID=IEADISP2,TYPE=P GO TO GTF 59060002 SPACE 2 59070002 */* P SET READY WORK DISPATCHED INDICATOR */ 59072002 SPACE 2 59074002 OI LCCADSF2,LCCADSRW TURN ON READY WORK IND. 59076002 SPACE 2 59080002 */* P RESTORE THE GENERAL PURPOSE REGISTERS */ 59100002 SPACE 2 59120002 LM R0,RF,IHSAGPRS RESTORE GENERAL PURPOSE REGISTERS. 59140002 SPACE 2 59160002 */* P RESET THE DISPATCHER INDICATOR */ 59180002 SPACE 2 59200002 NI PSASUP1,DSXFF-PSADISP RESET DISPATCHER INDICATOR. 59220002 SPACE 2 59240002 */* P RESET CURRENT STACK POINTER TO NORMAL */ 59260002 SPACE 2 59280002 LLSPVPSW DC 0H'0' 59300002 MVC PSACSTK(DSL4),PSANSTK RESTORE NORMAL STACK ADDRESS 59320002 SPACE 2 59340002 *********************************************************************** 59360002 * * 59380002 * LOAD PSW TO DISPATCH A LOCAL SUPERVISOR ROUTINE * 59400002 * * 59420002 *********************************************************************** 59440002 SPACE 2 59460002 */*LSUPVPSW: R LOAD SUPERVISOR PSW */ 59480002 SPACE 2 59500002 LSUPVPSW DC 0H'0' 59520002 LPSW PSAPSWSV DISPATCH THE LOCAL SUPERVISOR. 59540002 SPACE 4 59560002 DROP RC DROP IHSA REGISTER 59580002 TITLE 'IEAVEDS0 - TASK DISPATCHER' 59600002 *********************************************************************** 59620002 * * 59640002 * TASK DISPATCHER * 59660002 * THIS SEQUENCE IS ENTERED TO SEARCH FOR A READY TASK ON THE * 59680002 * TCB DISPATCHING QUEUE WITHIN THE ADDRESS SPACE. THE TASK'S * 59700002 * STATUS IS RESTORED FROM THE TCB/RB AND THE TASK IS RE- * 59720002 * DISPATCHED. * 59740002 * * 59760002 * THE LOCAL LOCK IS HELD ON ENTRY TO THIS SECTION. * 59780002 * * 59800002 *********************************************************************** 59820002 SPACE 2 59840002 */*DS09: D (NO,DS091,YES,) ANY ASYNCH EXITS? */ 59860002 SPACE 2 59880002 DS09 DC 0H'0' 59900002 OI LCCADSF2,LCCADSPL INDICATE DISP OBTAINED LOCAL LK 59910002 TM ASCBFLG1,ASCBS3S TEST FOR ASYNCHRONOUS EXITS 59920002 BZ DS091 NO. CONTINUE. 59940002 SPACE 2 59960002 */* D (YES,DS091,NO,) ARE QUIESCE. SRB'S STOPPED? */ 59980002 SPACE 2 60000002 SR R1,R1 CLEAR R1 60020002 CH R1,ASCBSSRB TEST FOR STOP QUIESCEABLE SRBS 60040002 BNE DS091 YES. BYPASS STAGE 3. 60060002 SPACE 2 60080002 *********************************************************************** 60100002 * * 60120002 * EXIT TO STAGE III EXIT EFFECTOR. * 60140002 * * 60160002 * INTERFACE * 60180002 * R7 - LCCA ADDRESS * 60200002 * R8 - ASCB ADDRESS * 60220002 * R9 - DISPATCHER BASE * 60240002 * R14 - RETURN ADDRESS * 60260002 * R15 - STAGE 3 EP * 60280002 * ALL OTHERS UNDEFINED AND MAY BE DESTROYED IN STAGE 3. * 60300002 * * 60320002 *********************************************************************** 60340002 SPACE 60360002 SPACE 2 60380002 */* S IEA0EF03:STAGE 3 EXIT EFFECTOR */ 60400002 SPACE 2 60420002 L RF,DS0EF03 STAGE 3 EXIT EFFECTOR ENTRY POINT 60440002 BALR RE,RF GO TO STAGE 3 EE 60460002 SPACE 60480002 * 60500002 * REGISTERS 7, 8 AND 9 ARE RETURNED BY STAGE 3 EE 60520002 * 60540002 SPACE 60560002 * FALL THROUGH TO SCAN FOR READY TCB 60580002 SPACE 2 60600002 * 60620002 * BEGIN SCAN FOR TOP READY TASK. 60640002 * 60660002 SPACE 2 60680002 */*DS091: P GET ADDRESS OF TOP TCB ON ASCB DISP QUEUE */ 60700002 SPACE 2 60720002 DS091 DC 0H'0' 60740002 L R6,ASCBASXB ADDRESS OF THE ASXB. 60760002 USING ASXB,R6 ASXB ADDRESSABILITY. 60780002 L R6,ASXBFTCB ADDRESS OF FIRST TCB. 60800002 DROP R6 DROP ASXB ADDRESSABILITY. 60820002 SPACE 2 60840002 */* D (NO,DS0921,YES,) TEST FOR END OF TCB QUEUE */ 60860002 SPACE 2 60880002 LTR R6,R6 TEST FOR END OF TCB QUEUE. 60900002 BNZ DS0921 NO. CONTINUE. 60920002 SPACE 60940002 * EXIT FROM TASK DISPATCHER TO ADDRESS SPACE DISPATCHER 60960002 SPACE 2 60980002 */* D (NO,,YES,DSLOCK25) SUS Q EMPTY REL LK NO STLK */ @Z40FPXJ 60990040 */*DS092: S SETLOCK:(DSLOCK2) RELEASE THE LOCAL LOCK */ 61000002 SPACE 2 61020002 DS092 DC 0H'0' 61040002 DSLOCK2 DC 0H'0' 61060002 SLR R2,R2 ZERO REG FOR CS @Z40FPXJ 61062040 SLR R3,R3 ZERO REG FOR CS @Z40FPXJ 61064040 L R4,ASCBLOCK GET LOCKWORK FOR CS @Z40FPXJ 61066040 SLR R5,R5 ZERO REG FOR CS @Z40FPXJ 61068040 CDS R4,R2,ASCBLOCK FREE LOCK IF Q EMPTY @Z40FPXJ 61070040 BZ DSLOCK25 Q WAS EMPTY LOCK FREE @Z40FPXJ 61072040 * SETLOCK RELEASE,TYPE=LOCAL,RELATED=('TCB QUEUE',IEAVEDS0,(DSLO*61080002 CK1)) RELEASE THE LOCAL LOCK. 61100002 L RD,DSLLREL LOCK MANAGER'S BASE REGISTER 61102002 L RB,DSLLRELD DISPATCHER SPECIAL ENTRY @YM03564 61104002 BALR RE,RB ENTER L.M. AT SPECIAL ENTRY FOR DISP 61106002 DSLOCK25 DS 0H @Z40FPXJ 61108040 NI PSAHLHI+3,DSXFF-DSLLHI @Z40FPXJ 61108640 NI LCCADSF2,DSXFF-LCCADSPL DISP RELEASED LOCAL LK 61110002 DST092 DC 0H'0' *** TEST LABEL *** 61120002 SPACE 2 61140002 */*DSLOCK25: S DSSAVE:SAVE STATUS OF PREEMPTED TASK */ 61160040 SPACE 2 61180002 BAL RF,DSSAVE SAVE STATUS OF PREEMPTED TASK 61200002 * DSSAVE USES REGISTERS 0,1,2,3,14 AND 15. 61220002 SPACE 2 61240002 */*DSLOCK3: S SETLOCK:OBTAIN GLOBAL DISPATCHER LOCK */ 61260002 SPACE 2 61280002 DSLOCK3 DC 0H'0' 61300002 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('ASCB QUEUE/GSPL*61320002 /LSPL/PSAANEW',IEAVEDS0,(DSLOCK14,DSLOCK16,DSLOCK17,DSLO*61340002 CK18,DSLOCK19)) 61360002 L RD,AGSLDISP OBTAIN DISPATCHER SPECIAL ENTRY PT 61366002 BALR RE,RD LOCK MANAGER'S SPECIAL DISP ENTRY 61372002 DST093 DC 0H'0' *** TEST LABEL *** 61380002 SPACE 2 61400002 */* D (YES,DS052,NO,) WAS MEMORY SWITCH REQUIRED? */ 61402002 SPACE 2 61404002 L R5,PSAANEW TEST FOR MEMORY SWITCH @YM02483 61406002 C R5,PSAAOLD MEMORY SW IF NE @YM02483 61408002 BNE DS052 START AT TOP OF QUEUE @YM02483 61410002 SPACE 2 61412002 */* P SET UP ADDRESSABILITY TO THE CVT AND CSD */ 61420002 SPACE 2 61440002 L R6,FLCCVT CVT ADDRESS 61460002 USING CVT,R6 CVT ADDRESSABILITY 61480002 L R5,CVTCSD CSD ADDRESS 61500002 DROP R6 DROP CVT ADDRESS REGISTER 61520002 SPACE 2 61540002 */* P (,DS054) GET NEXT ASCB ADDRESS */ 61560002 SPACE 2 61580002 L R8,ASCBFWDP GET NEXT ASCB. 61600002 B DS054 GO TO TEST IT'S DISPATCHABILITY IN 61620002 * THE ADDRESS SPACE DISPATCHER. 61640002 SPACE 2 61660002 */*DS0921: P GET ADDRESS OF TOP RB */ 61680002 SPACE 2 61700002 DS0921 DC 0H'0' ENTER FOR RB WAITING TEST 61720002 USING TCB,R6 TCB ADDRESSABILITY. 61740002 L R5,TCBRBP LOAD ADDRESS OF TOP RB. 61760002 USING RBSECT,R5 RB ADDRESSABILITY. 61780002 SPACE 2 61800002 */* D (NO,DS0922,YES,) IS RB WAITING? */ 61820002 SPACE 2 61840002 CLI RBWCF,DSX0 IS THE RB WAITING. 61860002 BE DS0922 NO. CONTINUE. 61880002 DST094 DC 0H'0' *** TEST LABEL *** 61900002 SPACE 2 61920002 */* P GET ADDRESS OF NEXT TCB */ 61940002 SPACE 2 61960002 L R6,TCBTCB RB IS WAITING. GET NEXT TCB. 61980002 SPACE 2 62000002 */* D (YES,DS092,NO,DS0921) IS THIS THE END OF TCB QUEUE? */ 62020002 SPACE 2 62040002 LTR R6,R6 IS THIS THE END OF TCB QUEUE? 62060002 BNZ DS0921 NO. GO TO TEST WAIT COUNT. 62080002 B DS092 END OF QUEUE. GO TO MEMORY DISP. 62100002 SPACE 2 62120002 */*DS0922: D (NO,DS093,YES,) IS TCB NON DISPTACH.? */ 62140002 SPACE 2 62160002 DS0922 DC 0H'0' ENTER FOR DISPATCHABILITY TESTS. 62180002 LH RD,TCBFLGS4 TEST TO SEE IF ANY PRIMARY NON- 62200002 * DISPATCHABILITY BITS ARE SET. 62220002 LTR RD,RD ANY BITS ON? @YM03564 62230002 BZ DS093 NO. DISPATCHABLE. CONTINUE. @YM03564 62240002 DST095 DC 0H'0' *** TEST LABEL *** 62260002 SPACE 2 62280002 */* P GET ADDRESS OF NEXT TCB */ 62300002 SPACE 2 62320002 L R6,TCBTCB NOT DISPATCHABLE. GET NEXT TCB. 62340002 SPACE 2 62360002 */* D (YES,DS092,NO,DS0921) IS THIS THE END OF TCB QUEUE? */ 62380002 SPACE 2 62400002 LTR R6,R6 IS THIS THE END OF TCB QUEUE? 62420002 BNZ DS0921 NO. GO TO TEST WAIT COUNT. 62440002 B DS092 END OF QUEUE. GO TO MEMORY DISP. 62460002 SPACE 2 62480002 */* N CS WILL SET ACTIVE ON AND UPDATE CPU ID */ @Z40FPXJ 62490040 */*DS093: D (NO,DS0932,YES,) IS TCB ACTIVE? */ 62500002 SPACE 2 62520002 DS093 DC 0H'0' ENTER FOR TCB ACTIVE TEST. 62540002 L R1,TCBXSCT TCB ACT & CPU ADDR WORD @Z40FPXJ 62541040 LR R2,R1 SECOND COPY OF WORD @Z40FPXJ 62542040 IC R1,PSACPULA+1 GET CPU LOGICAL ADDR THIS @Z40FPXJ 62544040 * INST ASSUMES THAT THE CPU @Z40FPXJ 62547040 * ADDR WILL REMAIN 1 BYTE @Z40FPXJ 62550040 * IF IT CHANGES THIS INST @Z40FPXJ 62553040 * WILL HAVE TO CHANGE ALSO @Z40FPXJ 62556040 O R1,ACTONMSK TURN ON TCB ACTIVE BIT @Z40FPXJ 62562040 N R2,ACTOFMSK TURN OFF TCB ACTIVE BIT @Z40FPXJ 62565040 CS R2,R1,TCBXSCT CS ACT BIT ON IF NOT @Z40FPXJ 62568040 * ALREADY ON @Z40FPXJ 62571040 BZ DS0932 TCB WAS NOT ACTIVE. BIT @Z40FPXJ 62574040 * HAS NOW BEEN TURNED ON @Z40FPXJ 62577040 DST096 DC 0H'0' *** TEST LABEL *** 62600002 SPACE 2 62620002 */* D (NO,DS0931,YES,) IS IT A REDISPATCH? */ 62640002 SPACE 2 62660002 C R6,PSATOLD COMPARE CHOSEN TCB AGAINST OLD. 62680002 BNE DS0931 NOT A RE-DISPATCH. @YM07640 62700002 DST097 DC 0H'0' *** TEST LABEL *** 62720002 SPACE 2 62721002 */* D (NO,DS094,YES,) IO OR EXT INT CAUSED ENTRY? */ @Z40FPXJ 62722040 SPACE 2 62723002 L R1,LCCAITOD IS THIS RE-DISP A RESULT OF AN 62724002 * IO OR EXT INTERRUPT. R1 NE ZERO 62724602 * IF SO, MUST JST @YM07640 62725202 LTR R1,R1 IS IT ZERO @YM07640 62726002 BZ DS094 YES, DON'T JST @Z40FPXJ 62727040 SPACE 2 62728002 */* S DSJST: CALCULATE JST FOR TCB */ @Z40FPXJ 62729040 */* P SET TOD CLOCK FOR JOB STEP TIMING */ @Z40FPXJ 62729240 */*DS094: P (,DS095) MOVE RB OLD PSW TO LOW CORE */ @Z40FPXJ 62729440 SPACE 2 62730002 BAL RE,DSJST CALCULATE JST @YM07640 62731002 STCK LCCADTOD SET TOD CLOCK FOR JST @Z40FPXJ 62732040 DS094 DS 0H @Z40FPXJ 62733040 MVC PSAPSWSV(DSL8),RBOPSW MOVE RB OLD PSW TO L.C. @Z40FPXJ 62734040 B DS095 CONTINUE WITH REDISPATCH @YM07640 62735040 SPACE 2 62740002 */*DS0931: P GET ADDRESS OF NEXT TCB */ 62760002 SPACE 2 62780002 DS0931 DC 0H'0' 62790002 L R6,TCBTCB ACTIVE ON ANOTHER CPU. GET ANOTHER. 62800002 SPACE 2 62820002 */* D (YES,DS092,NO,DS0921) IS THIS THE END OF TCB QUEUE? */ 62840002 SPACE 2 62860002 LTR R6,R6 IS THIS THE END OF TCB QUEUE? 62880002 BNZ DS0921 NO. GO TO TEST WAIT COUNT. 62900002 B DS092 END OF QUEUE. GO TO MEMORY DISP. 62920002 SPACE 2 62940002 */*DS0932: P GET TCB'S AFFINITY MASK */ 62960002 SPACE 2 62980002 DS0932 DC 0H'0' 63000002 LH RC,TCBAFFN TCB'S AFFINITY MASK. 63020002 SPACE 2 63040002 */* D (NO,DS09325,YES,) IS TCB AFFINITY SPECIFIED? */ 63060002 SPACE 2 63080002 C RC,DSCPUAFF IS TCB AFFINITY SPECIFIED? @YM04737 63086002 BE DS09325 NO. CONTINUE. @YM04737 63093002 LTR RC,RC IS TCB AFFINITY SPECIFIED? 63100002 BZ DS09325 NO. CONTINUE. 63120002 SPACE 2 63140002 */* P GET CPU'S AFFINTIY MASK */ 63160002 SPACE 2 63180002 L RE,PSAPCCAV PCCA ADDRESS 63200002 USING PCCA,RE PCCA ADDRESSABILITY 63220002 LH RE,PCCACAFM CPU'S AFFINITY MASK 63240002 DROP RE DROP PCCA ADDRESSABILITY 63260002 SPACE 2 63280002 */* D (YES,DS09325,NO,) DOES AFFINITY MATCH THIS CPU? */ 63300002 SPACE 2 63320002 NR RE,RC TEST FOR MATCHING AFFINITY @YM04737 63340002 BNZ DS09325 AFFINITY MATCH. CONTINUE WITH DISP 63360002 SPACE 2 63410002 */* P GET SYSTEM WIDE CPU ALIVES MASK */ 63412002 SPACE 2 63414002 L R3,FLCCVT LOCATE THE CVT 63416002 USING CVT,R3 63418002 L R1,CVTCSD CSD MASK 63418402 LH R2,CSDCPUAL-CSD(R1) CPU ALIVES MASK 63418802 SPACE 2 63419202 */* D (YES,DS092,NO,) CAN TASK RUN ON ANY CPU? */ 63419602 SPACE 2 63419702 NR R2,RC CAN TASK RUN ON ANY CPU? 63419802 BZ DS09322 YES, BUT NOT THIS ONE, @Z40FPXJ 63419940 * RELEASE LOCAL LK AND LOOK FOR 63426602 * READY WORK 63428602 NI TCBXSCT1-TCB(R6),DSXFF-TCBACTIV ACTIVE=OFF @Z40FPXJ 63429240 B DS092 LOOK FOR READY WORK @Z40FPXJ 63429640 SPACE 2 63430602 */* P REMOVE AFFINITY IN ORDER TO DISP ABEND */ 63432602 SPACE 2 63433002 DS09322 DS 0H @Z40FPXJ 63434040 STH R2,TCBAFFN REMOVE AFFINITY AND ABEND 63437940 SPACE 2 63438940 */* P SET R1 FOR 072 ABEND AND PSW TO SVC D */ 63439902 SPACE 2 63441902 L R1,DSABAFFN 22F ABEND CODE 63443902 ST R1,TCBGRS1 STORE INTO REG 1 SLOT IN IHSA 63445902 LA R2,CVTQABST ADDRESS OF SVC D INSTR 63446302 DROP R3 63446402 ST R2,RBOPSW+DSL4 SET PSW TO POINT TO SVC D 63446502 SPACE 2 63453202 */* P (,DS09325) CONTINUE WITH TASK DISPATCH */ 63455202 SPACE 2 63457202 EJECT 63459902 * 63466602 * A DISPATCHABLE TASK HAS BEEN CHOSEN - BEGIN TO RESTORE IT'S STATUS 63473302 * 63480002 SPACE 2 63500002 */*DS09325: D (NO,DS0933,YES,) PREEMPT ANOTHER TASK IN SAME MEMORY? */ 63520002 SPACE 2 63540002 DS09325 DC 0H'0' 63560002 SR R1,R1 @Z40FPXJ 63580040 C R1,PSATOLD ARE WE PREEMPTING LWR PRTY @Z40FPXJ 63590040 * TASK WITHIN THIS ADDRESS SPACE. 63620002 BE DS0933 NO. CONTINUE. 63640002 DST097A DC 0H'0' *** TEST LABEL *** 63660002 SPACE 2 63680002 */* S DSSAV1:SAVE TASK'S STATUS */ 63700002 SPACE 2 63720002 * SAVE STATUS OF PREEMPTED TASK IN THE SAME ADDRESS SPACE 63740002 BAL RF,DSSAV1 GO TO SPECIAL SAVE STATUS ENTRY. 63760002 * DSSAV1 USES REGISTERS 0,1,2,3,14 AND 15. 63780002 DS0933 DC 0H'0' 63790002 SPACE 2 63794040 IEAVDSTC DS 0H ENTRY FOR TCTL @Z40FPXJ 63798040 ******** THIS ENTRY POINT IS FOR TCTL. TCTL HAS SELECTED @Z40FPXJ 63806040 ******** A TCB TO BE DISPATCHED AND HAS SET UP ALL REGS @Z40FPXJ 63814040 ******** FOR THE DISPATCHER. THE TCB HAS PASSED ALL TESTS @Z40FPXJ 63822040 ******** FOR DISPATCHABILITY. THIS IS ASSURED BY TCTL @Z40FPXJ 63830040 SPACE 2 63840002 */*DS0933: P RESTORE THE FLOATING POINT REGISTERS */ 63890002 SPACE 2 63940002 * RESTORE FLOATING POINT REGISTERS 63990002 L R3,DSPREFIX TCB PREFIX DECREMENT VALUE. 64040002 AR R3,R6 TCB PREFIX ADDRESS. 64090002 USING TCBFIX,R3 64140002 LD R0,TCBFRS0 LOAD 64190002 LD R2,TCBFRS2 FLOATING 64240002 LD R4,TCBFRS4 POINT 64290002 LD R6,TCBFRS6 REGISTERS. 64340002 DROP R3 64390002 SPACE 2 64400002 */* D (NO,DS0938,YES,) IS THERE A TQE? */ 64420002 SPACE 2 64440002 L R4,TCBTME ADDRESS OF TQE 64460002 LTR R4,R4 TEST FOR POSITIVE ADDRESS. 64480002 BNH DS0938 NO. CONTINUE. 64500002 SPACE 2 64520002 */* D (YES,DS0937,NO,) IS THE CPU TIMER GOOD? */ 64540002 SPACE 2 64560002 L R3,PSAPCCAV PCCA ADDRESS FROM THE PSA. 64580002 USING PCCA,R3 PCCA ADDRESSABILITY. 64600002 TM PCCAINTE,PCCANUIN IS TIMER OK? 64620002 BZ DS0937 YES. GO TO SET TIMER. 64640002 SPACE 2 64640802 */* D (YES,DS0936,NO,) MUST TASK RUN ONLY ON THIS CPU? */ 64641602 SPACE 2 64642402 L R4,FLCCVT CVT ADDRESS. 64644002 USING CVT,R4 CVT ADDRESSABILITY. 64648002 CLC PCCACAFM(DSL2),TCBAFFN TEST FOR MATCHING AFFINITY MASKS 64652002 BE DS0936 YES. TCB HAS SPECIFIED AFFINITY TO 64656002 * THIS CPU ONLY. GO TO ABEND TASK 64656802 * SINCE THIS CPU'S TIMER IS BAD. 64657602 DROP R3 DROP PCCA ADDRESSABILITY. 64660002 SPACE 2 64680002 */* D (YES,DS0938,NO,) ARE THERE ANY GOOD CPU TIMERS? */ 64700002 SPACE 2 64720002 L R3,CVTCSD CSD ADDRESS. 64780002 USING CSD,R3 CSD ADDRESSABILITY. 64800002 L R1,CSDGDINT COUNT OF GOOD CPU TIMERS. 64820002 LTR R1,R1 ARE THERE ANY GOOD TIMERS? 64840002 BNZ DS0938 YES. BYPASS SETTING OF TIMER ON 64860002 * THIS CPU THIS DISPATCH. 64880002 DROP R3 DROP CSD ADDRESSABILITY. 64900002 SPACE 2 64920002 */*DS0936: P SET REG 1 TO 22F ABEND CODE */ 64940002 SPACE 2 64960002 DS0936 DC 0H'0' 64964002 L R1,DSABTIME 22F ABEND CODE. 64980002 ST R1,TCBGRS1 STORE INTO TCB - TO BE LOADED AT 65000002 * DISPATCH. 65020002 SPACE 2 65040002 */* P (,DS0938) SET RBOPSW TO POINT TO SVC ABEND INSTRUCTION IN CVT */ 65060002 SPACE 2 65080002 LA R1,CVTQABST ADDRESS OF SVC D INSTR IN CVT. 65100002 ST R1,RBOPSW+DSL4 STORE INTO RBOPSW. 65120002 B DS0938 CONTINUE DISPATCH. 65140002 DROP R4 DROP CVT ADDRESSABILITY. 65160002 SPACE 2 65180002 */*DS0937: P SET CPU INTERVAL TIMER */ 65200002 SPACE 2 65220002 DS0937 DC 0H'0' 65240002 * STORE TQE TIME REMAINING INTO CPU INTERVAL TIMER. 65260002 USING TQE,R4 TQE ADDRESSABILITY. 65280002 SPT TQEVAL SET CPU INTERVAL TIMER. 65300002 DROP R4 65320002 SPACE 2 65330002 SPACE 2 65334002 DS0938 DC 0H'0' 65334402 SPACE 2 65338802 */*DS0938: P SET PSATNEW AND PSATOLD TO THIS TCB'S ADDRESS */ 65339040 SPACE 2 65339202 ST R6,PSATNEW SET PSATNEW AND PSATOLD TO THE 65339402 ST R6,PSATOLD ADDRESS OF THIS TCB. 65339602 SPACE 2 65339802 */* P STORE TOD CLOCK FOR JOB STEP TIMING */ 65386640 SPACE 2 65393302 STCK LCCADTOD SET TOD CLOCK FOR JOB STEP TIMING. 65420002 * FALL THROUGH TO NEXT SECTION TO CONTINUE DISPATCH OF TASK. 65680002 * 65700002 SPACE 2 65720002 */* P MOVE RB OPSW TO LOW CORE */ 65740040 SPACE 2 65760002 MVC PSAPSWSV(DSL8),RBOPSW MOVE RB OLD PSW TO LOW CORE 65860002 SPACE 2 65880002 */*DS0935: P (CHNG,DS0935,OK,) CS TO INCR NUMBER OF CPUS */ @Z40FPXJ 65886040 SPACE 2 @ZA20174 65896040 L R1,ASCBCPUS NUMB CPUS IN ADDRESS SPACE @Z40FPXJ 65940840 DS0935 DS 0H @Z40FPXJ 65941040 LA R3,DSI1(R1) INCREMENT FOR THIS CPU. @Z40FPXJ 65941240 CS R1,R3,ASCBCPUS REPLACE UPDATED COUNT @Z40FPXJ 65941440 BC DSCC4,DS0935 CHANGED. GO TRY AGAIN. @Z40FPXJ 65941640 SPACE 2 @ZA20174 65941940 */* D (NO,DS095,YES,) WAS ENTRY FROM TCTL ? */ @ZA18126 65942440 SPACE 2 @ZA20174 65942740 SETLOCK TEST,TYPE=LOCAL,BRANCH=(HELD,DS095) @ZA18126 65942840 SPACE 1 @ZA18126 65942940 * DISPATCHER HAS BEEN ENTERED FROM IEAVETCL. BECAUSE @ZA18126 65943340 * OF AN INTERSECT BETWEEN TCTL AND STATUS THIS @ZA18126 65943440 * EVENT SEQUENCE MUST REMAIN IN ORDER: @ZA18126 65943540 * 1. INCREMENT ASCBCPUS @ZA18126 65943740 * 2. CLEAR CDAL OF TCTL BIT @ZA18126 65943940 SPACE 2 @ZA18126 65944040 */* P (,DS0955) TURN OFF CDALTCTL BIT */ @ZA18126 65944140 SPACE 2 @ZA20174 65944240 L R2,PSACDAL THIS CPU'S CDAL ADDRESS @ZA18126 65944440 USING CDAL,R2 CDAL ADDRESSABILITY @ZA18126 65944640 NI CDALDSP4,DSXFF-CDALTCTL TURN OFF TCTL BIT @ZA18126 65944740 B DS0955 LOCAL LOCK NOT HELD - SKIP @ZA18126 65944940 DROP R2 @ZA18126 65945040 SPACE 2 @ZA18126 65945140 */*DS095: D (NO,DSLOCK4,YES,) LCL LOCK SUSPEND Q EMPTY?*/ @ZA20174 65945440 */* P (,DSLOCK45) RELEASE LOCAL LOCK NO SETLOCK*/ @ZA20174 65945740 SPACE 2 @ZA20174 65946040 DS095 DS 0H @Z40FPXJ 65946840 SLR R2,R2 ZERO REG FOR CS @Z40FPXJ 65947140 SLR R3,R3 ZERO REG FOR CS @Z40FPXJ 65947440 L R4,ASCBLOCK GET LOCKWORD FOR CS @Z40FPXJ 65947740 SLR R5,R5 ZERO REG FOR CS @Z40FPXJ 65948040 CDS R4,R2,ASCBLOCK FREE LK IF Q IS EMPTY @Z40FPXJ 65950040 BZ DSLOCK45 Q EMPTY LOCK IS FREE @Z40FPXJ 65952040 SPACE 2 @ZA20174 65953040 */*DSLOCK4: S SETLOCK:RELEASE LOCAL LOCK */ 65954040 SPACE 2 65955040 DSLOCK4 DS 0H @Z40FPXJ 65956040 * SETLOCK RELEASE,TYPE=LOCAL,RELATED=('TCB QUEUE',IEAVEDS0,(DSLO*65960002 CK1)) 65980002 L RD,DSLLREL LOCK MANAGER'S BASE REGISTER 65982002 L RB,DSLLRELD DISPATCHER SPECIAL ENTRY @YM03564 65984002 BALR RE,RB ENTER L.M. AT SPECIAL ENTRY FOR DISP 65986002 DSLOCK45 DS 0H @Z40FPXJ 65988040 NI PSAHLHI+3,DSXFF-DSLLHI @Z40FPXJ 65988640 NI LCCADSF2,DSXFF-LCCADSPL CLEAR DISP OBTAINED LOCAL LK 65990002 DST100 DC 0H'0' *** TEST LABEL *** 66000002 SPACE 2 66020002 */*DS0955: P CHECK FOR TRACE ACTIVE */ @Z40FPXJ 66030040 */*DSLOCK45: D (NO,DS096,YES,) IS TRACE ACTIVE? */ 66040040 SPACE 2 66060002 DS0955 DS 0H @Z40FPXJ 66070040 L RB,FLCCVT CVT ADDRESS. 66080002 USING CVT,RB 66100002 CLI CVTTRACE+DSL1,DSTRACEM IS TRACE ACTIVE? 66120002 BNE DS096 NO. BYPASS. 66140002 DST100A DC 0H'0' *** TEST LABEL *** 66160002 DROP RB 66180002 SPACE 2 66200002 */* S TRDISP:TRACE TCB ACTIVITY */ 66220002 SPACE 2 66240002 L RA,DSTRDISP TCB TRACE ENTRY POINT. 66260002 LM R0,R1,TCBGRS0 RESET 0 AND 1 FOR TRACE 66280002 L RF,TCBGRS15 RESET 15 FOR TRACE 66300002 DST100B DC 0H'0' *** TEST LABEL *** 66320002 BALR RB,RA GO TO TRACE OR BR11 RETURN. 66340002 DST101 DC 0H'0' *** TEST LABEL *** 66360002 LOADPSA5 DC 0H'0' ***** FOR TSO TEST ***** 66380002 SPACE 2 66400002 */*DS096: S IEADISP3:GTF INTERFACE */ 66420002 SPACE 2 66440002 DS096 DC 0H'0' 66460002 HOOK EID=IEADISP3,TYPE=P GO TO GTF THROUGH THE MC INSTR. 66480002 SPACE 2 66490002 */* P SET READY WORK DISPATCHED INDICATOR */ 66492002 SPACE 2 66494002 OI LCCADSF2,LCCADSRW TURN ON READY WORK IND. 66496002 SPACE 2 66500002 */* P PURGE OLD NORMAL FRR STACK */ 66520002 SPACE 2 66540002 SETFRR F,WRKREGS=(R1,R2) PURGE THE NORMAL STACK 66560002 SPACE 2 66700002 */* P RELOAD THE GENERAL PURPOSE REGISTERS */ 66720002 SPACE 2 66740002 LM R0,RF,TCBGRS RELOAD GENERAL PURPOSE REGISTERS 66760002 DROP R6 DROP TCB BASE REGISTER. 66780002 DROP R5 DROP RB ADDRESSABILITY. 66800002 SPACE 2 66820002 */* P RESET DISPATCHER INDICATOR */ 66840002 SPACE 2 66860002 NI PSASUP1,DSXFF-PSADISP-PSATCTL RESET DISP & TCTL @Z40FPXJ 66880040 SPACE 2 66900002 */* P RESET NORMAL STACK TO CURRENT */ 66920002 SPACE 2 66940002 LTASKPSW DC 0H'0' 66960002 MVC PSACSTK(DSL4),PSANSTK RESET NORMAL STACK TO CURRENT. 66980002 SPACE 2 67000002 *********************************************************************** 67020002 * * 67040002 * LOAD PSW TO DISPATCH A TASK * 67060002 * * 67080002 *********************************************************************** 67100002 SPACE 2 67120002 */*TASKPSW: R LOAD TASK'S PSW */ 67140002 SPACE 2 67160002 TASKPSW DC 0H'0' 67180002 DSTSKPSW DC 0H'0' 67200002 LPSW PSAPSWSV DISPATCH THE TASK 67220002 TITLE 'IEAVEDS0 - SAVE STATUS' 67240002 *********************************************************************** 67260002 * * 67280002 * SAVE STATUS SUBROUTINE * 67300002 * * 67320002 * THIS SUBROUTINE IS ENTERED TO SAVE THE STATUS OF A TASK * 67340002 * OR LOCAL SUPERVISOR ROUTINE WHICH IS BEING PREEMPTED FOR * 67360002 * HIGHER PRIORITY WORK. STATUS SAVING OF THE SYSTEM WAIT * 67380002 * TASK IS ALSO DONE IN THIS SUBROUTINE. * 67400002 * * 67420002 * INPUT: * 67440002 * R7 - LCCA ADDRESS * 67460002 * R8 - ASCB ADDRESS * 67480002 * R9 - BASE * 67500002 * R15 - RETURN ADDRESS * 67520002 * WORK: * 67540002 * R0 - R3 - WORK REGS * 67560002 * R14 - USED AS RETURN REGISTER FROM JOB STEP TIMING * 67580002 * NO OTHER REGISTERS ARE USED IN THIS SEQUENCE. * 67600002 * * 67620002 *********************************************************************** 67640002 SPACE 2 67660002 */*DSSAVE: D (YES,DSSAV2,NO,) IS LOCAL LOCK HELD? */ 67680002 SPACE 2 67700002 DSSAVE DC 0H'0' 67720002 SR R1,R1 67740002 SETLOCK TEST,TYPE=LOCAL,BRANCH=(HELD,DSSAV2) 67750002 SPACE 2 67800002 */* D (NO,DST106A,YES,) IS THERE A TCB? */ 67820002 SPACE 2 67840002 C R1,PSATOLD TEST FOR A TCB 67860002 DST101A DC 0H'0' *** TEST LABEL *** 67880002 BCR DSCC8,RF NONE. RETURN. 67900002 SPACE 67920002 DST102 DC 0H'0' *** TEST LABEL *** 67940002 SPACE 2 67960002 */* D (YES,DSSAV3,NO,) IS IT THE WAIT TASK? */ 67980002 SPACE 2 68000002 C R8,DSWASCB TEST FOR THE WAIT TASK. 68020002 BE DSSAV3 YES. GO TO SPECIAL WAIT PROCESSING 68040002 DST103 DC 0H'0' *** TEST LABEL *** 68060002 EJECT 68080002 * 68100002 * SAVE STATUS FOR A PREEMPTED TASK 68120002 * 68140002 SPACE 2 68160002 */*DSSAV1: P SAVE STATUS FOR A PREEMPTED TASK */ 68180002 SPACE 2 68200002 DSSAV1 DC 0H'0' 68220002 SPACE 68300002 L R3,PSATOLD TCB ADDRESS. 68320002 USING TCB,R3 TCB ADDRESSING. 68340002 SPACE 2 68360002 */* P SAVE FLOATING POINT REGISTERS */ 68380002 SPACE 2 68400002 * SAVE FLOATING POINT REGS 68420002 L R2,DSPREFIX PREFIX VALUE 68440002 AR R2,R3 TCB PREFIX ADDRESSING. 68460002 USING TCBFIX,R2 TCB PREFIX ADDRESSING. 68480002 STD R0,TCBFRS0 * SAVE 68500002 STD R2,TCBFRS2 * FLOATING 68520002 STD R4,TCBFRS4 * POINT 68540002 STD R6,TCBFRS6 * REGISTERS 68560002 SPACE 68580002 DROP R2 DROP TCB PREFIX REG. 68600002 SPACE 2 68620002 */* D (NO,DSSAV10,YES,) TEST FOR TQE */ 68640002 SPACE 2 68660002 L R2,TCBTME TQE ADDRESS 68680002 LTR R2,R2 TEST FOR POSITIVE ADDRESS 68700002 BNH DSSAV10 NO. CONTINUE. 68720002 SPACE 2 68740002 */* D (NO,DSSAV10,YES,) IS CPU TIMER WORKING? */ 68760002 SPACE 2 68780002 L R1,PSAPCCAV PCCA ADDRESS. 68800002 USING PCCA,R1 PCCA ADDRESSABILITY. 68820002 TM PCCAINTE,PCCANUIN IS THIS CPU'S TIMER OK? 68840002 BO DSSAV10 NO. BYPASS SAVING OF TIMER. 68860002 DROP R1 DROP PCCA ADDRESSABILITY. 68880002 SPACE 2 68900002 */* P SAVE CPU INTERVAL TIMER VALUE INTO TQE */ 68920002 SPACE 2 68940002 USING TQE,R2 R2 HAS TQE ADDRESS 68960002 STPT TQEVAL SAVE TIMER VALUE 68980002 DROP R2 69000002 SPACE 2 @YM03564 69010002 */* P RESET TIMER TO A HIGH VALUE */ 69020002 SPACE 2 @YM03564 69030002 SPT DSHITIME SET CPU TIMER TO HIGH VALUE @YM03564 69040002 SPACE 2 69050002 */*DSSAV10: S DSJST:CALCULATE JOB STEP TIME */ 69100002 SPACE 2 69150002 DSSAV10 DC 0H'0' 69200002 BAL RE,DSJST GO TO CALCULATE JOB STEP TIME. 69210002 * DSJST USES REGISTERS 0,1,2,3 AND 14. 69220002 SPACE 2 69230002 */*DSSAV11: P (CHNG,DSSAV11,OK,) C & S TO CLEAR TCB ACTIVE BIT AND 69231040 */*CPU ID*/ @ZA20174 69232040 SPACE 2 69234002 DST106 DC 0H'0' *** TEST LABEL *** 69236002 L R3,PSATOLD REEST TCB ADDR 69236402 L R0,TCBXSCT GET TCB INTERSECT WORD @ZA20174 69237240 DSSAV11 DC 0H'0' @ZA20174 69237640 LR R2,R0 COPY VALUE FOR SWAP OP INIT @ZA20174 69238040 N R2,ACTCPVOF CLEAR ACTIV/CCPVI IN SWAP OP@ZA20174 69238440 CS R0,R2,TCBXSCT CLEAR ACTIV/CCPVI IN TCB @ZA20174 69238840 BC DSCC4,DSSAV11 UPDATE FAILED, RETRY @ZA20174 69239240 DROP R3 DROP TCB BASE REGISTER. 69310002 SPACE 2 69320002 */*DSSAV12: P (CHNG,DSSAV12,OK,) C & S TO DECREMENT COUNT OF CPU'S IN 69330040 */*ASCB */ 69360002 SPACE 2 69380002 L R3,ASCBCPUS * 69400002 DSSAV12 DC 0H'0' * 69420002 LR R2,R3 * DECREMENT COUNT OF THE 69440002 BCTR R2,DSI0 * NUMBER OF CPU'S ACTIVE 69460002 CS R3,R2,ASCBCPUS * IN THIS ADDRESS SPACE. 69480002 BC DSCC4,DSSAV12 * 69500002 SPACE 2 69614002 */*DSSAV13: P ZERO PSATNEW AND PSATOLD */ @ZA20174 69615040 SPACE 2 69618002 DSSAV13 DC 0H'0' @ZA20174 69618240 ST R1,PSATNEW ZERO OUT PSATNEW 69619202 ST R1,PSATOLD ZERO OUT PSATOLD 69619602 SPACE 2 69633302 */*DST106A: R RETURN */ 69640002 DST106A DC 0H'0' *** TEST LABEL *** 69660002 BR RF RETURN 69680002 EJECT 69740002 * 69760002 * SAVE LOCAL SUPERVISOR INFORMATION 69780002 * R1 IS ZERO ON ENTRY. 69800002 * 69820002 DSSAV2 DC 0H'0' 69900002 SPACE 2 70680002 */*DSSAV2: P GET IHSA ADDRESS */ 70700002 SPACE 2 70720002 L R3,ASCBASXB ASXB ADDRESS 70740002 USING ASXB,R3 70760002 L R3,ASXBIHSA IHSA ADDRESS 70780002 DROP R3 70800002 USING IHSA,R3 70820002 SPACE 2 70840002 */* P STORE FLOATING POINT REGISTERS */ 70860002 SPACE 2 70880002 STD R0,IHSAFPR0 * STORE 70900002 STD R2,IHSAFPR2 * FLOATING 70920002 STD R4,IHSAFPR4 * POINT 70940002 STD R6,IHSAFPR6 * REGISTERS. 70960002 SPACE 2 71010002 */* P SAVE PSATNEW AND PSATOLD */ 71060002 SPACE 2 71110002 L R2,PSATNEW * STORE 71160002 L RE,PSATOLD * PSATNEW 71210002 ST R2,IHSANTCB * AND 71212002 ST RE,IHSAOTCB * PSATOLD 71214002 SPACE 2 71220002 */* D (NO,DSSAV22,YES,) IS THERE A TCB? */ 71240002 SPACE 2 71260002 LTR RE,RE TEST FOR TCB ADDRESS. 71280002 BZ DSSAV22 NO. BYPASS TIMER TESTS. 71300002 SPACE 2 71320002 */* D (NO,DSSAV22,YES,) IS THERE A TQE FOR THIS TCB? */ 71340002 SPACE 2 71360002 USING TCB,RE TCB ADDRESSABILITY. 71380002 L R2,TCBTME TQE ADDRESS FROM TCB. 71400002 LTR R2,R2 IS THERE A TQE? 71420002 BNH DSSAV22 NO. BYPASS TIMER SETTING. 71440002 DROP RE DROP TCB ADDRESSABILITY. 71460002 SPACE 2 71480002 */* D (NO,DSSAV22,YES,) IS THIS CPU'S TIMER OK? */ 71500002 SPACE 2 71520002 L R1,PSAPCCAV PCCA ADDRESS. 71540002 USING PCCA,R1 PCCA ADDRESSABILITY. 71560002 TM PCCAINTE,PCCANUIN IS THE CPU TIMER OK? 71580002 BO DSSAV22 NO. BYPASS TIMER SETTINGS. 71600002 SPACE 2 71620002 */* P SAVE CPU INTERVAL TIMER INTO IHSA */ 71640002 SPACE 2 71660002 STPT IHSACPUT SAVE CPU INTERVAL TIMER VALUE 71680002 SPACE 2 @YM03564 71720002 */* P SET CPU TIMER TO HIGH VALUE */ 71760002 SPACE 2 @YM03564 71800002 SPT DSHITIME SET CPU INTERVAL TIMER TO X'7F---F' 71840002 SPACE 2 71919202 */*DSSAV22: P SAVE LOCAL SUPERVISOR'S FRR STACK */ 71919602 SPACE 2 71919702 DSSAV22 DC 0H'0' 71919802 LR R1,RF SAVE REG 15 @YM03564 71920802 LA R2,IHSAFRRS LOCATE FRR SAVE AREA ADDR 71921802 L RE,PSANSTK NORMAL STACK LOCATION @YM03564 71922802 L R3,FRRSCURR-FRRS(RE) CURRENT ENTRY @YM03564 71923802 L RF,FRRSELEN-FRRS(RE) LENGTH OF CURRENT ENTRY @YM03564 71924802 AR R3,RF ADDRESS OF LAST BYTE @YM03564 71925802 SR R3,RE LENGTH OF STACK TO SAVE @YM03564 71926802 LA RF,DSL0(R3) DUPLICATE LENGTH @YM03564 71927802 MVCL R2,RE MOVE THE STACK TO SAVE AREA 71932502 LR RF,R1 RESTORE R15 71932602 SPACE 2 71932702 */* S DSJST:CALCULATE JOB STEP TIME */ 71932802 SPACE 2 71932902 BAL RE,DSJST GO TO CALCULATE JOB STEP TIME 71933002 * DSJST USES REGISTERS 0,1,2,3 AND 14. 71933402 SPACE 71933802 SPACE 2 71934202 */* P DECREMENT COUNT OF CPUS ACTIVE IN ADDR SPACE */ 71934602 SPACE 2 71935002 L R1,ASCBCPUS OBTAIN CURRENT CPUS COUNT 71935102 DSSAV22A DC 0H'0' 71935302 LR R2,R1 DUPLICATE THE COUNT 71935402 BCTR R2,DSL0 DECREMENT THE COUNT 71935502 CS R1,R2,ASCBCPUS UPDATE THE COUNT 71935602 BNZ DSSAV22A REPEAT IF COUNT HAD CHANGED 71935902 * GO TO CLEAR HLHI. 71936602 SPACE 2 71936902 */* D (NO,DSSAV20,YES,) IS CMS LOCK HELD? */ 71937202 SPACE 2 71937502 TM PSAHLHI+DSO3,DSCMSHI IS THE CMS LOCK HELD? 71937902 BZ DSSAV20 NO, CONTINUE. 71938302 DST108 DC 0H'0' *** TEST LABEL *** 71938702 SPACE 2 71939102 */* P SET CMS LOCK HELD BIT IN ASCB */ 71939502 SPACE 2 71939602 OI ASCBFLG1,ASCBCMSH SET CMS LOCK HELD BIT IN THE ASCB 71939702 SPACE 2 72220002 */*DSSAV20: P STORE INTERRUPT ID INTO LOCAL LOCK */ 72240002 SPACE 2 72260002 DSSAV20 DC 0H'0' ENTER TO CLEAR HLHI. 72270002 L R1,DSINTPID YES. STORE INTERRUPT ID 72280002 ST R1,ASCBLOCK INTO THE LOCAL LOCK. 72300002 SPACE 2 72350002 */* P CLEAR CMS AND LOCAL LOCK HELD INDICATORS */ 72352002 SPACE 2 72352402 NI PSAHLHI+DSO3,DSXFF-DSCMSHI-DSLLHI TURN OF CMS AND LOCAL 72352602 * LOCK HELD INDICATORS 72353002 SPACE 2 72353102 */* P CLEAR PSATNEW AND PSATOLD FIELDS */ 72354402 SPACE 2 72356402 LA R1,DSL0 ZERO R1 72356502 ST R1,PSATNEW * CLEAR PSANEW 72356802 ST R1,PSATOLD * AND PSAOLD 72357202 SPACE 2 72379902 */*DSSAV23: R RETURN */ 72386602 SPACE 2 72387002 DSSAV23 DC 0H'0' 72388602 BR RF RETURN. 72400002 EJECT 72420002 * 72440002 * WAIT STATE SAVE SECTION 72460002 * R1 IS ZERO ON ENTRY TO THIS SEQUENCE 72480002 * 72500002 SPACE 2 72520002 */*DSSAV3: P (CHNG,DSSAV3,OK,) C & S TO DECREMENT COUNT OF CPU'S IN 72540002 */*WAIT */ 72560002 SPACE 2 72580002 DSSAV3 DC 0H'0' 72600002 L R3,ASCBCPUS * 72620002 LR R2,R3 * DECREMENT COUNT OF THE NUMBER 72640002 BCTR R3,DSI0 * OF CPUS DISPATCHED TO 72660002 DST110B DC 0H'0' *** TEST LABEL *** 72680002 CS R2,R3,ASCBCPUS * THE WAIT ADDRESS SPACE 72700002 BC DSCC4,DSSAV3 * 72720002 SPACE 2 72740002 */* P CLEAR PSATNEW AND PSATOLD */ 72760002 SPACE 2 72780002 DST111 DC 0H'0' *** TEST LABEL *** 72800002 ST R1,PSATNEW CLEAR PSATNEW 72820002 ST R1,PSATOLD CLEAR PSATOLD 72840002 ST R1,LCCAITOD CLEAR INT TOD 72850002 SPACE 72860002 DST111A DC 0H'0' *** TEST LABEL *** 72880002 SPACE 2 72900002 */* R RETURN */ 72920002 SPACE 2 72940002 BR RF RETURN. 72960002 TITLE 'IEAVEDS0 - JOB STEP TIMING' 72980002 *********************************************************************** 73000002 * * 73020002 * JOB STEP TIMING SUBROUTINE * 73040002 * THIS SUBROUTINE IS ENTERED TO ACCUMULATE THE JOB STEP * 73060002 * TIME FOR THE CURRENT ADDRESS SPACE. * 73080002 * * 73090002 * DEPENDENCIES: IEESTPRS AND DSS * 73100002 * IF CURRENT PSW IS BETWEEN IEAVEDS1 AND IEAVEDS2 BOTH MUST * 73104002 * UPDATE LCCADTOD AND (LCCAITOD,IF ANY VALUE IS PRESENT) BY * 73108002 * THE ELAPSED TOD AND RESET THE IC TO IEAVEDS1. * 73112002 * * 73116002 * ENTRY REGISTERS: * 73120002 * R7 - LCCA ADDRESS * 73140002 * R8 - ASCB ADDRESS * 73160002 * R9 - BASE REGISTER * 73180002 * RE - RETURN ADDRESS * 73200002 * WORK REGISTERS: * 73220002 * R0 THRU R3 * 73240002 * NO OTHER REGISTERS ARE USED IN THIS SEQUENCE. * 73260002 * * 73280002 *********************************************************************** 73300002 SPACE 2 73320002 */*DSJST: D (BAD,DSJSTRTN,GOOD,) TEST FOR GOOD TOD CLOCK */ 73340002 SPACE 2 73360002 ENTRY DSJSTCSR 73370002 DSJSTCSR DC 0H'0' 73370402 SPACE 2 73372002 */* P ESTABLISH LOCAL ADDRESSABILITY */ 73374002 SPACE 2 73376002 BALR R9,R0 LOCAL ADDRESSABILITY 73378002 USING *,R9 73378402 SPACE 2 73379602 */* P ESTABLISH MODULE ADDRESSABILITY */ 73379702 SPACE 2 73379802 L R9,DSBASEAD DISPATCHER BASE ENTRY 73379902 USING DSBASE,R9 ESTABLISH DISPATCHER ADDRESSABILITY 73386602 DSJST DC 0H'0' 73393302 * @YM05197 73396302 L R1,PSAPCCAV PCCA ADDRESS. 73400002 USING PCCA,R1 PCCA ADDRESSABILITY. 73420002 TM PCCATODE,PCCANUTD TEST FOR GOOD TOD CLOCK. 73440002 BC DSCC1,DSJSTCLR BAD CLOCK. BYPASS JOB STEP TIMING. 73460002 DROP R1 DROP PCCA ADDRESSABILITY. 73480002 * FALL THROUGH ON GOOD TOD CLOCK TO DO JOB STEP TIMING. 73500002 IEAVEDS1 DC 0H'0' 73580002 SPACE 2 73581002 */* D (YES,DSJSTSRB,NO,) SRB MODE? */ 73582002 SPACE 2 73583002 TM LCCADSF2,LCCASRBM SRB MODE? @YM07640 73584002 BO DSJSTSRB SRB MODE @YM07640 73585002 SPACE 2 73586002 */* D (YES,DSJSTCLR,NO,) RCT TASK? */ 73587002 SPACE 2 73588002 L R1,ASCBASXB ADDRESS THE ASXB @YM07640 73589002 L R2,ASXBFTCB-ASXB(R1) OBTAIN RCT'S ADDRESS @YM07640 73591002 C R2,PSATOLD IS CURRENT TASK THE RCT? @YM07640 73593002 BE DSJSTCLR RCT, DO NOT TIME @YM07640 73595002 SPACE 2 73600002 */* D (NO,DSJSTSTC,YES,) IS ENTRY FROM A FLIH? */ 73602002 SPACE 2 73604002 L R2,LCCAITOD IS INTERRUPT TIME STORED? @YM07640 73606002 LTR R2,R2 IF SO, R2 WILL HAVE A VALUE @YM07640 73612002 BZ DSJSTSTC NO, GO STORE TOD @YM07640 73618002 L R3,LCCAITOD+DSL4 OBTAIN FULL TOD VALUE @YM07640 73624002 SPACE 2 73630002 */*DSJST01: P SUBTRACT TOD AT DISPATCH (LCCADTOD) FROM TOD NOW */ 73640002 SPACE 2 73660002 DSJST01 DC 0H'0' 73680002 * LCCADTOD - TOD CLOCK AT DISPATCH. 73720002 SL R2,LCCADTOD LEFT HALF VALUES. 73740002 SL R3,LCCADTOD+DSL4 RIGHT HALF VALUES. 73760002 BC DSCC11,DSJST02 BRANCH IF CARRY. COMPLEMENTED SMALL 73780002 DST112 DC 0H'0' *** TEST LABEL *** 73800002 * VALUE ADDED TO ASCBEWST. 73820002 BCTR R2,DSI0 DECREMENT HIGH ORDER VALUE. 73840002 SPACE 2 73860002 */*DSJST02: P ADD TO ACCUMULATED JOB STEP TIME (ASCBEJST) */ 73880002 SPACE 2 73900002 DSJST02 DC 0H'0' 73920002 LM R0,R1,ASCBEJST ELAPSED JOB STEP TIME. 73940002 ALR R2,R0 LEFT HALF ELAPSED JOB STEP TIME. 73960002 ALR R3,R1 RIGHT HALF ELAPSED JOB STEP TIME. 73980002 BC DSCC12,DSJST03 BRANCH IF NO CARRY. 74000002 DST113 DC 0H'0' *** TEST LABEL *** 74020002 LA R2,DSI1(R2) INCREMENT HIGH ORDER VALUE. 74040002 SPACE 2 74060002 */*DSJST03: P (CHNG,DSJST01,OK,DSJSTRTN) C & S TO UPDATE ASCBEJST */ 74080002 SPACE 2 74100002 DSJST03 DC 0H'0' 74120002 CDS R0,R2,ASCBEJST C&S NEW ELAPSED JOB STEP TIME. 74140002 SPACE 2 74160002 */*DSJSTRTN: D (YES,DSJSTCLR,NO,DSJST01) DID CDS UPDATE EJST? */ 74180002 SPACE 2 74200002 DSJSTRTN DC 0H'0' 74220002 BC DSCC8,DSJSTCLR VALUE UPDATED - RETURN. @YM07640 74240002 L R2,LCCAITOD IS INTERRUPT TIME STORED? @YM07640 74244002 LTR R2,R2 IF SO, R2 WILL HAVE A VALUE @YM07640 74248002 BZ DSJSTLDC NO, GO STORE TOD @YM07640 74252002 L R3,LCCAITOD+DSL4 OBTAIN FULL TOD VALUE @YM07640 74256002 DST114 DC 0H'0' *** TEST LABEL *** 74260002 B DSJST01 VALUE WAS CHANGED - TRY AGAIN. 74280002 SPACE 2 74280102 */*DSJSTSTC: P (,DSJST01) STORE TOD CLOCK INTO ASCBEWST */ 74282002 SPACE 2 74282602 DSJSTSTC DC 0H'0' 74283202 STCK ASCBEWST TOD CLOCK VALUE NOW. @YM07640 74284002 DSJSTLDC DC 0H'0' 74284202 L R2,ASCBEWST OBTAIN TOD @YM07640 74284502 L R3,ASCBEWST+DSL4 OBTAIN TOD @YM07640 74285002 B DSJST01 CALCULATE ELASPED JST @YM07640 74285502 SPACE 3 74286002 *********************************************************************** 74287002 * DSJSTSRB - THIS ROUTINE CALCULATES JST FOR A SRB WHICH IS * 74288002 * ACCUMULATED SEPARATELY FROM JST FOR TASKS. * 74290002 *********************************************************************** 74292002 SPACE 2 74294002 */*DSJSTSRB: P CALCULATE JST FOR A SRB */ 74296002 SPACE 2 74298002 DSJSTSRB DC 0H'0' 74298402 STCK ASCBEWST STORE TOD @YM07640 74298802 SPACE 2 74299202 */*DSJST03A: P OBTAIN TOD */ 74299602 SPACE 2 74300002 DSJST03A DC 0H'0' 74300402 L R2,ASCBEWST OBTAIN TOD @YM07640 74300802 L R3,ASCBEWST+DSL4 OBTAIN TOD @YM07640 74301202 SL R2,LCCADTOD LEFT HALF VALUES. @YM07640 74301602 SL R3,LCCADTOD+DSL4 RIGHT HALF VALUES. @YM07640 74302002 BC DSCC11,DSJST03B BRANCH IF CARRY. COMPLEMENTED SMALL 74302402 BCTR R2,DSI0 DECREMENT HIGH ORDER VALUE. @YM07640 74302802 SPACE 2 74303202 */*DSJST03B: P ADD TO ACCUMULATED JOB STEP TIME (ASCBSRBT) */ 74303602 DSJST03B DC 0H'0' 74304002 LM R0,R1,ASCBSRBT ELAPSED JOB STEP TIME. @YM07640 74304402 ALR R2,R0 LEFT HALF ELAPSED JOB STEP TIME. 74304802 ALR R3,R1 RIGHT HALF ELAPSED JOB STEP TIME. 74306602 BC DSCC12,DSJST04 BRANCH IF NO CARRY. @YM07640 74307602 DST115 DC 0H'0' *** TEST LABEL *** @YM07640 74308602 LA R2,DSI1(R2) INCREMENT HIGH ORDER VALUE. @YM07640 74309602 SPACE 2 74312602 */*DSJST04: P (CHNG,DSJST01,OK,DSJSTRTS) C & S TO UPDATE ASCBEJST */ 74313602 SPACE 2 74314602 DSJST04 DC 0H'0' 74315602 CDS R0,R2,ASCBSRBT C&S NEW ELAPSED JST @YM07640 74320002 SPACE 2 74321002 */*DSJSTRTS: R RETURN */ 74322002 SPACE 2 74323002 DSJSTRTS DC 0H'0' 74324002 BCR DSCC8,RE VALUE UPDATED - RETURN. @YM07640 74325002 DST116 DC 0H'0' *** TEST LABEL *** 74326002 B DSJST03A VALUE CHANGED - TRY AGAIN. @YM07640 74327002 IEAVEDS2 DC 0H'0' 74328002 SPACE 2 74329002 */*DSJSTCLR: R CLEAR ITOD AND RETURN */ 74330002 DSJSTCLR DC 0H'0' 74331002 * THIS PROCESSING MUST BE OUTSIDE THE ENTRY POINTS IEAVEDS1 AND 74332002 * IEAVEDS2 DUE TO STOP RESTART SUBROUTINE (IEESTPRS) DEPENDIENCES. 74333002 SLR R1,R1 CLEAR R1 @YM07640 74334002 ST R1,LCCAITOD CLEAR ITOD @YM07640 74335002 BR RE RETURN TO CALLER @YM07640 74336002 TITLE 'IEAVEDS0 - VCONS/ADCONS' 74337002 *********************************************************************** 74340002 * * 74360002 * VCONS/ADCONS * 74380002 * * 74400002 *********************************************************************** 74420002 DSGSMQ DC V(IEAGSMQ) GLOBAL SERVICE MANAGER QUEUE 74440002 DSLSMQ DC V(IEALSMQ) LOCAL SERVICE MANAGER QUEUE 74460002 DSGSPL DC V(IEAGSPL) GLOBAL SERVICE PARAMETER LIST 74480002 DSWTCB DC V(IEAWTCB) WAIT TCB 74500002 DSWASCB DC V(IEAWASCB) WAIT ASCB 74520002 DSMASCB DC V(IEAMASCB) MASTER'S ASCB 74540002 DSCMSLK DC V(CMSLOCK) CMS LOCK 74560002 SPACE 74580002 DSLLREL DC V(LLREL) BASE ENTRY FOR LOCAL LOCK RELEASE 74584002 DSLLRELD DC V(LRELDISP) DISP ENTRY FOR LOCAL LOCK RELEASE 74588002 DSDISPLK DC V(DISPLOCK) DISP LOCKWORD ADDRESS @YM03564 74592002 AGSLDISP DC V(GSLSDISP) DISP ENTRY FOR DISP LOCK OBTAIN 74596002 DSVESC1 DC V(IEAVESC1) GLOBAL SCHEDULE ENTRY POINT 74600002 DSVESC2 DC V(IEAVESC2) LOCAL SCHEDULE ENTRY POINT 74620002 DS0EF03 DC V(IEA0EF03) STAGE 3 EXIT EFFECTOR ENTRY POINT 74640002 DSRSPN DC V(IEAVRSPN) TIMER RECOVERY SPIN ENTRY POINT 74680002 DSMS0 DC V(IEAVEMS0) MEMORY SWITCH ENTRY POINT 74700002 DSTRDISP DC V(TRDISP) TASK ENTRY TO TRACE 74720002 DSTRSRB1 DC V(TRSRB1) INITIAL SRB ENTRY TO TRACE 74740002 DSTRSRB2 DC V(TRSRB2) SUSPENDED SRB ENTRY TO TRACE 74760002 DSRMTR DC V(IEAVEFRE) SUSPENDED SRB'S RMTR ADDR 74770002 SPACE 74780002 DSBASEAD DC A(DSBASE) ADCON FOR DISPATCHER ADDRESSABILITY 74800002 TITLE 'IEAVEDS0 - CONSTANTS' 74820002 *********************************************************************** 74840002 * * 74860002 * CONSTANTS * 74880002 * * 74900002 *********************************************************************** 74920002 SPACE 74980002 DSHITIME DS 0D HIGH VALUE FOR CPU INTERVAL TIMER. 75000002 DC X'7FFFFFFFFFFFFFFF' HIGH VALUE FOR CPU INTERVAL TIMER. 75020002 SPACE 75040002 DSSRBPSW DC 0D'0' LEFT HALF OF SRB PSW WITH EC MODE 75060002 DC B'00000111000011000000000000000000' AND MCH BITS ON - 75080002 * USED TO BUILD PSW ON INITIAL 75100002 * SRB DISPATCH. 75120002 SPACE 75140002 DSCPUAFF DS 0F 75180002 DSINTPID DS 0F LOCAL LOCK INTERRUPT ID. 75220002 DC X'FFFFFFFF' LOCAL LOCK INTERRUPT ID. 75240002 SPACE 75260002 DSFOUR DC F'4' FOUR 75280002 SPACE 75300002 DSPREFIX DC A(-(TCB-TCBFRS)) TCB PREFIX DECREMENT VALUE 75320002 SPACE 75340002 DSABTIME DS 0F 22F ABEND CODE FOR TASKS USING CPU 75420002 DC X'8022F000' TIMER WHICH HAS GONE BAD. 75440002 SPACE 75460002 DSABAFFN DS 0F 072 ABEND CODE FOR SRB'S WHICH HAVE 75480002 DC X'80072000' SPECIFIED AFFINITY TO A CPU 75500002 * WHICH HAS GONE OFFLINE. 75520002 SPACE 75526002 DSWPSW DC X'070E000000000000' WAIT PSW @YM03464 75532002 SPACE 75540002 DSCELLID DC 0F'0' * CELL POOL 75560002 DC C'SRB' * ID FOR 75580002 DC X'00' * SUSPENDED SRB'S. 75600002 ACTONMSK DC X'80000000' TCBACTIV MASK CHECK @Z40FPXJ 75606040 ACTOFMSK DC X'7FFFFFFF' TCBACTIV MASK OFF @Z40FPXJ 75612040 ACTCPVOF DC AL1(255-(TCBACTIV)),X'FF0000' TCBACTIV/TCBCCPVI MASK OFF 75614040 * @ZA20174 75616040 TITLE 'IEAVEDS0 - ASCB' 75620002 IHAASCB 75640002 TITLE 'IEAVEDS0 - ASXB' 75660002 IHAASXB 75680002 TITLE 'IEAVEDS0 - IHSA' 75700002 IHAIHSA 75720002 TITLE 'IEAVEDS0 - FLC/PSA' 75740002 IHAPSA 75760002 TITLE 'IEAVEDS0 - LCCA' 75780002 IHALCCA 75800002 TITLE 'IEAVEDS0 - PCCA' 75820002 IHAPCCA 75840002 TITLE 'IEAVEDS0 - SRB/SSRB' 75860002 IHASSRB 75880002 TITLE 'IEAVEDS0 - WSAVT(GLOBAL)' 75900002 IHAWSAVT CLASS=GLOBAL,DSECT=YES 75920002 TITLE 'IEAVEDS0 - WSAVT(CPU)' 75940002 IHAWSAVT CLASS=CPU,DSECT=YES 75960002 TITLE 'IEAVEDS0 - TCB' 75980002 IKJTCB 76000002 TITLE 'IEAVEDS0 - RB' 76020002 IKJRB 76040002 TITLE 'IEAVEDS0 - TQE' 76060002 IHATQE 76080002 TITLE 'IEAVEDS0 - CSD' 76100002 IHACSD 76120002 TITLE 'IEAVEDS0 - CDAL' @ZA18126 76126040 CDAL @ZA18126 76132040 TITLE 'IEAVEDS0 - GSPL/LSPL' 76140002 IHASPL 76160002 TITLE 'IEAVEDS0 - FRRS' 76180002 IHAFRRS 76200002 TITLE 'IEAVEDS0 - CVT' 76220002 CVT DSECT=YES,LIST=YES 76240002 TITLE 'IEAVEDS0 - END' 76260002 */* END */ 76280002 END 76300002