* 00060040 TITLE 'IEAVESVC- SVC FIRST LEVEL INTERRUPT HANDLER' 00126602 * /* START OF SPECIFICATIONS **** 00127002 * 00127102 *01* MODULE-NAME = IEAVESVC 00129102 * 00129402 *02* CSECT-NAME = IEAVESVC 00129502 * 00130102 *01* DESCRIPTIVE-NAME = SVC FIRST LEVEL INTERRUPT HANDLER 00130302 * 00130802 *01* COPYRIGHT = NONE 00130902 * 00131802 *01* STATUS = VERSION 1 00131902 * 00132402 *01* FUNCTION = SEE ENTRY POINT PURPOSES BELOW. 00132502 * 00133102 *02* OPERATION = THE SVC FLIH WILL RECEIVE CONTROL VIA THE SVC NEW 00133202 * PSW AFTER AN SVC INTERRUPT. ITS MAIN FUNCTION IS TO DETERMINE 00133602 * IF THE ISSUER IS AUTHORIZED TO ISSUE THE SVC AND IF SO SET UP 00133702 * THE PROPER ENVIRONMENT ON BEHALF OF THE SVC ROUTINE AND THEN 00133802 * BRANCH TO THE ROUTINE. 00133902 * 00134002 *01* NOTES = SEE ENTRY POINT DESCRIPTIONS. 00134102 * 00134202 *02* DEPENDENCIES = 00134602 * 00134702 * GENERAL SVC FLIH DEPENDENCIES: 00135002 * 1. NO SVCS MAY BE ISSUED BY ANY BRANCH ENTRY. 00135102 * 2. SUPERVISOR STATE,KEY 0 MUST BE MAINTAINED ACROSS 00135202 * INTERFACES. 00135302 * 3. DISABLEMENT MUST BE PRESERVED BY ALL INTERFACES(EXCEPT 00135402 * LOCK MANAGER WHERE IT APPLIES). 00135502 * 4. THE SVCTABLE CAN NOT CHANGE DYNAMICALLY EXCEPT THE TYPE. 00135602 * IF THE TYPE IS CHANGED THE SVC ROUTINE MUST BE CAPABLE OF 00135702 * RUNNING AS EITHER TYPE. 00135802 * 00143102 * EXIT AND END OF TASK: 00143202 * 1. BOTH MUST RETURN THE SVRB TO THE SUPERVISOR SVRB 00143440 * POOL. 00143540 * 00144102 * SVC ROUTINES: 00144202 * 1. SVC ROUTINES AFTER COMPLETING THEIR FUNCTIONS MUST GO 00144402 * TO THE EXIT PROLOGUE(IEAVEXPR) VIA A BRANCH 14(OR PICK UP 00144602 * THE ADDRESS FROM CVTEXPRO). 00144802 * THE SOLE EXCEPTION TO THIS APPLIES TO TYPE 6 SVC @Z40FPYK 00144940 * ROUTINES WHICH MUST RETURN TO THE SVC FLIH. THIS @Z40FPYK 00145040 * MAY BE DONE BY A BR14 OR BY ISSUEING A T6EXIT @Z40FPYK 00145140 * MACRO. UNDER NO CONDITIONS MAY A TYPE 6 SVC @Z40FPYK 00145240 * RETURN TO EITHER EXIT OR EXIT PROLOGUE. @Z40FPYK 00145340 * 2. IF LOCKS WERE OBTAINED ON BEHALF OF AN SVC ROUTINE, A 00145440 * SETFRR MUST BE ISSUED UPON ENTRY TO THE SVC ROUTINE TO 00145540 * ESTABLISH RECOVERY. THIS MEANS THAT ALL TYPE 1 SVCS MUST DO 00145602 * THIS SINCE THEY ARE ALWAYS ENTERED WITH THE LOCAL LOCK. 00145802 * A TYPE 6 SVC ROUTINE MUST NOT EXIT TO THE SVC FLIH @Z40FPYK 00145940 * WHILE HOLDING ANY LOCKS. LOCKS WILL NOT BE @Z40FPYK 00146040 * RELEASED. @Z40FPYK 00146140 * 00146240 * GETMAIN(CONDITIONAL): 00146340 * 1. IF THE TCBABGM BIT IS ON, ALTHOUGH THE REQUEST WAS FOR 00146440 * LSQS, GETMAIN WILL SATISFY THE REQUEST FROM SQS IF LSQS HAS 00146540 * BEEN EXHAUSTED. IF NO SQS IS AVAILABLE, A NORMAL CODE 00146602 * IS SENT BACK FROM GETMAIN. 00146802 * 00146902 * RTM(ABTERM ENTRY): 00147002 * 1. THE LOCAL LOCK IS NOT NEEDED FOR THIS ENTRY SINCE THE 00147202 * ENTRY IS ENTERED DISABLED AND THE CURRENT TCB IS THE ONE TO 00147402 * BE TERMINATED. 00147602 * 2. ABTERM IS EXPECTED TO, IN ALL CASES SET THE TCBABGM BIT 00147802 * WHEN A TASK IS SET UP FOR ABNORMAL TERMINATION. IN THIS WAY 00148002 * ABEND MAY SAFELY ISSUE SVCS AND BE ASSURED THAT SVRBS WILL 00148202 * BE SUPPLIED TO SATISFY THE REQUEST. 00148402 * 00148502 * RTM(SVCERR ENTRY): 00148602 * 1. RTM WILL INITIATE SVC 13 PROCESSING, IF THE FRR STACK 00148802 * IS EMPTY, EVENTHOUGH THE ISSUER OF THE SVC 13 WAS LOCKED IN 00149002 * SOME WAY. RTM IN THIS CASE WILL FREE ALL OF THE LOCKS HELD 00149202 * AND PROCEED WITH SVC 13 PROCESSING AND USE THE COMPLETION 00149402 * CODE IN REGISTER 1 OF THE INTERRUPT SAVE AREA(LCCASGPR). 00149603 * 2. RTM MUST MOVE OR BE FINISHED WITH THE GENERAL REGISTER 00149802 * SAVE AREA LCCASGPR BEFORE ENABLEMENT IS ALLOWED. 00150003 * 3. IF AN SVC 13 WAS NOT THE SVC THAT WAS ISSUED, THEN RTM 00150202 * WILL USE THE COMPLETION CODE PASSED FROM THE SVC FLIH IN 00150402 * REGISTER 1. 00150602 * 00150702 * SYSGEN: 00150802 * 1. THE FOLLOWING VALIDITY CHECKING MUST BE DONE BY SYSGEN: 00151002 * A. TYPES 3 AND 4 CAN NOT INDICATE GLOBAL SPIN LOCKS IN 00151202 * THE SVC TABLE. 00151402 * B. TYPE 1 SVCS MUST INDICATE THE LOCAL LOCK IN THE 00151602 * SVC TABLE. 00151802 * C. AN SVC MAY NOT INDICATE THE CMS LOCK IN THE SVC 00152002 * TABLE WITHOUT ALSO INDICATING THE LOCAL LOCK. 00152202 * D. TYPE 6 SVC ROUTINES CAN NOT HAVE ANY LOCKS @Z40FPYK 00152340 * SPECIFIED IN THE SVC TABLE. @Z40FPYK 00152440 * 2. THE SVC TABLE WILL BE A FULL 256 ENTRY TABLE. THE TABLE 00152540 * WILL CONTAIN AN ENTRY POINT ADDRESS FOR EVERY SVC NUMBER. 00152602 * IF THE SVC NUMBER IS AN INVALID NUMBER, THE SVC MUST BE 00152802 * DESIGNATED AS A TYPE 2 SVC WITH NO LOCKS REQUIRED UPON 00153002 * ENTRY AND AN ENTRY POINT ADDRESS TO IGCERROR. 00153202 * 3. THE SVC TABLE MUST REFLECT LOCKING REQUIREMENTS RATHER 00153402 * THAN THE ENABLED-DISABLED FLAG. 00153602 * 4. AN ENTRY STATEMENT MUST BE SUPPLIED TO THE BEGINNING 00153802 * OF THE SVC TABLE CALLED SVCTABLE. 00154002 * 5. THE FORMAT OF THE SVC TABLE MUST BE AS FOLLOWS: 00154202 * TWO FULL WORD ENTRIES. 00154402 * WORD BITS 00154602 * 1 0-31 ENTRY POINT ADDRESS 00154802 * 2 0-3 SVC TYPE: 0=TYPE 1 00155002 * 2=TYPE 6 @Z40FPYK 00155240 * 8=TYPE 2 @Z40FPYK 00155440 * C=TYPE 3/4 @Z40FPYK 00155540 * 2 4 FUNCTION CODE(APF AUTHORIZED) 00155602 * 1=AUTHORIZED,0=UNAUTHORIZED 00155802 * 2 5 SVC IS PART OF ESR 00155903 * 2 6 SVC IS NON-PREEMPTIVE @Z40FPYK 00156040 * 2 7-15 RESERVED @Z40FPYK 00156140 * 2 16 LOCAL LOCK TO BE ACQUIRED 00156340 * 2 17 CMS LOCK TO BE ACQUIRED 00156402 * 2 18 SRM LOCK TO BE ACQUIRED 00156602 * 2 19 SALLOC LOCK TO BE ACQUIRED 00156802 * 2 20 DISP LOCK TO BE ACQUIRED 00157002 * 2 21-31 RESERVED FOR LOCKS 00157202 * 00157402 * EXTENDED SVC ROUTER: 00157503 * 1. ESR TABLE FORMAT: 00157603 * A . AN EXSVC TABLE (ESRTABLE) EXTERNAL TO ESR RESIDES 00158703 * IN THE NUCLEUS, CONTAINING A TWO WORD ENTRY FOR 00178203 * EVERY EXTENDED SVC DEFINED TO THE SYSTEM. 00178303 * B . THE ESRTABLE IS DIVIDED INTO FIVE SECTIONS: 00178403 * 1. MODID CONTAINING THE C-SECT NAME ESRTABLE IN 00178503 * EBCDIC. 00178603 * 2. HEADER FIELD CONTAINS 4 HALFWORDS OF INFORMATION 00178703 * USED BY NIP. 00178803 * 3. TYPE IV SECTION CONTINING ENTRIES FOR ALL 00178903 * EXSVCS INVOKED BY SVC 109. 00179003 * 4. TYPE I SECTION CONTAINING ENTRIES FOR ALL 00179103 * EXSVCS INVOKED BY SVC 116. 00179203 * 5. TYPE II SECTION CONTAINING ENTRIES FOR ALL 00179303 * EXSVCS INVOKED BY SVC 122. 00179403 *03* CHARACTER-CODE-DEPENDENCIES = NONE 00179503 * 00179703 *02* RESTRICTIONS = NONE 00179903 * 00180003 *02* REGISTER-CONVENTIONS = REFERENCE EQUATE SECTION IN MODULE. 00181203 * 00181603 *02* PATCH-LABEL = NONE(NUCLEUS RESIDENT) 00182003 * 00183302 *01* MODULE-TYPE = PROCEDURE 00183803 * 00184203 *02* PROCESSOR = ASSEMBLER 00185403 * 00186102 *02* MODULE-SIZE = REFERENCE ESD LENGTH AT BEGINNING OF MODULE. 00186303 * 00187003 *02* ATTRIBUTES = NUCLEUS, ZERO PROTECT KEY, DISABLED, REFRESHABLE, 00187703 * ADDRSPC=FIXED,SUPERVISOR MODE. 00188903 * 00189603 *01* ENTRY-POINT = IEAQSC00 00189703 * 00191003 *02* PURPOSE = THIS IS THE MAIN ENTRY INTO THE SVC INTERRUPT 00191103 * HANDLER. IT WILL DECIDE WHETHER THE ISSUER CAN ISSUE SVCS, IF 00192003 * THE ISSUER IS AUTHORIZED, WHAT TYPE OF SVC IS ASKED FOR AND 00192603 * SET UP THE PROPER INPUT ENVIRONMENT FOR THE ROUTINE. 00193403 * 00194503 *02* LINKAGE = SEE INPUT SECTION BELOW. 00195203 * 00195903 *02* INPUT = 00196603 * INPUT ENVIRONMENT: 00196703 * STATE- DISABLED,SUPERVISOR 00197503 * KEY-0 00198203 * LOCKS REQUIRED-NONE 00198903 * INPUT DATA: 00199603 * SVC OLD PSW-LOCATION DECIMAL 32. 00200403 * SVC INTERRUPT CODE-LOCATION DECIMAL 138. 00201103 * ILC-LOCATION DECIMAL 136-137. 00202203 * SEE CONTROL-BLOCKS SECTION BELOW FOR CONTROL BLOCK INPUTS. 00202303 * INPUT REGISTERS: 00203603 * NONE 00204303 * 00205003 *02* OUTPUT = NONE UNIQUE TO THIS ENTRY 00205103 * 00206003 *01* ENTRY POINT NAME: IGXERROR 00206603 * MODE OF ENTRY: BRANCH ENTRY 00206903 * SOURCE OF ENTRY POINT: VIA ADDRESS IN ESR TABLE 00207003 * MACRO TO INVOKE FUNCTION: NONE 00207203 *02* FUNCTION PROVIDED: 00207503 * THIS ENTRY IS TAKEN VIA A BRANCH INSTRUCTION FROM 00208103 * THE SVC INTERRUPT HANDLER MAINLINE. IT WAS TAKEN 00208203 * AS A RESULT OF OBTAINING THE ADDRESS FROM THE ESR 00208303 * TABLE AS THE ENTRY POINT TO THE EXSVC ROUTINE. IT 00208403 * PROVIDES THE COMPLETION CODE PLUS AN ENTRY TO SVC 00208503 * 13. 00208703 *02* INPUT ENVIRONMENT: 00209003 * STATE: ENABLED, SUPERVISOR STATE 00209303 * KEY: 0 00209903 * LOCKS REQUIRED: NONE 00210003 * INPUT DATA: 00210503 * ALL AS NORMALLY RECEIVED BY AN SVC ROUTINE. 00210703 * INPUT REGISTERS: 00211003 * ALL AS NORMALLY RECEIVED BY AN SVC ROUTINE. 00211103 * ENVIRONMENT CHANGES: NONE 00211203 * FUNCTIONS CALLED: 00211303 * SVC 13 00211703 *02* EXIT POINTS: 00211803 * TO: SVC 13 00211903 * 00212003 * OUTPUT DATA - AS ON ENTRY 00212203 * OUTPUT REGISTERS - 00212403 * 1 - COMPLETION CODE 00212603 * OUTPUT ENVIRONMENT - 00213103 * ENABLED, SUPERVISOR STATE 00213203 * KEY 0 00213303 * UNLOCKED 00213403 * RETURN CODES - NONE 00213703 * 00214003 *02* ABEND CODES: 00214603 * X'16D' - INVALID OR UNSUPPORTED EXSVC ISSUED 00215003 *01* ENTRY-POINT = IGCERROR 00215103 * 00215203 *02* PURPOSE = THIS ENTRY IS TAKEN VIA A BRANCH INSTRUCTION FROM 00215303 * THE SVC INTERRUPT HANDLER MAINLINE. IT WAS TAKEN AS A RESULT 00215403 * OF OBTAINING THE ADDRESS FROM THE SVC TABLE AS THE ENTRY POINT 00215503 * TO THE SVC ROUTINE. IT PROVIDES THE COMPLETION CODE PLUS AN 00215603 * ENTRY TO SVC 13. 00215703 * 00215803 *02* LINKAGE = SEE INPUT SECTION BELOW. 00215903 * 00216003 *02* INPUT = 00216103 * INPUT ENVIRONMENT: 00216203 * STATE-ENABLED,SUPERVISOR 00216303 * KEY-0 00216403 * LOCKS REQUIRED-NONE 00216703 * INPUT DATA: 00217003 * ALL AS NORMALLY RECEIVED BY SVC ROUTINE. 00218203 * INPUT REGISTERS: 00218803 * ALL AS NORMALLY RECEIVED BY SVC ROUTINE. 00219403 * 00220003 *02* OUTPUT = NONE UNIQUE TO THIS ENTRY. 00220903 * @Z40FPYK 00221040 *01* ENTRY-POINT = IEAVET6E @Z40FPYK 00221140 * @Z40FPYK 00221240 *02* PURPOSE = THIS ENTRY IS TAKEN VIA ISSUING A T6EXIT @Z40FPYK 00221340 * MACRO FROM A TYPE 6 SVC ROUTINE. THE ROUTINE MAY @Z40FPYK 00221440 * REUTRN SELECTING ONE OF THREE OPTIONS--RETURN TO THE @Z40FPYK 00221540 * CALLER, EXIT TO THE DISPATCHER FUNCTION, OR SCHEDULE @Z40FPYK 00221640 * AN SRB. @Z40FPYK 00221740 * @Z40FPYK 00221840 *02* LINKAGE = SEE INPUT SECTION BELOW. @Z40FPYK 00221940 * @Z40FPYK 00222040 *02* INPUT = @Z40FPYK 00222140 * INPUT ENVIRONMENT: @Z40FPYK 00222240 * STATE-DISABLED,SUPERVISOR @Z40FPYK 00222340 * KEY-0 @Z40FPYK 00222440 * LOCKS REQUIRED-NONE MUST BE HELD @Z40FPYK 00222540 * INPUT DATA: @Z40FPYK 00222640 * EXIT OPTION SELECTED BY THE TYPE 6 ROUTINE. @Z40FPYK 00222740 * INPUT REGISTERS: @Z40FPYK 00222840 * EXIT OPTION IS INDICATED AS FOLLOWS: @Z40FPYK 00222940 * REGISTER 1 HAS SRB ADDRESS IF RETURN=SRB @Z40FPYK 00223040 * REGISTER 2 HAS AN EIGHT IF RETURN=SRB @Z40FPYK 00223140 * REGISTER 2 HAS A FOUR IF RETURN=DISPATCH @Z40FPYK 00223340 * REGISTER 2 HAS A ZERO IF RETURN=CALLER @Z40FPYK 00223440 * @Z40FPYK 00224140 *02* OUTPUT = NONE UNIQUE TO THIS ENTRY. 00224240 * 00224340 *01* EXIT-NORMAL = EXIT PROLOGUE(IEAVEEXP) IF RETURN=CALLER @Z40FPYK 00224440 * 00224540 *02* CONDITIONS = IF THE TYPE 6 SVC ROUTINE DOES A BR14 OR @Z40FPYK 00224640 * A T6EXIT RETURN=CALLER, THE SVC FLIH @Z40FPYK 00224740 * WILL EXIT TO EXIT PROLOGUE IN ORDER TO @Z40FPYK 00224840 * RE-DISPATCH THE TASK (IF DISPATCHABILITY)@Z40FPYK 00224940 * TESTS ARE MET. @Z40FPYK 00225040 * 00225340 *02* OUTPUT = @Z40FPYK 00225440 * REGISTERS 0,1, AND 15 ARE RETAINED FOR @Z40FPYK 00225540 * THE CALLER FROM THE SVC @Z40FPYK 00225640 * OUTPUT REGISTERS - @Z40FPYK 00225740 * R0,R1,R2,R3=UNUSED @Z40FPYK 00225840 * R4=TCB ADDRESS @Z40FPYK 00225940 * R5,R6=UNUSED @Z40FPYK 00226040 * R7=ASCB ADDRESS @Z40FPYK 00226140 * R8,R9,R10,R11,R12,R13=UNUSED @Z40FPYK 00226240 * R14=EPA OF EXIT PROLOGUE @Z40FPYK 00226340 * R15=UNUSED @Z40FPYK 00226440 * @Z40FPYK 00226540 *02* RETURN-CODES = NONE @Z40FPYK 00226640 * @Z40FPYK 00226740 *01* EXIT-NORMAL = DISPATCHER (GLOBAL SRB DISPATCH ROUTINE) @Z40FPYK 00226840 * 00226940 *02* CONDITIONS = IF THE TYPE 6 SVC ROUTINE DOES A @Z40FPYK 00227040 * A T6EXIT RETURN=SRB, THE SVC FLIH @Z40FPYK 00227140 * WILL GO TO THE GLOBAL SRB DISPATCHER @Z40FPYK 00227240 * ROUTINE IN ORDER TO DISPATCH THE SRB @Z40FPYK 00227340 * IMMEDIATELY. @Z40FPYK 00227440 * 00227540 *02* OUTPUT = @Z40FPYK 00227640 * NO SPECIAL OUTPUT @Z40FPYK 00227740 * OUTPUT REGISTERS - @Z40FPYK 00227840 * R0,R1=UNUSED @Z40FPYK 00227940 * R2=SRB ADDRESS @Z40FPYK 00228040 * R3,R4=UNUSED @Z40FPYK 00228140 * R5=ASCB ADDRESS @Z40FPYK 00228240 * R6=UNUSED @Z40FPYK 00228340 * R7=LCCA ADDRESS @Z40FPYK 00228440 * R8=UNUSED @Z40FPYK 00228540 * R9=DISPATCHER BASE ADDRESS @Z40FPYK 00228640 * R10,R11,R12,R13,R14=UNUSED @Z40FPYK 00228740 * R15=DISPATCHER ENTRY POINT @Z40FPYK 00228840 * @Z40FPYK 00228940 *02* RETURN-CODES = NONE @Z40FPYK 00229040 * @Z40FPYK 00229140 *01* EXIT-ERROR = RTM @Z40FPYK 00229240 * @Z40FPYK 00229340 *02* CONDITIONS = THE ISSUER OF THE SVC WAS IN SRB MODE @Z40FPYK 00229440 * OWNED A LOCK OR MADE AN ILLEGAL T6EXIT @Z40FPYK 00229540 * REQUEST THAT A GOLBAL SRB BE SCHEDULED @Z40FPYK 00229640 * @Z40FPYK 00229740 *02* OUTPUT = 00230140 * OUTPUT DATA-LCCASGPR(CONTAINS SAVED REGS),PLUS HARDWARE INFO. 00230240 * OUTPUT REGISTERS- 1-CONTAINS COMPLETION CODE 00230340 * OUTPUT ENVIRONMENT-DISABLED,KEY 0,SRB OR LOCKED OR BOTH. 00230440 * 00230540 *02* RETURN-CODES = NONE 00230640 * 00230740 *01* EXIT-NORMAL = SVC ROUTINE 00230803 * 00231403 *02* CONDITIONS = AFTER ALL OF THE NECESSARY SET UP ON BEHALF OF 00232003 * THE SVC ROUTINE HAS BEEN MADE , A BRANCH TO THE SVC ROUTINE IS 00232603 * MADE VIA ITS CORRESPONDING ADDRESS IN THE SVC TABLE. 00233503 * 00234403 *02* OUTPUT = 00235003 * OUTPUT DATA-SVRB SET UP(FOR NON-TYPE1) 00235603 * OUTPUT REGISTERS- 00236203 * 3=CVT ADDRESS 00236803 * 4=TCB ADDRESS 00237403 * 5=RB ADDRESS(SVRB IF NON-TYPE1) 00238003 * 6=ENTRY POINT ADDRESS 00238903 * 7=ASCB ADDRESS 00239803 * 14=RETURN ADDRESS 00240403 * 0,1,13,15 AS AT ENTRY TO SVC FLIH 00241003 * OUTPUT ENVIRONMENT- 00241603 * ENABLED OR DISABLED(DEPENDING ON LOCKS REQUESTED) 00242503 * SUPERVISOR STATE 00243403 * KEY 0 00244003 * LOCKS AS INDICATED IN SVC TABLE. 00244603 * 00245203 *02* RETURN-CODES = NONE 00246103 * 00247003 *01* EXIT-ERROR = SVC 13 00247603 * 00248203 *02* CONDITIONS = TO ABEND THE CURRENT TASK DUE TO A LOCK MANAGER 00248803 * FAILURE(OTHER THAN LOCAL LOCK). OR TO ABEND THE CURRENT TASK 00249403 * DUE TO ISSUANCE OF AN INVALID SVC. 00250003 * 00250603 *02* OUTPUT = 00251503 * OUTPUT DATA- REGS IN TCB(OR SVRB IF NON-TYPE1). PSW IN 00252403 * RBOPSW FIELD. 00253003 * OUTPUT REGISTERS-1=COMPLETION CODE 00253603 * OUTPUT ENVIRONMENT- 00254203 * ENABLED OR DISABLED (DEPENDING ON LOCK STATUS) 00255103 * SUPERVISOR STATE 00256003 * KEY 0 00256603 * ANY LOCKS HELD 00257203 * 00257803 *02* RETURN-CODES = NONE 00258703 * 00259603 *01* EXIT-ERROR = IEAPDS7 (DISPATCHER) 00260203 * 00260803 *02* CONDITIONS = MEMORY TERMINATION HAS BEEN INITIATED DUE TO A 00261403 * FAILURE IN THE LOCK MANAGER IN GETTING THE LOCAL LOCK. SINCE 00262003 * THE SVC INTERRUPT HANDLER IS OPERATING AS A PROLOGUE TO THE 00262603 * SVC ROUTINE, THE NORMAL EXIT TO DISPATCHER IS APPROPRIATE. 00263203 * 00264003 *02* OUTPUT = 00264803 * OUTPUT DATA-NONE 00265403 * OUTPUT REGISTERS-NONE 00266003 * OUTPUT ENVIRONMENT- 00267203 * ENABLED,KEY 0 00267803 * SUPERVISOR STATE,UNLOCKED 00268403 * 00269003 *02* RETURN-CODES = NONE 00269603 * 00270203 *01* EXTERNAL-REFERENCES = SEE ROUTINES,DATA AREAS,CONTROL-BLOCKS 00271403 * BELOW. 00272003 * 00272603 *02* ROUTINES = 00273203 * SVC 13 00273803 * RTM(SVCERR) 00274403 * RTM(ABTERM) 00275603 * RTM(MEMTERM) 00276203 * TRSVC(TRACE ENTRY) 00276803 * GETCELL 00277403 * GETMAIN(COND AND UNCOND FOR LSQS) 00278003 * BLDCPOOL 00278603 * SETLOCK(OBTAIN/RELEASE) 00279803 * TESTAUTH 00280403 * IEAPDS7(DISPATCHER ENTRY) 00281003 * DSJSTCSR(DISPATCHER JOB STEP TIMING ENTRY POINT) @Z40FPYK 00281140 * DSSRBRTN(DISPATCHER GLOBAL SRB DISPATCHER ROUTINE) @Z40FPYK 00281240 * EXPEPAT6(EXIT PROLOGUE TYPE 6 SVC EXIT ENTRY POINT) @Z40FPYK 00281340 * 00281603 *02* DATA-AREAS = ALL INCLUDED IN CONTROL-BLOCKS BELOW. 00282203 * 00282803 *02* CONTROL-BLOCKS = 00284003 * PSA R/W 00284603 * LCCA R/W 00285203 * ASCB R/W 00285803 * TCB R/W 00286403 * RB R/W 00287003 * CVT R 00288203 * SVC TABLE R 00288803 * ASXB R 00289403 * ESRTABLE R 00290003 *01* TABLES = NONE 00290603 * 00291203 *01* MACROS = 00292403 * ABEND 00293003 * GETMAIN 00293603 * BLDCPOOL 00294203 * TESTAUTH 00294803 * SETLOCK 00295403 * CALLRTM 00296603 * GETCELL 00297203 * HOOK 00297803 * 00298403 *02* SERIALIZATION = 00299003 * DISABLE 00299603 * TCB ACTIVE BIT 00300803 * SVRB NOT ON QUEUE 00301403 * 00302003 *01* CHANGE-ACTIVITY = Y02715,Y02751,Y02752,Z40FPYK @Z40FPYK 00302640 * OZ09430 - VERIFY THAT THE COMPUTED @ZA29595 00303240 * ADDRESS OF THE ESR TABLE @ZA29595 00303340 * ENTRY IS NOT BEYOND THE END @ZA29595 00303440 * OF THE ESR TABLE. @ZA29595 00303540 * OZ12726 - VERIFY THAT THE COMPUTED @ZA29595 00303640 * ADDRESS OF THE ESR TABLE @ZA29595 00303740 * ENTRY IS NOT BEFORE THE @ZA29595 00303840 * BEGINNING OF THE ESR TABLE. @ZA29595 00303940 * OZ13392 - WHEN EXPANDING THE SVRB POOL,@ZA29595 00304040 * CLEAR THE SCB AND ITS PARM @ZA29595 00304140 * AREA IN THE SVRB'S. @ZA29595 00304240 * OZ15765 - PURGE THE FRR STACK UPON @ZA29595 00304340 * RETURN FROM A TYPE 6 SVC @ZA29595 00304440 * OZ20352 - VERIFY THAT AN SRB RETURNED @ZA29595 00304540 * BY A TYPE 6 SVC DOES NOT @ZA29595 00304640 * HAVE CPU AFFINITY TO A @ZA29595 00304740 * DIFFERENT PROCESSOR. @ZA29595 00304840 * OZ29595 - WHEN A SINGLE SVRB IS GOTTEN @ZA29595 00304940 * FOR ABEND, MARK IT SO IT @ZA29595 00305040 * WILL BE FREED BY EXIT @ZA29595 00305140 * PROLOGUE, BECAUSE IT MAY BE @ZA29595 00305240 * GOTTEN FROM SQA. @ZA29595 00305340 * 00305440 *01* MESSAGES = NONE 00305540 * 00305640 *01* ABEND-CODES = 00305740 * X'047'-UNAUTHORIZED ISSUER OF SVC. 00306203 * X'0F8'-SRB MODE OR LOCKS WERE HELD. 00306803 * X'0F9'-UNABLE TO EXPAND SVRB POOL. 00307403 * X'0FA'-UNABLE TO OBTAIN SVRB STORAGE FOR ABTERM IN PROCESS. 00308003 * X'16D'-INVALID OR UNSUPPORTED EXSVC ISSUED. 00308603 * X'FXX'-UNDEFINED SVC ISSUED.(XXX IS NUMBER) 00309203 * 00309803 **** END OF SPECIFICATIONS ***/ 00310403 EJECT 00311003 *********************************************************************** 00311603 * * 00312203 * IEAVESVC MAINLINE * 00312803 * * 00313403 *********************************************************************** 00314902 IEAVESVC CSECT 00364902 MODID BR=NO 00523002 SPACE 2 00523402 */*IEAVESVC: CHART SVC FLIH */ 00523802 */* HEADER 00524202 */* 00524302 */* 00524402 */* 00530302 */* SECTION 3.1.8.1 00532302 */* SVC FLIH 00534302 */* PAGE # */ 00536302 SPACE 2 00536702 */*IEAQSC00: E IEAQSC00 */ 00537502 SPACE 2 00537602 ENTRY IEAQSC00 00537702 IEAQSC00 DS 0H 00537902 USING PSA,0 00543802 SPACE 2 00549202 */* P SAVE ONE REG TO GET LCCA ADDR IN PSAGPREG */ 00549602 SPACE 2 00551402 ST CCABASE,PSAGPREG SAVE ONE REGISTER IN PSA 00555202 SPACE 2 00555302 */* P SAVE ALL REGS IN LCCASGPR */ 00555403 SPACE 2 00555502 L CCABASE,PSALCCAV GET ADDRESS OF LOGICAL CCA 00555602 USING LCCA,CCABASE ESTABLISH BASE TO LCCA 00561502 STM R0,R15,LCCASGPR SAVE ALL REGISTERS @YA02598 00567403 L WORKREG,PSAGPREG GET REGISTER SAVED INITIALLY 00573302 ST WORKREG,LCCASGPR+C28 SAVE REGISTER USED @YA02598 00585103 SPACE 2 00589202 */* P ESTABLISH ADDRESSABILITY */ 00589602 SPACE 2 00591202 BALR BASEREG,C0 ESTABLISH 00596902 USING *,BASEREG ADDRESSABILITY 00608702 SPACE 2 00612002 */*SRBTST: D (YES,SVCINV,NO,) SRB MODE? */ 00612402 SPACE 2 00614002 SRBTST DC 0H'0' TEST LABEL 00614602 TM LCCADSF2,LCCASRBM IS SRB MODE INDICATED 00620502 BO SVCINV IF SO,INVALID ISSUER 00626402 SPACE 2 00632702 */*LOCKTST: L (NO,,YES,SVCINV) SETLOCK-- ANY LOCKS HELD? */ 00634302 SPACE 2 00636302 LOCKTST DC 0H'0' TEST LABEL 00638202 SETLOCK TEST,TYPE=ALL,REGS=(WORKREG2),BRANCH=(HELD,SVCINV) 00640202 * ANY LOCKS HELD? 00642202 SPACE 2 00652002 */* D (YES,SVCPROC,NO,SVCINV) USER ENABLED? */ 00652402 SPACE 2 00654002 TM FLCSOPSW,ENABLE WAS USER ENABLED? 00656002 BNO SVCINV NO GO CALL RTM @Z40FPYJ 00680040 SPACE 2 00802002 */*SVCPROC: P MAKE SVC FLIH STACK CURRENT */ 00804002 SPACE 2 00806002 SVCPROC L WORKREG,PSASSTK GET SVC FLIH STACK PTR 00810002 ST WORKREG,PSACSTK MAKE SVC FLIH STACK CURRENT 00820002 SPACE 2 00830002 */* P SET SVC FLIH BIT PSASVC=1 */ 00840002 SPACE 2 00842002 OI PSASUP1,PSASVC TURN SVC FLIH FLAG ON 00850002 SPACE 2 00860002 */* P GET CVTTRACE FROM CVT INTO REG 11 */ 00862002 SPACE 2 00870002 L CVTREG2,FLCCVT GET CVT ADDRESS 00900002 USING CVT,CVTREG2 ESTABLISH BASE TO CVT 00950002 SPACE 2 00952002 */* D (NO,GTFHOOK,YES,) SHOULD TRACE BE ENTERED? */ 00952402 SPACE 2 00954002 CLI CVTTRACE+C1,CXFA IS TRACE TO BE ENTERED 00960002 BNE GTFHOOK IF NOT DONT TRACE 00970002 SPACE 2 00980102 */* P GET TRSVC ENTRY POINT TO TRACE IN REG 10 */ 00990102 SPACE 2 00992102 L XTRBASE,ATRSVC GET SVC TRACE ENTRY ADDRESS 01000002 SPACE 2 01052002 */*TRACEEP: L TRACE-- VIA BALR 11,10 */ 01052402 SPACE 2 01054002 TRACEEP DC 0H'0' TEST LABEL 01060002 BALR XTRET,XTRBASE GO TO TRACE 01100002 DROP CVTREG2 01110002 SPACE 2 01112002 */*GTFHOOK: L HOOK-- ISSUE HOOK EID=IEASVCH TYPE=P */ 01112402 SPACE 2 01114002 GTFHOOK DC 0H'0' TEST LABEL 01120002 HOOK EID=IEASVCH,TYPE=P GTF TRACE SVC INTERRUPT 01150002 SPACE 2 01160002 */* P GET TCB ADDR FROM PSATOLD IN REG 4 */ 01162002 SPACE 2 01170002 L XTCBREG,PSATOLD GET CURRENT TCB ADDRESS 01200002 USING TCB,XTCBREG ESTABLISH BASE TO TCB 01250002 SPACE 2 01310002 */* P GET RB ADDR FROM TCBRBP IN REG 5 */ 01312002 SPACE 2 01320002 L RBPTR,TCBRBP GET CURRENT RB ADDRESS 01350002 SPACE 2 01360002 */* P SAVE SVCOPSW IN RBOPSW */ 01362002 SPACE 2 01370002 USING RBSECT,RBPTR ESTABLISH BASE TO RB 01400002 MVC RBOPSW(L8),FLCSOPSW SAVE PSW IN RB 01450002 LR XRBPRFX,RBPTR TRANSFER RB ADDRESS 01500002 S XRBPRFX,KRBPRFXL GET PTR TO RB PREFIX 01550002 DROP RBPTR 01600002 USING RBPRFXST,XRBPRFX ESTABLISH BASE TO RB PREFIX 01650002 SPACE 2 01660002 */* P SAVE SVCILC IN RBINLNTH AND SVCNUM IN RBINTCOD */ 01680002 SPACE 2 01690002 IC SVCNREG,FLCSVILC GET SVC INSTRUCTION LENGTH 01700002 STC SVCNREG,RBINLNTH STORE IN THE RB 01750002 LH SVCNREG,FLCSVCN GET THE SVC NUMBER 01760002 STH SVCNREG,RBINTCOD STORE IN THE RB PREFIX 01770002 DROP XRBPRFX 01800002 SPACE 2 01801040 */* D (YES,SVCSCREN,NO,) IS SVC SCREENING ACTIVE? */ 01802040 SPACE 2 01803040 TM TCBFLGS7,TCBSVCS CHECK FOR SVC SCREENING @Z40EPVC 01804040 BO SVCSCREN ACTIVE -- DO SCREENING @Z40EPVC 01805040 SPACE 2 01810002 */*SVCTENTY: P GET SVCTABLE ENTRY FROM SVC TABLE */ @Z40FPYK 01812040 SPACE 2 01820002 SVCTENTY DS 0H @Z40FPYK 01860040 SLL SVCNREG,C3 MULTIPLY SVC NUMBER BY 8 01900002 A SVCTABET,SVCTAB GET ADDRESS OF SVC ENTRY 01950002 USING SVCENTRY,SVCTABET ESTABLISH BASE TO SVC ENTRY 02000002 SPACE 2 02000203 */* D (YES,SVCEXT,NO,) ESR APF OR N/P BIT ? */ @Z40FPYK 02000440 SPACE 2 02000603 TM SVCATTR1,SVCAPF+SVCESR+SVCNP CHECK FOR ESR,APF, @Z40FPYK 02000840 * OR N/P BIT ON IN ENTRY @Z40FPYK 02050840 BNZ SVCEXT IF NOT ON CONTINUE PROCESSING 02594040 SPACE 2 02602002 */*SVCOK: P GET ASCB ADDR FROM PSAAOLD */ 02602402 SPACE 2 02604002 SVCOK LR CCABASE2,CCABASE SAVE LCCA ADDRESS 02610002 L XASCBREG,PSAAOLD GET CURRENT ASCB ADDRESS 02650002 USING ASCB,XASCBREG ESTABLISH BASE TO ASCB 02700002 USING LCCA,CCABASE2 02702002 SPACE 2 02704002 */*TYPTST: D (YES,,NO,SVCCELL) IS SVC A TYPE 1 ? */ @Z40FPYK 02704440 SPACE 2 02706002 TYPTST DC 0H'0' TEST LABEL 02710002 TM SVCATTR1,CXF0-SVCTP1 IS SVC TYPE 1 02750002 BNZ SVCCELL IF NOT, PROCESS TYPE 2, @Z40FPYJ 02770040 * 3, 4, OR 6 02800040 SPACE 2 @Z40FPYK 02800340 EJECT @Z40FPYK 02800440 ************************************************************** @Z40FPYK 02800540 * * @Z40FPYK 02800640 * ROUTINE TO PROCESS TYPE 1 SVC * @Z40FPYJ 02800740 * * @Z40FPYK 02800940 ************************************************************* @Z40FPYK 02801040 SPACE 2 @Z40FPYK 02801140 */*SVC1: S GETRTN:INTERNAL ROUTINE TO GET LOCK */ 02801240 SPACE 2 02801340 SVC1 MVC TCBGRS(L64),LCCASGPR MOVE THE GENERAL REGS TO THE TCB 02801440 * @YA02598 02801540 L R13,LLCO GET ENTRY POINT TO LOCK MANAGER 02801640 BALR RETREG,R13 OBTAIN LOCAL LOCK CONDITIONALLY 02801740 LTR R13,R13 CHECK IF LOCK OBTAINED OK 02801840 BNZ BACKUP IF NOT BACK UP INSTRUCTION 02802040 SPACE 2 02802240 */* P SET TYPE1 SWITCH */ 02802440 SPACE 2 02802640 OI ASCBFLG1,ASCBTYP1 TURN ON TYPE 1 SVC FLAG 02802840 LA R1,TCBGRS POINT REG1 TO SVC ISSUER REGS 02803040 SPACE 2 02803240 */* P CLEAR SVC FLIH BIT */ 02803440 SPACE 2 02803640 NI PSASUP1,CXFF-PSASVC CLEAR SVC FLIH BIT 02803840 SPACE 2 02804040 */* P MAKE FRR NORMAL STACK CURRENT */ 02804240 SPACE 2 02804440 L WORKREG2,PSANSTK GET NORMAL STACK PTR 02804640 ST WORKREG2,PSACSTK MAKE NORMAL CURRENT PTR 02804840 SPACE 2 02805040 */*ENABLE1: P ENABLE PSW FOR I/O & EXT INT */ 02805240 SPACE 2 02805440 ENABLE1 DC 0H'0' TEST LABEL 02805640 STOSM LCCAPSMK,ENABLE ENABLE THE PSW 02805840 SPACE 2 02806040 */*INSLOCK: D (NO,SVCENTPT,YES,CMSCK) ANY MORE LOCKS/ */ 02806240 SPACE 2 02806440 INSLOCK DC 0H'0' TEST LABEL 02806640 LH SVCLKREG,SVCLOCKS GET LOCK INDICATORS FROM SVC 02806840 SLL SVCLKREG,C16 TABLE INTO HIGH ORDER 2 BYTES 02807040 ALR SVCLKREG,SVCLKREG FORCE LOCAL LOCK BIT OUT 02807240 BC M10,SVCENTPT IF 0 LEFT THEN NO MORE LOCKS 02807440 B CMSCK OTHERWISE CHECK FOR MORE LOCKS 02807640 EJECT @Z40FPYK 02810040 CNOP 0,8 @Z40FPYK 02811640 */*SVCCELL: N GET AN SVRB FROM THE POOL OF SVRBS */ 02812040 SPACE 2 02820002 SVCCELL DS 0H GET SVRB FROM POOL @Z40FPYJ 02850040 SPACE 2 02852002 */* D (YES,TYPE6SVC,NO,) TYPE 6 SVC ? */ @Z40FPYK 02857040 SPACE 2 @Z40FPYK 02862040 TM SVCATTR1,SVCTP6 TYPE 6 SVC ? @Z40FPYK 02867040 BO TYPE6SVC YES, PROCESS NO SVRB @Z40FPYK 02872040 * IS NECESSARY @Z40FPYK 02877040 SPACE 2 @Z40FPYK 02882040 ************************************************************** @Z40FPYK 02883040 * * @Z40FPYK 02884040 * ROUTINE FOR TYPE 2,3, AND 4 SVC * @Z40FPYK 02885040 * GET AND INITIALIZE AN SVRB. * @Z40FPYK 02886040 * * @Z40FPYK 02887040 ************************************************************** @Z40FPYK 02888040 SPACE 2 @Z40FPYK 02889040 */* P GET FIRST IN POOL ADDRESS AND SYNC COUNT */ 02890040 SPACE 2 02895040 L R2,ASCBSVRB ADDRESS OF 1ST AVAIL @Z40FPYJ 02900040 L R3,ASCBSYNC ADDRESS OF SYNC FIELD @Z40FPYJ 02904040 SPACE 2 02908040 */*CKSVRB: D (YES,,NO,GETCORE) SVRB AVAILABLE ? */ @Z40FPYK 02912040 SPACE 2 02916040 CKSVRB LTR R2,R2 ANY AVAILABLE? @Z40FPYJ 02920040 BZ GETCORE NO, EXPAND POOL @Z40FPYJ 02924040 SPACE 2 02928040 */* P INCREMENT SYNC COUNT */ 02932040 SPACE 2 02936040 LA R15,1(R3) BUMP COUNT BY ONE @Z40FPYJ 02940040 SPACE 2 02944040 */* P GET NEXT MAIN CONTROL BLOCK POINTER */ 02948040 SPACE 2 02952040 USING MBCB,R2 @Z40FPYJ 02956040 L R14,MBCBLINK NEXT BLOCK ON CHAIN @Z40FPYJ 02960040 SPACE 2 02964040 */* P SWAP ADDRESS AND SYNC FIELDS */ 02968040 SPACE 2 02972040 CDS R2,R14,ASCBSUPC SWAP ADDR AND SYNC @Z40FPYJ 02976040 BNE CKSVRB RETRY IF COMPARE FAILS @Z40FPYJ 02980040 SPACE 2 03002002 */*SVRBINIT: P ZERO OUT THE SVRB CELL */ @Z40FPYK 03002440 SPACE 2 03004002 SVRBINIT XC MBCBPXLN(RBSCBB-RBPRFXST,R2),MBCBPXLN(R2) @Z40FPYK 03005040 * ZERO THE WHOLE SVRB AREA 03008040 * EXCEPT THE SCB. THE DISPL OF 03011040 * 8 SKIPS THE ID AND LINK FIELDS 03014040 * OF THE MAIN CONTROL BLOCK. 03024040 SPACE 2 03840002 */*SVRBINT2: P PLACE PREVIOUS RB ADDR IN RBLINK */ @ZA29595 03842040 SPACE 2 @Z40FPYK 03842240 SVRBINT2 EQU * @ZA29595 03842440 USING RBPRFXST-MBCBPXLN,R2 @Z40FPYK 03843040 ST RBPTR,RBLINK CHAIN SVRB TO PREVIOUS @Z40FPYK 03843540 * RB ON TCB CHAIN @Z40FPYK 03844040 DROP R2 @Z40FPYK 03844540 SPACE 2 @Z40FPYK 03845040 */* P SET UP TO THE MAIN BODY OF SVRB */ @Z40FPYK 03845540 SPACE 2 @Z40FPYK 03846040 LA RBPTR,RBPRFLNA+MBCBPXLN(R2) ALIGN TO MAIN SVRB @Z40FPYK 03846540 USING RBSECT,RBPTR @Z40FPYK 03847040 SPACE 2 @Z40FPYK 03847540 */* P MOVE TCBGRS TO RBGRSAVC */ @Z40FPYK 03848040 SPACE 2 @Z40FPYK 03848540 MVC RBGRSAVE(L64),LCCASGPR SAVE TCBREGS IN SVRB SAVE AREA 03950003 * @YA02598 03955003 SPACE 2 03960002 */* P PUT SVRB SIZE IN RBSIZE */ 03962002 SPACE 2 04060002 */* P SET SVRB BITS: RBFDYN RBATTN RBFTSVRB */ 04062002 SPACE 2 04070002 * @Z40FPYK 04080040 * THE RB SIZE, TYPE, AND FLAGS ARE SET BY THE @Z40FPYK 04100040 * FOLLOWING MASK IN THE SVRB: @Z40FPYK 04103040 * RBTRSVRB + RBFDYN +RBSIZE @Z40FPYK 04106040 * @Z40FPYK 04109040 L R1,SVRBMASK GET MASK @Z40FPYJ 04116040 ST R1,RBSIZE SET MASK IN RB @Z40FPYJ 04124040 SPACE 2 04360040 */* P PUT LEFT HALF SVCNPSW IN LEFT HALF RBOPSW (ENABLED) */ 04370040 SPACE 2 04380040 L WORKREG2,ALHSNPSW PUT LEFT HALF OF SVC NEW PSW 04400002 ST WORKREG2,RBOPSW INTO LEFT HALF OF RB OLD PSW 04450002 SPACE 2 04602002 */*TYP34TST: D (NO,TYP2,YES,) SVC TYPE 3 OR 4? */ 04602402 SPACE 2 04604002 TYP34TST DC 0H'0' TEST LABEL 04610002 TM SVCATTR1,SVCTP34 IS SVC A TYPE3 OR 4 04650002 BNO TYP2 IF NOT,THEN TYPE2 04700002 SPACE 2 04702002 */*TYP34: P SET SVRB BIT */ 04706002 SPACE 2 04708002 TYP34 DC 0H'0' TEST LABEL 04710002 OI RBSTAB1,RBTRSVRB IF TYPE 3 OR 4 INDICATE AS SUCH 04750002 SPACE 2 04760002 */*TYP2: P PLACE SVRB ADDR IN TCBRBP */ 04762002 SPACE 2 04770002 TYP2 DS 0H 04800002 ST RBPTR,TCBRBP CHAIN TCB TO SVRB @Z40FPYK 04808040 SPACE 2 04808402 */* P SUPPRESS ATTENTIONS SET TCBATT */ 04808802 SPACE 2 04809202 OI TCBTSFLG,TCBATT SUPPRESS ATTENTIONS IN TCB 04809602 SPACE 2 04809702 */* P REG 1= ADDR REGISTER SAVE AREA IN RB */ @Z40FPYK 04809840 SPACE 2 04810240 LA R1,RBGRSAVE POINT REG1 TO SVC ISSUER REGS 04810402 SPACE 2 04810502 */*SVRBTST: P CLEAR SVC FLIH BIT */ 04810802 SPACE 2 04811202 SVRBSTST DC 0H'0' TEST LABEL 04812002 NI PSASUP1,CXFF-PSASVC CLEAR SVC FLIH BIT 04850002 SPACE 2 04852002 */* P MAKE FRR NORMAL STACK CURRENT */ 04852402 SPACE 2 04854002 L WORKREG2,PSANSTK GET NORMAL STACK PTR 04860002 ST WORKREG2,PSACSTK MAKE NORMAL CURRENT PTR 04870002 * FROM HERE ON SVC FLIH ACTS AS 04900002 * PART OF SVC ROUTINE 04950002 SPACE 2 04954002 */*ENABLE2: P ENABLE PSW FOR I/O & EXT INT */ 04954402 SPACE 2 04956002 ENABLE2 DC 0H'0' TEST LABEL 04960002 STOSM LCCAPSMK,ENABLE ENABLE THE PSW FOR I/O AND 05000002 * EXTERNAL INTERRUPTS 05060002 SPACE 2 05102002 */*INSLOCK2: D (NO,CMSCK,YES,) LOCAL LOCK NEEDED? */ 05102402 SPACE 2 05104002 INSLOCK2 DC 0H'0' TEST LABEL 05110002 LH SVCLKREG,SVCLOCKS PUT LOCK BYTES OF SVC TABLE INTO 05150002 SLL SVCLKREG,C16 HIGH ORDER 2 BYTES OF REGISTER 05200002 ALR SVCLKREG,SVCLKREG DOUBLE VALUE,FORCING HIGH ORDER 05250002 * BIT OUT CAUSING CONDITION CODE 05300002 BC M8,SVCENTPT IF NO CARRY AND 0 IS LEFT, NO 05350002 * LOCKS NEEDED 05450002 BC M4,CMSCK IF NO CARRY AND NOT 0, 05500002 * CHECK NEXT LOCK 05550002 SPACE 2 05652002 */*LOCLOCK: L SETLOCK-- OBTAIN LOCAL UNCONDITIONAL */ 05654002 SPACE 2 05656002 LOCLOCK DS 0H 05660002 SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,RELATED=('OBTAINED ON BE*05700002 HALF OF SVC ROUTINE','MAY BE GIVEN UP BY SVC ROUTINE OR *05702002 BY EXIT PROLOGUE',IEAVEEXP(RELLOCAL)) GET LOCAL LOCK 05704002 LOCLCK DC 0H'0' TEST LABEL 05710002 SPACE 2 06260002 */*CMSCK: D (NO,SRMCK,YES,) CMS LOCK NEEDED? */ 06270002 SPACE 2 06280002 CMSCK ALR SVCLKREG,SVCLKREG CHECK NEXT LOCK BIT 06300002 BC M8,SVCENTPT IF NOCARRY AND 0,NO MORE LOCKS 06350002 BC M4,SRMCK IF NOCARRY AND NOT 0, CHECK NEXT 06400002 SPACE 2 06510002 */*CMSLK: L SETLOCK-- OBTAIN CMS UNCONDITIONAL */ 06512002 SPACE 2 06520002 CMSLK SETLOCK OBTAIN,TYPE=CMS,MODE=UNCOND,RELATED=('OBTAINED ON BEHA*06550002 LF OF SVC ROUTINE','MAY BE GIVEN UP BY SVC ROUTINE OR BY*06552002 EXIT PROLOGUE',IEAVEEXP(RELCMS)) GET CMS LOCK 06554002 CMSLKTST DC 0H'0' TEST LABEL 06560002 SPACE 2 06660002 */*SRMCK: D (NO,SALCK,YES,) SRM LOCK NEEDED? */ 06662002 SPACE 2 06670002 SRMCK ALR SVCLKREG,SVCLKREG CHECK NEXT LOCK BIT 06700002 BC M8,SVCENTPT IF NOCARRY AND 0,NO MORE LOCKS 06750002 BC M4,SALCK IF NOCARRY AND NOT 0,CHECK NEXT 06800002 SPACE 2 06910002 */*SRMLK: L SETLOCK-- OBTAIN SRM UNCONDITIONAL */ 06912002 SPACE 2 06914002 SRMLK SETLOCK OBTAIN,TYPE=SRM,MODE=UNCOND,RELATED=('OBTAINED ON BEHA*06950002 LF OF SVC ROUTINE','MAY BE GIVEN UP BY SVC ROUTINE OR BY*06950402 EXIT PROLOGUE',IEAVEEXP(LKDISTST,NOTDIS)) GET SRM LOCK 06952002 SRMLKTST DC 0H'0' TEST LABEL 06960002 SPACE 2 07060002 */*SALCK: D (NO,DISPPCK,YES,SALLCLK) SALLOC LOCK NEEDED? */ 07062002 SPACE 2 07070002 SALCK ALR SVCLKREG,SVCLKREG CHECK NEXT LOCK BIT 07100002 BC M8,SVCENTPT IF NOCARRY AND 0,NO MORE LOCKS 07150002 BC M4,DISPPCK IF NOCARRY AND NOT 0,CHECK NEXT 07200040 SPACE 2 07310002 */*SALLCLK: L SETLOCK-- OBTAIN SALLOC UNCOND */ 07312002 SPACE 2 07320002 SALLCLK SETLOCK OBTAIN,TYPE=SALLOC,MODE=UNCOND,RELATED=('OBTAINED ON B*07350002 EHALF OF SVC ROUTINE','MAY BE GIVEN UP BY SVC ROUTINE OR*07352002 BY EXIT PROLOGUE',IEAVEEXP(LKDISTST,NOTDIS)) GET SALLOC *07354002 LOCK 07356002 SALCKTST DC 0H'0' TEST LABEL 07360002 SPACE 2 07460002 */*DISPPCK: D (NO,SVCENTPT,YES,DISPLK) DISP LOCK NEEDED? */ 07462002 SPACE 2 07470002 DISPPCK ALR SVCLKREG,SVCLKREG CHECK NEXT LOCK BIT 07500002 BC M12,SVCENTPT IF NOCARRY,NO MORE LOCKS 07550002 SPACE 2 07660002 */*DISPLK: L SETLOCK-- OBTAIN DISP UNCONDITIONAL */ 07662002 SPACE 2 07670002 DISPLK SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=('OBTAINED ON BEH*07700002 ALF OF SVC ROUTINE','MAY BE GIVEN UP BY SVC ROUTINE OR B*07700402 Y EXIT PROLOGUE',IEAVEEXP(LKDISTST,NOTDIS)) GET DISPATCH*07700802 ER LOCK *07701202 07702002 DISPLTST DC 0H'0' TEST LABEL 07710002 EJECT @Z40FPYK 07910040 */*SVCENTPT: P R3=PTR(CVT) R4=PTR(TCB) R5=PTR(RB) R7=PTR(ASCB) */ 07912002 SPACE 2 07920002 CNOP 0,8 OPTIMAL BRANCH ALIGNMENT 07930040 SVCENTPT DS 0H 07950002 L CVTREG,FLCCVT GET CVT POINTER IN REG3 08000002 USING CVT,CVTREG 08010002 SPACE 2 08020002 */* P R0,R1,R13,R15 AS ON ENTRY */ 08022002 SPACE 2 08030002 L R13,C52(R1) GET REG 13 AS UPON ENTRY 08100002 L R15,C60(R1) GET REG 15 AS UPON ENTRY 08150002 L R0,C0(R1) SET REG 0 AS UPON ENTRY 08155002 L R1,C4(R1) SET REG 1 AS UPON ENTRY 08160002 L SVCENT,C0(,SVCTABET) GET SVC ENTRY POINT ADDRESS 08200002 SPACE 2 08210002 */* P R14= PTR(IEAVEXPR) RETURN ADDR =EXIT PROLOGUE */ 08212002 SPACE 2 08220002 L RETREG,CVTEXPRO SET UP RETURN ADDRESS 08250002 SPACE 2 08260002 */*SVCEPTST: R BRANCH TO SVC EP */ 08260402 SPACE 2 08262002 SVCEPTST DC 0H'0' TEST LABEL 08270002 BR SVCENT GO TO SVC ROUTINE 08300002 TITLE 'IEAVESVC- SVCEXT: SPECIAL SVC PROCESSING' 08300140 SPACE 2 08300240 */*SVCEXT: D (NO,APFTST,YES,) ESR? */ 08300340 SPACE 2 08300440 SVCEXT TM SVCATTR1,SVCESR CHECK FOR ESR BIT 08300540 BZ APFTST NOT ON -- CHECK APF BIT 08300640 SPACE 2 08300740 */* P MPLY ESR CODE BY 8 (= CALLER'S REG 15) */ 08300840 SPACE 2 08300940 SLL ESRCODER,C3 MULT ESR CODE BY 8 08301040 SPACE 2 08301140 */* P GET CORRECT ENTRY IN ESR TABLE FOR INVOKED EXSVC */ 08301240 SPACE 2 08301340 L SVCNREG,C0(,SVCTABET) GET START THIS SECTION ESRTABLE 08301440 AR SVCNREG,ESRCODER GET CORRECT OFFSET IN TABLE 08301540 SPACE 2 08301640 */* D (YES,APFTST,NO,) CHECK THAT ENTRY IS IN ESR TABLE */ 08301740 SPACE 2 08301840 CL SVCNREG,ESRTBBGN CHK ENTRY IS NOT BEFORE @ZA12726 08301940 * BEGINNING OF TABLE @ZA12726 08302240 BL INVESR ESR CODE IS INVALID @ZA12726 08302340 CL SVCNREG,ESRTBEND CHK ENTRY IS BEFORE END @ZA09430 08302440 * OF TABLE @ZA12726 08302540 * (C INST CHNGED TO CL) @ZA09430 08302640 BL APFTST ENTRY IS OK -- CONTINUE 08303040 SPACE 2 08303140 */* P (,ABTERMR) LOAD REG 1 WITH ABEND CODE = X'16D' */ 08303240 SPACE 2 08303340 INVESR EQU * @ZA12726 08303440 LA R1,COMPCDE4 INVALID ESRCODE -- ABEND 08303540 B ABTERMR GO TO ABTERM WITH 16D CODE 08303640 SPACE 2 08303740 */*APFTST: D (NO,NPTST,YES,) IS SVC AUTHORIZED? */ @Z40FPYK 08303840 SPACE 2 08304440 APFTST DC 0H'0' TEST LABEL 08304540 TM SVCATTR1,SVCAPF IS SVC AUTHORIZED 08304640 BZ NPTST IF NOT AUTHORIZED,CONTINUE 08304740 * OTHERWISE CHECK AUTHORIZATION 08304940 SPACE 2 08305040 */*TESTAUTH: L TESTAUTH-- FCTN=1 STATE=YES KEY=YES */ 08305140 SPACE 2 08305240 TESTAUTH DC 0H'0' TEST LABEL 08305340 TESTAUTH FCTN=1,STATE=YES,KEY=YES,RBLEVEL=1,BRANCH=YES X08305440 GO TO CHECK AUTHORIZATION 08305540 SPACE 2 08305640 */*AUTHTST: D (YES,NPTST,NO,) AUTHORIZED? */ @Z40FPYK 08305740 SPACE 2 08306140 AUTHTST DC 0H'0' TEST LABEL 08306240 LTR RTCDREG,RTCDREG IS RETURN CODE ZERO 08306340 BZ NPTST IF SO CONTINUE PROCESS @Z40FPYK 08306440 SPACE 2 08306840 */* P SET COMPLETION CODE = X'047' */ 08306940 SPACE 2 08307040 LA R1,COMPCD2 GET COMPLETION CODE 08307140 SPACE 2 08307240 */*ABTERMR: P MOVE THE GENERAL REGISTERS FROM THE LCCA INTO THE TCB */ 08307340 SPACE 2 08307440 DROP CCABASE2 @Z40FPYK 08307540 USING LCCA,CCABASE @Z40FPYK 08307640 ABTERMR MVC TCBGRS(L64),LCCASGPR MOVE THE REGS INTO THE TCB 08307740 * @YA02598 08307840 DROP CCABASE @Z40FPYK 08307940 USING LCCA,CCABASE2 @Z40FPYK 08308040 USING ASCB,XASCBREG @Z40FPYK 08308140 SPACE 2 08308240 */*ABTERMRT: L CALLRTM-- TYPE= ABTERM */ 08308340 SPACE 2 08308440 ABTERMRT CALLRTM TYPE=ABTERM,TCB=0,COMPCOD=(1) GO TO RTM 08308540 SPACE 2 08308640 */*EX1: P CLEAR SVC FLIH BIT */ 08308740 SPACE 2 08308840 EX1 DC 0H'0' TEST LABEL 08308940 L DISPRTN,AIEAPDS7 GET DISPATCHER ADDRESS 08309040 NI PSASUP1,CXFF-PSASVC CLEAR SVC FLIH BIT 08309140 SPACE 2 08309240 */*FIN1: R EXIT TO DISPATCHER */ 08309340 SPACE 2 08309440 FIN1 DC 0H'0' TEST LABEL 08309540 BR DISPRTN EXIT TO DISPATCHER 08309640 SPACE 2 @Z40FPYK 08309740 */*NPTST: D (YES,,NO,SVCOK) N/P SVC ? */ @Z40FPYK 08309840 SPACE 2 @Z40FPYK 08309940 NPTST DS 0H @Z40FPYK 08310040 TM SVCATTR1,SVCNP NON-PREEMPTIVE SVC ? @Z40FPYK 08310140 BNO SVCOK NO--CONTINUE @Z40FPYK 08310240 SPACE 2 @Z40FPYK 08310340 */* P (,SVCOK) SET TASK NON PREEMPTIVE */ @Z40FPYK 08311340 SPACE 2 @Z40FPYK 08311440 OI TCBFLGS1,TCBNONPR SET TASK N/P @Z40FPYK 08311540 B SVCOK NORMAL SVC PROCESSING @Z40FPYK 08311640 TITLE 'IEAVESVC- GETCORE: GET SVRB POOL' @Z40FPYJ 08311740 SPACE 2 08311840 */*GETCORE: P MOVE THE GENERAL REGISTERS INTO THE TCB */ 08311940 SPACE 2 08312040 GETCORE MVC TCBGRS(L64),LCCASGPR MOVE THE REGISTERS INTO THE TCB 08312140 * @YA02598 08312240 SPACE 2 08312640 */* S GETRTN:INTERNAL ROUTINE TO GET LOCK */ 08312740 SPACE 2 08313140 BAL R2,GETRTN GO INTERNAL SUBRTN TO GETLOCK 08313240 SPACE 2 08313340 */* P SET UP REGS FOR GETMAIN */ 08313440 SPACE 2 08313840 LA COREREG,MBCBLEN*SVRBNUM LOAD AMOUNT OF CORE NEEDED 08313940 SPACE 2 08314040 */* D (YES,,NO,POOLGET) ABEND IN PROCESS? */ 08314140 SPACE 2 08314540 TM TCBFLGS3,TCBABGM IF OUT OF CORE IS ABEND IN 08314640 * PROCESS 08314740 BNO POOLGET IF SO DO GETMAIN FOR SINGLE SVRB 08314840 SPACE 2 08314940 */*ABSVRB: P USE SVRBLEN TO INDICATE AMNT OF CORE */ 08315340 SPACE 2 08315540 ABSVRB LA COREREG,SVRBLEN CHANGE AMOUNT OF CORE @ZA29595 08315740 SPACE 2 08320840 */*POOLGET: L GETMAIN-- GET CORE FOR EXPANDING SVRB POOL */ 08321040 SPACE 2 08321240 POOLGET DC 0H'0' TEST LABEL 08321440 GETMAIN RC,SP=255,LV=(0),BRANCH=YES GO GET CORE 08321640 SPACE 2 08321840 */*POOLGOT: L SETLOCK-- RELEASE TYPE=LOCAL */ 08322040 SPACE 2 08322240 POOLGOT DC 0H'0' TEST LABEL 08322440 SETLOCK RELEASE,TYPE=LOCAL, *08322640 RELATED=('GETMAIN COMPLETE',IEAVESVC(GETRTN)) CLEAR *08322840 LOCAL LOCK 08323040 SPACE 2 08323240 */*POOLGTST: D (NO,GOTCORE,YES,) OUT OF CORE? */ 08323440 SPACE 2 08323640 POOLGTST DC 0H'0' TEST LABEL 08323840 LTR RTCDREG,RTCDREG WAS CORE GOTTEN 08324040 BZ GOTCORE IF SO GO SET UP 08324240 SPACE 2 08324440 */* D (YES,TERMMEM,NO,) ABEND IN PROCESS? */ 08324640 SPACE 2 08324840 TM TCBFLGS3,TCBABGM IF OUT OF CORE IS ABEND IN 08325040 * PROCESS 08325240 BO TERMMEM IF SO GO TO MEMTERM @Z40FPYJ 08325440 SPACE 2 08325640 */* P (,ABTERMRT) SET COMPLETION CODE= X'0F9' */ @Z40FPYK 08325840 SPACE 2 08326040 SR R1,R1 SET UP R15 = 0 @Z40FPYK 08326240 ST R1,TCBGRS15 COMPLETION CODE IN TCB @Z40FPYK 08326440 LA R1,COMPCD3 GET COMPLETION CODE 08326640 B ABTERMRT GO TO ABTERM ISSUER 08326840 SPACE 2 08327040 TITLE 'IEAVESVC- SVCINV: INVOKE RTM' 08327240 SPACE 2 08327440 */*SVCINV: P LOAD COMPLETION CODE */ 08327640 SPACE 2 08327840 SVCINV LA R1,COMPCD1 GET COMPLETION CODE 08328040 SPACE 2 08328240 */*SVCERR: R EXIT TO RTM */ 08328440 SPACE 2 08328640 SVCERR DC 0H'0' TEST LABEL 08328840 * GO TO RTM FOR ERROR RECOVERY 08329040 CALLRTM TYPE=SVCERR,COMPCOD=(1) 08329240 B SVCPROC RETURN TO MAINLINE @Z40FPYJ 08329440 TITLE 'IEAVESVC- IGCERROR:SVC ERROR ROUTINE ' 08329640 *********************************************************************** 08329840 * * 08330002 * SVC ERROR ROUTINE * 08340002 * * 08342002 *********************************************************************** 08344002 ENTRY IGCERROR 08350002 SPACE 2 08360002 */*IGCERROR: E IGCERROR */ 08362002 SPACE 2 08370002 IGCERROR DS 0H 08400002 USING RBSECT,RBPTR ESTABLISH BASE TO SVRB 08450002 L PREVRB,RBLINK GET ISSUING RB ADDRESS 08500002 S PREVRB,KRBPRFXL GET PTR TO RB PREFIX 08550002 SPACE 2 08560002 */* P GET SVC NUMBER FROM PREVIOUS RB */ 08562002 SPACE 2 08570002 DROP RBPTR 08600002 USING RBPRFXST,PREVRB ESTABLISH BASE TO RB PREFIX 08650002 LH R1,RBINTCOD GET SVC NUMBER ISSUED 08700002 SPACE 2 08710002 */* P (,ABTST) SET COMPLETION CODE =X'F(SVCNUM)' */ 08712003 SPACE 2 08720002 LA R1,X'F00'(,R1) PUT F IN FRONT OF SVC NUMBER 08750002 B ABTST BRANCH AROUND IGXERROR ENTRY 08750203 ENTRY IGXERROR ENTRY FOR INVALID EXSVC NUMBER 08750303 SPACE 2 08750403 */*IGXERROR: E IGXERROR */ 08750603 SPACE 2 08750803 IGXERROR DS 0H 08750903 LA R1,COMPCDE4 UNSUPPORTED ESRCODE -- ABEND 08751203 SPACE 2 08752002 */*ABTST: R EXIT VIA SVC 13 */ 08752402 SPACE 2 08754002 ABTST DC 0H'0' TEST LABEL 08760002 ABEND (1),DUMP,,SYSTEM ABEND ISSUER OF SVC 08800002 TITLE 'IEAVESVC- GETRTN:INTERNAL ROUTINE TO OBTAIN LOCAL LOCK' 09302002 SPACE 2 09310002 */*GETRTN: E GETRTN */ 09312002 */* L SETLOCK-- OBTAIN LOCAL COND */ 09314002 SPACE 2 09320002 GETRTN SETLOCK OBTAIN,TYPE=LOCAL,MODE=COND,RELATED=('SVC INTERRUPT PR*09350002 OCESS FOR GETMAIN OR TYPE 1 SVC',IEAVESVC(POOLFAIL,RELLL*09352002 2,RELLL3,RELLL4),IEAVEEXP(RELLOCAL)) GET LOCAL LOCK 09354002 SPACE 2 09362002 */*LLTST1: D (NO,BACKUP,YES,) GOTTEN? */ 09365502 SPACE 2 09377002 LLTST1 DC 0H'0' TEST LABEL 09388502 LTR RTCDREG2,RTCDREG2 WAS REQUEST SUCCESSFUL 09400002 SPACE 2 09410002 */* R RETURN */ 09420002 SPACE 2 09430002 BCR M8,R2 IF SO RETURN 09450002 * NOT GOTTEN BACK UP PSW 09500002 SPACE 2 09502002 */*BACKUP: P BACK UP INSTR ADDR OF SVCOPSW BY SVCILC */ 09502402 SPACE 2 09504002 BACKUP DS 0H 09510002 USING RBSECT,RBPTR 09550002 L WORKREG2,FLCSOPSW+C4 GET NEXT INSTRUCTION FROM PSW 09600002 SR WORKREG,WORKREG CLEAR WORK REGISTER 09650002 IC WORKREG,FLCSVILC GET INSTRUCTION LENGTH 09700002 SR WORKREG2,WORKREG BACK UP PSW BY INSTRUCTION LTH 09750002 SPACE 2 09760002 */* P STORE VALUE IN RBOPSW */ 09762002 SPACE 2 09770002 ST WORKREG2,RBOPSW+C4 PUT BACKED UP PSW IN RB OLD PSW 09800002 SPACE 2 09810002 */* P CLEAR SVC FLIH BIT */ 09812002 SPACE 2 09820002 L DISPRTN,AIEAPDS7 GET DISPATCHER ADDRESS 09850002 NI PSASUP1,CXFF-PSASVC CLEAR SVC FLIH BIT 09900002 SPACE 2 09900402 */*BACKXIT: R EXIT TO DISPATCHER */ 09902002 SPACE 2 09904002 BACKXIT DC 0H'0' TEST LABEL 09910002 BR DISPRTN GO TO DISPATCHER 09950002 TITLE 'IEAVESVC- SVC SCREENING ROUTINE ' 09950140 SVCSCREN DS 0H SVC SCREENING PROCESSING @Z40EPVC 09950240 SPACE 2 09950340 */*SVCSCREN: P GET ADDRESS SSSCREEN TABLE */ 09950440 SPACE 2 09950540 L SSTABPTR,TCBSVCA2 GET ADDRESS SS SCREEN TABLE @Z40EPVC 09950640 USING SSTAB,SSTABPTR 09950740 SPACE 2 09950840 */* D (YES,SVCTENTY,NO,) OK TO ISSUE THIS SVC? */ 09950940 SPACE 2 09951140 LA WORKREG,SSTMASK-SSTAB(SVCNREG,SSTABPTR) 09951240 * GET ADDRESS OF SCREEN FLAG @Z40EPVC 09951340 TM 0(WORKREG),SSTSVCOK 09951440 * CHECK IF OK TO ISSUE @Z40EPVC 09951540 BO SVCTENTY OK -- CONTINUE PROCESSING @Z40EPVC 09951840 SPACE 2 09952140 */* P (,SVCOK) CHANGE TO SS SVC AND PROCESS */ 09952440 SPACE 2 09952740 LR SVCTABET,SSTABPTR NOT OK -- CHANGE TO SS SVC @Z40EPVC 09953040 B SVCOK PROCESS SS SVC REQUEST @Z40EPVC 09953340 TITLE 'IEAVESVC- FORMAT POOL OF SVRBS' 09954040 SPACE 2 09960002 */*GOTCORE: N FORMAT POOL OF SVRBS */ 09970040 SPACE 2 09980002 GOTCORE DS 0H 10000002 SPACE 2 10010040 */* D (1,SETT01,9,) HOW MANY SVRBS */ 10020040 SPACE 2 10030040 TM TCBFLGS3,TCBABGM 1 SVRB FOR G/M ABEND @Z40FPYJ 10050040 BO SETTO1 YES, PROCESS ONLY ONE @Z40FPYJ 10050840 SPACE 2 10051640 */* P SET COUNT TO 9 SVRBS IN POOL */ 10052440 SPACE 2 10053240 LA R15,SVRBNUM 9 SVRBS IN POOL @Z40FPYJ 10054040 SPACE 2 10054840 */* P INIT ID AND MAIN CONTROL BLOCK PTR */ 10055640 SPACE 2 10056440 L R0,IDSVRB PLACE 'SVRB' IN REG @Z40FPYJ 10057240 LR R14,R1 COPY ADDR OF 1ST MBCB @Z40FPYJ 10058040 USING MBCB,R14 10060040 SPACE 2 10060140 */*CALCNXT: P CALC ADDR OF NEXT MBCB */ 10060240 SPACE 2 10060340 CALCNXT LA R13,MBCBLEN(R14) CALCULATE THE NEXT @Z40FPYJ 10060440 * MBCB ADDRESS @Z40FPYJ 10061440 SPACE 2 10064940 */* P SET UP ID IN THIS MBCB */ 10065040 SPACE 2 10065140 ST R0,MBCBID PLACE ID IN MBCBID @ZA29595 10065240 SPACE 2 10066040 */* P SET UP LINK ADDR */ 10066140 SPACE 2 10066240 ST R13,MBCBLINK PLACE @ IN MBCB @Z40FPYJ 10066340 SPACE 2 10066440 */*SKIP1: P BUMP DOWN TO ADDRESS SVRB */ 10066540 SPACE 2 10067140 SKIP1 EQU * @ZA29595 10067340 LA R11,RBPRFLNA+MBCBPXLN(R14) ADDRESS THE MAIN @Z40FPYJ 10067540 * SVRB @Z40FPYJ 10067740 USING RBSECT,R11 @Z40FPYJ 10068040 SPACE 2 @Z40FPYJ 10068840 */* P INITIALIZE THE SCB */ @Z40FPYJ 10069040 SPACE 2 @Z40FPYJ 10069940 XC RBSCBB(SVRBEND-RBSCBB),RBSCBB CLEAR SCB AND @ZA13392 10070240 * PARAMETER AREA @ZA13392 10070540 ST R11,RBSOWNR @RB INTO SCB @Z40FPYJ 10070840 MVI RBSPKEY,C0 KEY 0 INTO SCB @Z40FPYJ 10072840 MVI RBSID,SCBID ID INTO SCB @Z40FPYJ 10073040 SPACE 2 10073240 */* P MAKE NEXT THE CURRENT MBCB */ 10073440 SPACE 2 10073640 LR R14,R13 COPY NEXT INTO CURRENT @Z40FPYJ 10073840 SPACE 2 10074040 */* D (NO,CALCNXT,YES,) COUNT TO 0 */ 10074240 SPACE 2 10074440 BCT R15,CALCNXT LOOP TO PROCESS ALL RBS @Z40FPYJ 10074640 SPACE 2 10074840 */* D (YES,SVRBINT2,NO,) SINGLE SVRB DONE ? */ @ZA29595 10075040 SPACE 2 10075140 LR R2,R1 COPY ADDR OF 1ST BLOCK @Z40FPYJ 10075240 LTR R13,R13 NEXT IS 0, IF SINGLE RB @Z40FPYJ 10075340 BZ SVRBINT2 GO TO MAINLINE BUT DO @ZA29595 10075440 * NOT CLEAR RBNOCELL @ZA29595 10075540 SPACE 2 10076040 */* P SAVE ADDR OF LAST MBCB */ 10076240 SPACE 2 10076440 S R14,LENMBCB BUMP BACK TO LAST BLOCK @Z40FPYJ 10076640 LR R11,R14 ADDRESS LAST BLOCK @Z40FPYJ 10076840 DROP R14 @Z40FPYJ 10077040 USING MBCB,R11 @Z40FPYJ 10077140 SPACE 2 10077340 */* P BUMP TO 2ND MBCB SO 1ST CAN BE RETURNED */ 10077440 SPACE 2 10077640 LA R14,MBCBLEN(R1) BUMP TO 2ND MBCB @Z40FPYJ 10077840 SPACE 2 10078040 */* P QUEUE NEW POOL TO ASCB HEADER */ 10078240 SPACE 2 10078440 LM R2,R3,ASCBSUPC GET ADDR AND SYNC WORDS @Z40FPYJ 10078640 CDSLOOP LA R15,C1(R3) BUMP SYNC COUNT @Z40FPYJ 10078840 ST R2,MBCBLINK LINK ADDR OR ZERO @Z40FPYJ 10079040 CDS R2,R14,ASCBSUPC SWAP ADDR + SYNC WORDS @Z40FPYJ 10079240 BNE CDSLOOP RETRY IF COMPARE FAILS @Z40FPYJ 10079440 SPACE 2 @Z40FPYJ 10081440 */* P SET UP R2 WITH INITIALIZED SVRB */ @Z40FPYJ 10083440 SPACE 2 @Z40FPYJ 10085440 LR R2,R1 NEW SVRB FROM POOL @Z40FPYJ 10087440 SPACE 2 @Z40FPYJ 10089440 */* P (,SVRBINIT) RETURN TO MAINLINE WITH BLOCK ADDR IN R2 */ 10096040 SPACE 2 10098040 B SVRBINIT RETURN TO MAINLINE @Z40FPYJ 10100040 SPACE 2 10102002 */*SETTO1: N SET UP FOR ONLY ONE SVRB */ 10102440 */* P SET COUNT TO ONE AND NEXT TO ZERO */ 10104040 SPACE 2 10104840 SETTO1 LA R15,1 SET COUNT TO ONE @Z40FPYJ 10105640 SLR R13,R13 SET NEXT TO ZERO @Z40FPYJ 10106440 SPACE 10106940 * SET UP SINGLE SVRB TO LOOK AS IF IT HAS AN MBCB, SO @ZA29595 10107040 * THE SVRB CAN BE INITIALIZED USING MAINLINE CODE. THE, @ZA29595 10107140 * SVRB CAN NOT HAVE AN MBCB, BECAUSE EXIT PROLOGUE AND @ZA29595 10107440 * EXIT DO NOT FREE MBCB'S. @ZA29595 10107540 SPACE 10107640 LA R14,MBCBPXLN @ZA29595 10127640 SR R1,R14 @ZA29595 10147640 XC MBCBPXLN(RBSCBB-RBPRFXST,R1),MBCBPXLN(R1) ZERO @ZA29595 10149640 * SVRB BUT NOT SCB @ZA29595 10151640 OI RBCDFLGS-RBPRFXST+MBCBPXLN(R1),RBNOCELL @ZA29595 10153640 * INDICATE THAT RB SHOULD @ZA29595 10155640 * BE FREED BY EXIT OR @ZA29595 10157640 * EXIT PROLOGUE @ZA29595 10159640 LR R14,R1 COPY ADDR @ZA29595 10167640 B SKIP1 PROCESS ONE SVRB @Z40FPYJ 10187640 TITLE 'IEAVESVC- TERMMEM: CALL RTM ROUTINE' 10207640 SPACE 2 10302002 */*TERMMEM: P SET UP PARAMETERS TO PASS TO RTM */ 10302402 SPACE 2 10304002 TERMMEM DS 0H 10310002 SPACE 2 10311040 */* S GETRTN:INTERNAL ROUTINE TO GET LOCK */ 10312040 SPACE 2 10313040 BAL R2,GETRTN GO INTERNAL SUBRTN TO GETLOCK 10314040 SPACE 2 10315040 L XASXBREG,ASCBASXB GET ASXB ADDRESS 10320002 USING ASXB,XASXBREG @Z40FPYJ 10321040 L WSALREG,ASXBSPSA GET WSAL ADDRESS 10322002 USING WSAL,WSALREG 10324002 L R13,WSALABTM PASS MEMTERMS SAVE AREA IN R13 10326002 LA R1,COMPCD7 GET COMPLETION CODE VALUE 10330002 SPACE 2 10330402 */*MEM2: L CALLRTM-- TYPE=MEMTERM */ 10330802 SPACE 2 10331202 MEM2 DC 0H'0' TEST LABEL 10332002 CALLRTM TYPE=MEMTERM,COMPCOD=(1) TERMINATE MEMORY 10340040 SPACE 2 10362802 */*RELLL4: L SETLOCK-- RELEASE LOCAL LOCK */ 10363202 SPACE 2 10364802 RELLL4 DC 0H'0' TEST LABEL 10365702 SETLOCK RELEASE,TYPE=LOCAL,RELATED=('GETMAIN COMPLETE',IEAVESV*10370602 C(GETRTN)) FREE LOCAL LOCK 10372602 L DISPRTN,AIEAPDS7 GET DISPATCHER ADDRESS 10375502 SPACE 2 10377502 */* P CLEAR SVC FLIH BIT */ 10377902 SPACE 2 10379502 NI PSASUP1,CXFF-PSASVC CLEAR SVC FLIH BIT 10380402 SPACE 2 10382402 */*MEMXIT2: R EXIT TO DISPATCHER */ 10382802 SPACE 2 10384402 MEMXIT2 DC 0H'0' TEST LABEL 10385302 BR DISPRTN EXIT TO DISPATCHER 10390202 TITLE 'TYPE 6 SVC PROCESSING' @Z40FPYK 10392240 ************************************************************** @Z40FPYK 10394240 * * @Z40FPYK 10396240 * TYPE 6 SVC INTERFACE ROUTINE * @Z40FPYK 10398240 * TYPE 6 ENTRY PROCESSING * @Z40FPYK 10400240 * * @Z40FPYK 10402240 ************************************************************** @Z40FPYK 10404240 SPACE 2 @Z40FPYK 10406240 */*TYPE6SVC: P PROCESS TYPE 6 SVC ENTRY */ @Z40FPYK 10442240 */* P MOVE REGISTERS INTO THE TCB */ @Z40FPYK 10492240 SPACE 2 @Z40FPYK 10542240 CNOP 0,8 @Z40FPYK 10545240 TYPE6SVC DS 0H @Z40FPYK 10552240 MVC TCBGRS(L64),LCCASGPR SAVE REGISTERS IN TCB @Z40FPYK 10592240 SPACE 2 @Z40FPYK 10642240 */* P SET PSA INDICATOR FOR RECOVERY */ @Z40FPYK 10692240 SPACE 2 @Z40FPYK 10742240 OI PSASUP1,PSATYPE6 SET TYPE 6 SVC IN @Z40FPYK 10792240 * CONTROL INDICATOR @Z40FPYK 10842240 SPACE 2 @Z40FPYK 10892240 */* P SET UP REGISTERS FOR SVC INPUT */ @Z40FPYK 10942240 SPACE 2 @Z40FPYK 10992240 LA R1,TCBGRS PARAMETER REGISTERS @Z40FPYK 11042240 * ARE OBTAINED FROM TCB @Z40FPYK 11092240 SPACE 2 @Z40FPYK 11142240 */* P R3 = CVT ADDR */ @Z40FPYK 11192240 SPACE 2 @Z40FPYK 11242240 L CVTREG,FLCCVT SET UP R3 = CVT ADDR @Z40FPYK 11292240 SPACE 2 @Z40FPYK 11342240 */* P R13 = INPUT R13 */ @Z40FPYK 11392240 SPACE 2 @Z40FPYK 11442240 L R13,C52(R1) SET UP R13 @Z40FPYK 11492240 SPACE 2 @Z40FPYK 11542240 */* P R0, R1, R15 AS ON ENTRY TO SVC FLIH */ @Z40FPYK 11592240 SPACE 2 @Z40FPYK 11642240 L R15,C60(R1) SET UP R15 @Z40FPYK 11692240 L R0,C0(R1) SET UP R0 @Z40FPYK 11742240 L R1,C4(R1) SET UP R1 @Z40FPYK 11792240 SPACE 2 @Z40FPYK 11842240 */* P R6 IS TYPE 6 EPA */ @Z40FPYK 11892240 SPACE 2 @Z40FPYK 11942240 L SVCENT,C0(SVCTABET) R6 HAS TYPE 6 EPA @Z40FPYK 11992240 SPACE 2 @Z40FPYK 12042240 */* S TYPE6:GO TO TYPE 6 SVC */ @Z40FPYK 12092240 SPACE 2 @Z40FPYK 12142240 BALR RETREG,SVCENT GO TO TYPE 6 SVC...R14 @Z40FPYK 12192240 * HAS RETURN ADDRESS IF @Z40FPYK 12242240 * A BR 14 OR T6EXIT @Z40FPYK 12292240 * CALLER RETURN IS USED @Z40FPYK 12342240 EJECT @Z40FPYK 12392240 ************************************************************** @Z40FPYK 12397240 * * @Z40FPYK 12402240 * TYPE 6 EXIT PROCESSING * @Z40FPYK 12407240 * RETURN = CALLER * @Z40FPYK 12412240 * BR 14 PROCESSING * @Z40FPYK 12417240 * * @Z40FPYK 12422240 ************************************************************** @Z40FPYK 12427240 */* N IF THE TYPE 6 SVC DOES A BR 14 */ @Z40FPYK 12442240 */* N OR A T6EXIT RETURN = CALLER */ @Z40FPYK 12492240 */* N CONTROL WILL BE RECEIVED HERE */ @Z40FPYK 12542240 */* P RE-ESTABLISH ADDRESSIBILITY */ @Z40FPYK 12592240 SPACE 2 @Z40FPYK 12642240 BALR BASEREG,C0 ESTABLISH ADDRESSIBILITY@Z40FPYK 12692240 USING *,BASEREG @Z40FPYK 12742240 SPACE 2 @Z40FPYK 12792240 */*CALLER: P RESTORE THE TCB POINTER */ @Z40FPYK 12842240 SPACE 2 @Z40FPYK 12892240 CALLER DS 0H @Z40FPYK 12912240 L XTCBREG,PSATOLD RESTORE TCB POINTER @Z40FPYK 12942240 SPACE 2 @Z40FPYK 12992240 */* P RESTORE ASCB POINTER */ @Z40FPYK 13042240 SPACE 2 @Z40FPYK 13092240 L XASCBREG,PSAAOLD RESTORE ASCB POINTER @Z40FPYK 13142240 SPACE 2 @Z40FPYK 13192240 */* P SAVE SVC RETURN REGISTERS FOR CALLER */ @Z40FPYK 13242240 SPACE 2 @Z40FPYK 13292240 ST R0,TCBGRS0 SAVE RETURN REG 0 @Z40FPYK 13342240 ST R1,TCBGRS1 SAVE RETURN REG 1 @Z40FPYK 13392240 ST R15,TCBGRS15 SAVE RETURN REG 15 @Z40FPYK 13442240 SPACE 2 @Z40FPYK 13492240 */* P RESET TYPE 6 SVC AND SVC FLIH RECOVERY FLAGS */ @Z40FPYK 13542240 SPACE 2 @Z40FPYK 13592240 NI PSASUP1,CXFF-(PSATYPE6+PSASVC) TURN OFF TYPE 6 @Z40FPYK 13642240 * AND SVC FLIH @Z40FPYK 13692240 * SUPER RECOVERY @Z40FPYK 13742240 * INDICATORS @Z40FPYK 13792240 SPACE 2 13802240 */* P PURGE FRR STACK USED BY TYPE 6 SVC */ 13812240 SETFRR P,WRKREGS=(R2,R3) @ZA15765 13822240 SPACE 2 @Z40FPYK 13842240 */* P RESTORE SUPER STACK TO NORMAL */ @Z40FPYK 13892240 SPACE 2 @Z40FPYK 13942240 L WORKREG2,PSANSTK RESTORE FRR STACK @Z40FPYK 13992240 ST WORKREG2,PSACSTK TO NORMAL @Z40FPYK 14042240 SPACE 2 @Z40FPYK 14092240 */* P PICK UP EPA OF COMMON EXIT PROLOGUE ENTRY */ @Z40FPYK 14142240 SPACE 2 @Z40FPYK 14192240 L RETREG,EXPEPA EXIT PROLOGUE EPA @Z40FPYK 14242240 SPACE 2 @Z40FPYK 14542240 */* R EXIT TO EXIT PROLOGUE */ @Z40FPYK 14592240 SPACE 2 @Z40FPYK 14642240 BR RETREG EXIT TO EXIT PROLOGUE @Z40FPYK 14692240 * EPA @Z40FPYK 14742240 EJECT @Z40FPYK 14792240 ************************************************************** @Z40FPYK 14796240 * * @Z40FPYK 14800240 * TYPE 6 EXIT ENTRY POINT * @Z40FPYK 14804240 * T6EXIT RETURN=SRB * @Z40FPYK 14808240 * T6EXIT RETURN=DISP * @Z40FPYK 14812240 * IF SRB RETURN, R1 = @SRB * @Z40FPYK 14816240 * R2 = 8 (SRB REQUEST CODE) * @Z40FPYK 14818240 * IF DISPATCHER RETURN, R2 = 4 * @Z40FPYK 14820240 * IF CALLER RETURN, R2 = 0 * @Z40FPYK 14821240 * * @Z40FPYK 14824240 ************************************************************** @Z40FPYK 14828240 SPACE 2 @Z40FPYK 14832240 T6EXIT DS 0H @Z40FPYK 14842240 ENTRY IEAVET6E @Z40FPYK 14892240 IEAVET6E DS 0H @Z40FPYK 14922240 SPACE 2 @Z40FPYK 14992240 */*T6EXIT: E TYPE6 EXIT EPA */ @Z40FPYK 15042240 */* P ESTABLISH ADDRESSIBILITY */ @Z40FPYK 15092240 SPACE 2 @Z40FPYK 15142240 BALR BASEREG2,C0 ADDRESSIBILITY @Z40FPYK 15192240 USING *,BASEREG2 @Z40FPYK 15222240 SPACE 2 @Z40FPYK 15292240 */* D (SRB,,CALL,RETCALL,DISP,DISPEXIT) REQUEST TYPE ? */ @Z40FPYK 15342240 SPACE 2 @Z40FPYK 15392240 BRTAB DS 0H @Z40FPYK 15397240 B C4(R2,BASEREG2) REQUEST TYPE ? @Z40FPYK 15402240 B RETCALL R2=0 RETURN TO CALLER @Z40FPYK 15412240 B DISPEXIT R2=4 RETURN TO DISPATCH @Z40FPYK 15422240 * R2=8 RETURN TO SRB IN R1@Z40FPYK 15432240 EJECT @Z40FPYK 15482240 * DISPATCH AN SRB 15742240 * 15752240 */* P ACQUIRE ASCB ADDRESS */ @Z40FPYK 15792240 SPACE 2 @Z40FPYK 15842240 L R8,PSAAOLD ACQUIRE ASCB ADDRESS @Z40FPYK 15892240 USING ASCB,R8 @Z40FPYK 15942240 SPACE 2 @Z40FPYK 15992240 */* D (YES,SRBOK,NO,) SRB ASCB DEFAULTED ? */ @Z40FPYK 15998240 SPACE 2 @Z40FPYK 16004240 USING SRB,R1 @Z40FPYK 16010240 L R5,SRBASCB GET SRB ASCB ADDRESS @Z40FPYK 16016240 LTR R5,R5 IF ZERO - CURRENT MEM @Z40FPYK 16022240 BZ SRBOK AND ALL IS OKAY @Z40FPYK 16028240 SPACE 2 @Z40FPYK 16034240 */* D (YES,,NO,ABNDASCB) SRB SCHED IN THIS MEMORY ? */ @Z40FPYK 16042240 SPACE 2 @Z40FPYK 16092240 CR R8,R5 SRB TO BE SCHEDULED @Z40FPYK 16192240 * IN THIS MEMORY ? @Z40FPYK 16242240 BNE ABNDASCB NO - INVALID REQUEST @Z40FPYK 16292240 * ABEND SVC @Z40FPYK 16342240 SPACE 2 @Z40FPYK 16392240 */*SRBOK: P SAVE SRB ADDRESS */ @Z40FPYK 16400240 SPACE 2 @Z40FPYK 16408240 SRBOK DS 0H @Z40FPYK 16412240 LR R5,R1 SAVE INPUT SRB ADDRESS @Z40FPYK 16416240 DROP R1 @Z40FPYK 16420240 USING SRB,R5 @ZA20352 16424340 SPACE 2 16424740 * IF CPU AFFINITY WAS SPECIFIED, GO OFF TO CHECK @ZA20352 16424840 * WHETHER THE SRB CAN RUN ON THIS CPU. @ZA20352 16425040 * 16425540 * IT IS NOT NECESSARY TO CHECK WHETHER SRB'S ARE @ZA20352 16425740 * DISPATCHABLE. THAT IS BECAUSE THIS CODE RUNS UNDER A @ZA20352 16426040 * TCB AND TCB'S ARE ALWAYS MADE NON-DISPATCHABLE EITHER @ZA20352 16426340 * PRIOR TO OR CONCURRENTLY WITH SRB'S BEING STOPPED. @ZA20352 16426640 SPACE 2 16427440 LH R7,SRBCPAFF SRB'S AFFINITY MASK @ZA20352 16430040 LTR R7,R7 ANY? @ZA20352 16430340 BNZ CHKAFFIN SPECIFIED, GO CHECK @ZA20352 16430640 * AFFINITY @ZA20352 16430940 AFFINOK DS 0H @ZA20352 16431240 SPACE 2 @Z40FPYK 16432240 */* P GET LCCA ADDRESS */ @Z40FPYK 16442240 SPACE 2 @Z40FPYK 16492240 L R7,PSALCCAV NEED LCCA ADDRESS FOR @Z40FPYK 16542240 * DISPATCHER JST ROUTINE @Z40FPYK 16592240 USING LCCA,CCABASE @Z40FPYK 16612240 SPACE 2 @Z40FPYK 16642240 */* P NOW NEED TO SAVE STATUS OF TASK */ @Z40FPYK 16642340 SPACE 2 @Z40FPYK 16642440 L XTCBREG,PSATOLD SET UP TO TASK ADDRESS @Z40FPYK 16642540 SPACE 2 @Z40FPYK 16644540 */* P SAVE FLOATING POINT REGISTERS */ @Z40FPYK 16644640 SPACE 2 @Z40FPYK 16644740 L R2,KTCBPRFX NEED PREFIX TO TCB @Z40FPYK 16644840 AR R2,R4 POINT TO TCB PREFIX @Z40FPYK 16644940 USING TCBFIX,R2 @Z40FPYK 16647040 STD R0,TCBFRS0 SAVE FP REG 0 @Z40FPYK 16647140 STD R2,TCBFRS2 SAVE FP REG 2 @Z40FPYK 16647240 STD R4,TCBFRS4 SAVE FP REG 4 @Z40FPYK 16647340 STD R6,TCBFRS6 SAVE FP REG 6 @Z40FPYK 16647440 DROP R2 @Z40FPYK 16647540 SPACE 2 @Z40FPYK 16647640 */* D (NO,SKIPTQE,YES,) TEST FOR TQE */ @Z40FPYK 16647740 SPACE 2 @Z40FPYK 16647840 L R2,TCBTME TQE ADDRESS @Z40FPYK 16647940 LTR R2,R2 TEST IF TQE EXISTS @Z40FPYK 16648040 BNH SKIPTQE NO, DO NO UPDATE @Z40FPYK 16648140 SPACE 2 @Z40FPYK 16648240 */* D (NO,SKIPTQE,YES,) IS CPU TIMER WORKING ? */ @Z40FPYK 16648340 SPACE 2 @Z40FPYK 16648440 L R1,PSAPCCAV GET PCCA ADDRESS @Z40FPYK 16648540 USING PCCA,R1 @Z40FPYK 16648640 TM PCCAINTE,PCCANUIN IS THIS CPU'S TIMER OK? @Z40FPYK 16648740 BO SKIPTQE NO, BYPASS SAVING TIMER @Z40FPYK 16648840 DROP R1 @Z40FPYK 16648940 SPACE 2 @Z40FPYK 16649040 */* P SAVE CPU INTERVAL TIMER VALUE IN TQE */ @Z40FPYK 16649140 SPACE 2 @Z40FPYK 16649240 USING TQE,R2 @Z40FPYK 16649340 STPT TQEVAL SAVE TIMER VALUE @Z40FPYK 16649440 DROP R2 @Z40FPYK 16649540 SPACE 2 @Z40FPYK 16649640 */* P RESET TIMER TO A HIGH VALUE */ @Z40FPYK 16649740 SPACE 2 @Z40FPYK 16649840 SPT HITIME SET CPU TIMER HIGH @Z40FPYK 16649940 SPACE 2 @Z40FPYK 16650040 */*SKIPTQE: P RESET SVC FLIH AND TYPE 6 IN CONTROL */ @Z40FPYK 16650140 SPACE 2 @Z40FPYK 16650240 SKIPTQE DS 0H @Z40FPYK 16650740 NI PSASUP1,CXFF-(PSASVC+PSATYPE6) SVC FLIH + @Z40FPYK 16651240 * TYPE 6 NO @Z40FPYK 16654240 * LONGER IN @Z40FPYK 16657240 * CONTROL @Z40FPYK 16660240 SPACE 2 @Z40FPYK 16660940 */* P PURGE FRR STACK USED BY TYPE 6 SVC */ 16661640 SETFRR P,WRKREGS=(R2,R3) @ZA15765 16662340 SPACE 2 @Z40FPYK 16663240 */* P INDICATE DISPATCHER IN CONTROL */ @Z40FPYK 16666240 SPACE 2 @Z40FPYK 16669240 OI PSASUP1,PSADISP INDICATE DISPATCHER IN @Z40FPYK 16672240 * CONTROL @Z40FPYK 16675240 SPACE 2 @Z40FPYK 16678240 */* P GET ADDRESS OF DISPATCHER SRB ROUTINE */ @Z40FPYK 16679240 SPACE 2 @Z40FPYK 16680240 * AT THIS TIME THE DISPATCHER JOB STEP TIMING ROUTINE WILL @Z40FPYK 16682240 * BE INVOLKED. THIS FUNCTION WILL CLOBBER REG 9 WHICH IS @Z40FPYK 16682840 * OUR BASE REGISTER. REGISTER 9 ON RETURN TO THE SVC FLIH @Z40FPYK 16684240 * WILL CONTAIN THE DISPATCHER'S BASE REGISTER. THIS WILL BE @Z40FPYK 16685240 * USED AS THE BASE WHEN WE GO TO THE SRB ROUTINE @Z40FPYK 16686240 SPACE 2 @Z40FPYK 16687240 */* S DISPJST:CALCULATE JOB STEP TIMING */ @Z40FPYK 16692240 SPACE 2 @Z40FPYK 16742240 L R14,DISPJST CALCULATE JOB STEP @Z40FPYK 16792240 BALR R14,R14 TIMING FOR TASK @Z40FPYK 16822240 SPACE 2 @Z40FPYK 16892240 */* P RESET TCB ACTIVE STATE */ @Z40FPYK 16893740 SPACE 2 @Z40FPYK 16893840 SR R1,R1 RESET TCB ACTIVE @Z40FPYK 16894040 ST R1,TCBXSCT CLEAR CPUID AND ACTIVE @Z40FPYK 16894140 SPACE 2 @Z40FPYK 16894340 */*ACTASK: P DECREMENT COUNT OF CPU'S IN MEMORY */ @Z40FPYK 16894440 SPACE 2 @Z40FPYK 16895240 L R3,ASCBCPUS ACTIVE CPUS IN MEMORY @Z40FPYK 16895340 ACTASK DS 0H @Z40FPYK 16896340 LR R2,R3 DUPLICATE COUNT FOR CS @Z40FPYK 16896440 BCTR R2,0 DECREMENT BY 1 @Z40FPYK 16896540 SPACE 2 @Z40FPYK 16896640 */* D (YES,ACTASK,NO,) UPDATE FAIL ? */ @Z40FPYK 16896740 SPACE 2 @Z40FPYK 16896840 CS R3,R2,ASCBCPUS UPDATE CPU COUNT @Z40FPYK 16896940 BNE ACTASK FAIL -- TRY AGAIN @Z40FPYK 16897040 SPACE 2 @Z40FPYK 16897140 */* P TAKE OUT OF TASK MODE */ @Z40FPYK 16897240 SPACE 2 @Z40FPYK 16897340 ST R1,PSATNEW ZERO PSA TCB NEW @Z40FPYK 16897440 ST R1,PSATOLD ZERO PSA TCB OLD @Z40FPYK 16897540 SPACE 2 @Z40FPYK 16897640 */* P RESTORE SRB TO R2 FOR DISP ROUTINE */ @Z40FPYK 16897740 SPACE 2 @Z40FPYK 16897840 LR R2,R5 SRB FOR DISPATCHER @Z40FPYK 16897940 SPACE 2 @Z40FPYK 16898040 */* P SET UP ASCB FOR DISPATCHER ROUTINE */ @Z40FPYK 16898140 SPACE 2 @Z40FPYK 16898240 LR R5,R8 ASCB MUST BE IN R5 @Z40FPYK 16899240 SPACE 2 @Z40FPYK 16900940 */* P ACQUIRE DISPATCHER LOCK */ @Z40FPYK 16901140 SPACE 2 @Z40FPYK 16901340 * FOLLOWING IS CODE THAT WOULD BE GENERATED BY A SETLOCK @Z40FPYK 16901540 * SETLOCK OBTAIN,TYPE=DISP,MODE=UNCOND,RELATED=(DISP) @Z40FPYK 16902040 L R13,AGSLDISP ADDRESS OF LOCK MGR @Z40FPYK 16902140 BALR R14,R13 GO TO LOCK MGR @Z40FPYK 16902240 SPACE 2 @Z40FPYK 16902340 */* E DISP SRB ROUTINE */ @Z40FPYK 16902440 SPACE 2 @Z40FPYK 16903140 L R15,DISPSRB SRB DISP ROUTINE ADDR @Z40FPYK 16903240 BR R15 GO TO DISPATCHER @Z40FPYK 16905240 EJECT 16905340 * CPU AFFINITY WAS SPECIFIED FOR THE SRB. @ZA20352 16905440 * CHECK WHETHER THE AFFINITY IS TO THIS CPU. @ZA20352 16905540 * 16906040 CHKAFFIN DS 0H @ZA20352 16906140 L R1,PSAPCCAV PCCA ADDRESS @ZA20352 16906240 USING PCCA,R1 @ZA20352 16906340 LH R1,PCCACAFM CPU'S ADDR. AS BIT MASK @ZA20352 16906440 DROP R1 @ZA20352 16906540 NR R1,R7 CAN SRB RUN ON THIS CPU @ZA20352 16906640 BNZ AFFINOK YES, RETURN TO MAINLINE @ZA20352 16906740 * 16908140 * SRB CAN NOT RUN ON THIS CPU. FALL THROUGH TO SCHEDULE @ZA20352 16908240 * THE SRB TO RUN LATER. @ZA20352 16908340 * @ZA20352 16908440 SCHEDULE SRB=(R5),SCOPE=LOCAL @ZA20352 16908540 * 16909440 * FALL THROUGH TO CLEAN UP AND EXIT TO DISPATCHER @ZA20352 16909540 EJECT @Z40FPYK 16910540 * EXIT TO THE DISPATCHER 16910640 * 16910740 */*DISPEXIT: P RESET SVC FLIH + TYPE 6 FLAGS */ @Z40FPYK 16910840 SPACE 2 @Z40FPYK 16910940 DISPEXIT DS 0H @Z40FPYK 16911040 NI PSASUP1,CXFF-(PSASVC+PSATYPE6) RESET SVC FLIH + @Z40FPYK 16911140 * TYPE 6 FLAGS @Z40FPYK 16911240 SPACE 2 @Z40FPYK 16911440 */* P PURGE FRR STACK USED BY TYPE 6 SVC */ 16911640 SETFRR P,WRKREGS=(R2,R3) @ZA15765 16911840 SPACE 2 @Z40FPYK 16912240 */* E MAIN DISPATCHER ENTRY */ @Z40FPYK 16917240 SPACE 2 @Z40FPYK 16918240 L DISPRTN,AIEAPDS7 MAIN DISPATCHER ENTRY @Z40FPYK 16919240 BR DISPRTN GO TO DISPATCHER @Z40FPYK 16920240 EJECT @Z40FPYK 16920740 */*ABNDASCB: P INVALID REQUEST = ABEND 0FD */ @Z40FPYK 16922240 SPACE 2 @Z40FPYK 16922540 ABNDASCB DS 0H @Z40FPYK 16924240 NI PSASUP1,CXFF-(PSASVC+PSATYPE6) RESET SVC FLIH + @Z40FPYK 16924340 * TYPE 6 FLAGS @Z40FPYK 16924440 LA R1,COMPCDD SET UP ABEND CODE @Z40FPYK 16924540 SPACE 2 @Z40FPYK 16924840 */* E ABEND 0FD */ @Z40FPYK 16927240 SPACE 2 @Z40FPYK 16928240 CALLRTM TYPE=SVCERR,COMPCOD=(1) @Z40FPYK 16928740 EJECT @Z40FPYK 16929440 * PREPARE TO RETURN TO CALLER 16930240 * 16930540 */*RETCALL: P (,CALLER) SET UP COMMON CALLER BASE */ @Z40FPYK 16956240 SPACE 2 @Z40FPYK 16959240 RETCALL DS 0H @Z40FPYK 16962240 L BASEREG,CALLBASE COMMON BASE FOR CALLER @Z40FPYK 16965240 USING CALLER,BASEREG AND BR 14 EXITS @Z40FPYK 16968240 B CALLER GO TO THE COMMON @Z40FPYK 16971240 * CALLER AND BR14 CODE @Z40FPYK 16974240 SPACE 2 @Z40FPYK 16986240 */* FOOTING 16992240 */* 17042240 */* */ 17092240 */*IEAVESVC: END SVC FLIH */ 17142240 EJECT 17162240 *********************************************************************** 17242240 * * 17292240 * CONSTANTS & STORAGE * 17342240 * * 17392240 *********************************************************************** 17442240 EXTRN TRSVC 17492240 ATRSVC DC A(TRSVC) TRACE ENTRY POINT 17542240 LLCO DC V(LLCOSVCF) LOCK MGR -- LOCAL LOCK OBTAIN 17592240 AGSLDISP DC V(GSLSDISP) ENTRY--DISP LOCK OBTAIN @Z40FPYK 17612240 ESRTBBGN DC V(IGC109) BEGINNING OF ACTUAL ESR @ZA12726 17622240 * TABLE @ZA12726 17632240 ESRTBEND DC V(ESREND) END OF ESRTABLE 17642240 EXTRN IEAPDS7 17692240 AIEAPDS7 DC A(IEAPDS7) DISPATCHER ENTRY POINT 17742240 EXTRN SVCTABLE 17792240 SVCTAB DC A(SVCTABLE) SVC TABLE ENTRY POINT 17842240 KRBPRFXL DC AL4(RBPRFLNA) LENGTH OF RB PREFIX 17892240 FOUR DC H'4' COMPARE VALUE 17942240 CALLBASE DC A(CALLER) BASE FOR CALLER EXIT @Z40FPYK 17962240 ALHSNPSW DS 0F ENABLED LEFT HALF SVC NPSW 17992240 DC X'070C0000' 18042240 IDSVRB DC C'SVRB' ID FOR SVRB POOL BLOCK @Z40FPYJ 18092240 LENMBCB DC A(MBCBLEN) LENGTH OF MBCB BLOCK @Z40FPYJ 18142240 SVRBMASK DC X'00' MASK FOR SETTING SVRB @Z40FPYJ 18192240 DC AL1(SVRBDWDS) LENGTH @Z40FPYJ 18242240 DC AL1(RBFTSVRB) TYPE @Z40FPYJ 18292240 DC AL1(RBFDYN+RBATTN) AND FLAGS @Z40FPYJ 18342240 DISPJST DC V(DSJSTCSR) DISPATCHER JOB STEP @Z40FPYK 18348240 * TIMING ROUTINE @Z40FPYK 18354240 DISPSRB DC V(DSSRBRTN) DISPATCHER GLOBAL SRB @Z40FPYK 18360240 * SCHEDULING ROUTINE @Z40FPYK 18366240 EXPEPA DC V(EXPEPAT6) EXIT PROLOGUE TYPE 6 @Z40FPYK 18372240 * ENTRY POINT ADDRESS @Z40FPYK 18378240 HITIME DS 0D @Z40FPYK 18379240 DC X'7FFFFFFFFFFFFFFF' HIGH CPU INTERVAL TIMER @Z40FPYK 18380240 KTCBPRFX DC A(-(TCB-TCBFRS)) TCB PREFIX DECREMENT VAL@Z40FPYK 18381240 TITLE 'IEAVESVC- PCCA DSECT MAPPING' @Z40FPYK 18382240 IHAPCCA @Z40FPYK 18383240 TITLE 'IEAVESVC- TQE DSECT MAPPING' @Z40FPYK 18384240 IHATQE @Z40FPYK 18385240 TITLE 'IEAVESVC- LCCA DSECT MAPPING' 18392240 IHALCCA 18442240 TITLE 'IEAVESVC- PSA MAPPING' 18492240 IHAPSA 18542240 TITLE 'IEAVESVC- ASCB DSECT MAPPING' 18592240 IHAASCB 18642240 TITLE 'IEAVESVC- ASXB DSECT MAPPING' 18692240 IHAASXB 18742240 TITLE 'IEAVESVC- TCB DSECT MAPPING' 18792240 IKJTCB 18842240 TITLE 'IEAVESVC- RB DSECT MAPPING' 18892240 IKJRB 18942240 TITLE 'IEAVESVC- SRB DSECT MAPPING' @Z40FPYK 18952240 IHASRB @Z40FPYK 18962240 TITLE 'IEAVESVC- SVC DSECT MAPPING' 18992240 IHASVC 19042240 TITLE 'IEAVESVC- MBCB DSECT MAPPING' @Z40FPYK 19052240 IHAMBCB @Z40FPYK 19062240 TITLE 'IEAVESVC- CVT DSCET MAPPING' 19092240 CVT DSECT=YES,PREFIX=NO,LIST=YES 19142240 TITLE 'IEAVESVC- WSAV DSECT MAPPING' 19192240 IHAWSAVT DSECT=YES 19242240 TITLE 'IEAVESVC- FRRS DSECT MAPPING' 19252240 IHAFRRS 19262240 TITLE 'IEAVESVC- SS SCREEN TABLE DSECT' 19292240 *********************************************************************** 19342240 * 19392240 * PURPOSE - 19442240 * THE SUBSYSTEM SCREEN TABLE SPECIFIES WHICH SVC'S ARE ALLOWED 19492240 * TO BE ISSUED BY A TASK, AND WHICH ARE BEING SCREENED 19542240 * AGAINST. THIS AREA IS INITIALIZED BY THE SUB SYSTEM WHICH MAY 19592240 * WISH TO RESTRICT CERTAIN TASKS FROM ISSUING A SUBSET OF SVC'S. 19642240 * USAGE - 19692240 * IT IS ACTIVATED FOR A TASK BY SETTING THE TCBSVCS FLAG IN 19742240 * TCBFLGS7 AND SETTING TCBSVCA2 TO THE ADDRESS OF THE SCREEN 19792240 * TABLE. 19842240 * A REQUEST FOR AN SVC BEING SCREENED AGAINST WILL BE CONVERTED 19892240 * TO THE SVC REQUEST SPECIFIED AT THE TOP OF THE SCREEN TABLE. 19942240 * EACH SVC (0-255) IS MAPPED INTO A BYTE IN THE SCREEN TABLE, 19992240 * STARTING AT SSTMASK AND IN ASCENDING ORDER. WHETHER OR NOT 20042240 * THE SVC MAY BE ISSUED MAY BE DETERMINED BY THE SSTSVCOK FLAG. 20092240 * 20142240 *********************************************************************** 20192240 SPACE 2 20242240 SSTAB DSECT SUB SYSTEM SCREEN TABLE @Z40EPVC 20292240 SSTSVCN DS D SUBSYSTEM SVC ENTRY @Z40EPVC 20342240 SSTMASK DS CL256 SVC SCREENING MASK @Z40EPVC 20392240 SSTSVCOK EQU X'80' SVC MAY BE ISSUED @Z40EPVC 20442240 SSTEND EQU * @Z40EPVC 20492240 SSTSIZE EQU SSTEND-SSTAB SIZE OF SCREEN TABLE @Z40EPVC 20542240 SPACE 4 20592240 TITLE 'IEAVESVC- EQUATES' 20642240 *********************************************************************** 20692240 * * 20742240 * REGISTER EQUATES * 20792240 * * 20842240 *********************************************************************** 20892240 CVTREG2 EQU 13 CVT ADDRESS 20942240 COREREG EQU 0 STORAGE LOCATION REGISTER 20992240 CCABASE EQU 7 LCCA BASE ADDRESS 21042240 CCABASE2 EQU 10 LCCA ADDRESS 21092240 R0 EQU 0 GENERAL REGISTER 21142240 R3 EQU 3 GENERAL REGISTER @Z40FPYJ 21192240 R11 EQU 11 GENERAL REGISTER @Z40FPYJ 21242240 R14 EQU 14 GENERAL REGISTER @Z40FPYJ 21292240 R15 EQU 15 GENERAL REGISTER 21342240 WORKREG EQU 14 WORK REGISTER 21392240 SVRBNUM EQU 9 NUMBER OF SVRBS IN THE @Z40FPYJ 21442240 * POOL, WITH SOME PADDING 21492240 * LEFT BETWEEN THE RBS. 21542240 BASEREG EQU 9 BASE REGISTER 21592240 R1 EQU 1 GENERAL REGISTER 21642240 R7 EQU 7 GENERAL REGISTER 21692240 CVTREG EQU 3 CVT ADDRESS 21742240 XTRBASE EQU 10 TRACE ENTRY POINT ADDRESS 21792240 XTRET EQU 11 TRACE BR INSTRUCTION ADDRESS 21842240 XTCBREG EQU 4 TCB ADDRESS REGISTER 21892240 RBPTR EQU 5 RB ADDRESS 21942240 XRBPRFX EQU 8 RB PREFIX ADDRESS 21992240 SVCNREG EQU 6 SVC NUMBER REGISTER 22042240 SVCTABET EQU 6 SVC TABLE ADDRESS 22092240 RTCDREG EQU 15 RETURN CODE REGISTER 22142240 DISPRTN EQU 6 DISPATCHER ENTRY ADDRESS 22192240 XASCBREG EQU 7 ASCB ADDRESS 22242240 XASXBREG EQU 11 ASXB ADDRESS REGISTER 22292240 WSALREG EQU 11 WSAL ADDRESS REG 22342240 CPIDREG EQU 0 CPID REGISTER 22392240 R2 EQU 2 GENERAL REGISTER 22442240 R5 EQU 5 GENERAL REGISTER 5 @Z40FPYK 22452240 R8 EQU 8 GENERAL REGISTER 8 @Z40FPYK 22462240 R13 EQU 13 GENERAL REGISTER 22492240 SVCLKREG EQU 8 LOCKS NEEDED REGISTER 22542240 RTCDREG2 EQU 13 RETURN CODE REGISTER 22592240 RETREG EQU 14 RETURN ADDRESS 22642240 SVCENT EQU 6 SVC ENTRY POINT ADDRESS 22692240 PREVRB EQU 2 PREVIOUS RB ADDRES 22742240 WORKREG2 EQU 8 WORK REGISTER 22792240 ESRCODER EQU 15 ESR CODE = CALLER'S REG 15 22842240 SSTABPTR EQU 11 SS SCREEN TABLE ADDRESS @Z40EPVC 22892240 R4 EQU 4 REGISTER 4--WORK REG @Z40FPYK 22898240 R6 EQU 6 REGISTER 6--WORK REG @Z40FPYK 22912240 BASEREG2 EQU 10 T6EXIT BASE REGISTER @Z40FPYK 22915240 EJECT 22922240 *********************************************************************** 22942240 * * 22992240 * CONSTANT EQUATES * 23042240 * * 23092240 *********************************************************************** 23142240 C0 EQU 0 DISPLACEMENT VALUE 23192240 C1 EQU 1 DISPLACEMENT VALUE 23242240 C2 EQU 2 DISPLACEMENT VALUE 23292240 C3 EQU 3 DISPLACEMENT VALUE 23342240 C4 EQU 4 DISPLACEMENT VALUE 23392240 C16 EQU 16 DISPLACEMENT VALUE 23442240 C28 EQU 28 DISPLACEMENT VALUE 23492240 C52 EQU 52 DISPLACEMENT VALUE 23542240 C60 EQU 60 DISPLACEMENT VALUE 23592240 C64 EQU 64 DISPLACEMENT VALUE 23642240 CXF0 EQU X'F0' IMMEDIATE VALUE 23692240 CXFA EQU X'FA' IMMEDIATE VALUE 23742240 CXFF EQU X'FF' IMMEDIATE VALUE 23792240 SCBID EQU X'DB' SCB ID VALUE @Z40FPYJ 23842240 L8 EQU 8 LENGTH VALUE 23892240 L64 EQU 64 LENGTH VALUE 23942240 T255 EQU 255 LENGTH VALUE 23992240 EXSARB EQU RBGRSAVE+64-RBPRFXST REMAINDER RB AFTER GR SAVE AREA 24042240 M4 EQU 4 MASK VALUE 24092240 M8 EQU 8 MASK VALUE 24142240 M15 EQU 15 MASK VALUE 24192240 ONE EQU 1 GENERAL VALUE 24242240 TWO EQU 2 GENERAL VALUE 24292240 COMPCD2 EQU X'047' UNAUTHORIZED COMP CODE 24342240 COMPCD1 EQU X'0F8' SRB OR LOCKED ISSUER 24392240 COMPCD3 EQU X'0F9' UNABLE TO EXPAND SVRB POOL 24442240 COMPCDE4 EQU X'16D' INCORRECT ESR CODE 24492240 COMPCD7 EQU X'0FA' NO SVRB CORE FOR ABEND 24542240 COMPCDD EQU X'0FD' TYPE 6 INVALID SRB @Z40FPYK 24562240 AB13 EQU 13 ABEND SVC NUMBER 24592240 M10 EQU 10 MASK VALUE 24642240 M12 EQU 12 MASK VALUE 24692240 SVRBDWDS EQU (SVRBLEN+7)/8 CALCULATE SVRB IN DWORDS 24742240 ENABLE EQU X'03' MASK FOR STOSM 24792240 END 25392240