TITLE 'IEAVEPCR- PC FLIH RECOVERY ROUTINE' 00110002 * /* START OF SPECIFICATIONS **** 00120002 * 00130002 *01* MODULE-NAME = IEAVEPCR 00150002 * 00200002 *02* CSECT-NAME = IEAVEPCR 00250002 * 00300002 *01* DESCRIPTIVE-NAME = PROGRAM FLIH RECOVERY ROUTINE 00350002 * 00400002 *01* COPYRIGHT = NONE 00450002 * 00500002 *01* STATUS = VERSION 1 00550002 * 00600002 *01* FUNCTION = PROGRAM FLIH RECOVERY HAS TWO PARTS: 00650002 * IEAVEPCR: PROGRAM FLIH RECOVERY ROUTINE 00652002 * WHEN RECOVERY IS INITIATED FOR THE PROGRAM CHECK 00660002 * FIRST LEVEL INTERRUPT HANDLER, THE SUPER FRR WILL 00700002 * INDICATE A RETRY TO IEAVEPCR. THIS ROUTINE WILL 00750002 * CLEAR THE PC FLIH RECURSION INDICATORS, MAKING THE 00800002 * FUNCTION OPERABLE. IT WILL ALLOW PERCOLATION TO 00850002 * THE PREVIOUS LEVEL OF RECOVERY. 00900002 * 00954002 * IEAVEFRE:= SUSPENDED SRB RMTR 00960002 * THIS PART OF IEAVEPCR IS ENTERED OF A SUSPENDED 00962002 * SRB IS PURGED OFF THE SCHEDULEING QUEUE. ITS 00964002 * FUNCTION IS TO FREE THE STORAGE ALLOCATED FOR THE 00966002 * SUSPENDED SRB. 00968402 * 00990002 *02* OPERATION = 01000002 * IEAVEPCR ENTRY = 01050002 * CLEAR THE PC FLIH RECURSION INDICATORS; 01100002 * FLIP THE FRR STACK TO THE PREVIOUS CURRENT STACK; 01150002 * SET ABEND CODE IN REG 1 FOR SVC 13; 01200002 * EXIT TO IEAVEABD TO PERFORM ABEND; 01250002 * 01300002 * IEAVEFRE ENTRY= 01310002 * CALL FREECELL TO FREE SRB CONTROL BLOCK; 01320002 * IF RETURN CODE NOT EQUAL 0 01330002 * THEN CALL FREEMAIN; 01340002 * EXIT BACK TO CALLER; 01342002 *01* NOTES = 01350002 * 01400002 *02* DEPENDENCIES = 01560002 * RTM: 01570002 * RECOVERY IS CONTROLLED BY USE OF THE FRR STACK MECHANISM. 01580002 * 01590002 * IEAVESVR: 01592002 * THE SVC FLIH RECOVERY ROUTINE CONTAINS A COMMON 01594002 * SECTION, STARTING AT THE EXTERNAL LABEL IEAVEABD, 01596002 * WHICH WILL ABEND THE CURRENT TASK, AND PERCOLATE 01598002 * THE ERROR. 01598402 * 01598802 * FREECELL: 01599202 * FREECELL WILL NOT DESTROY THE SSRB ADDRESS IN 01599602 * REG 1 IF IT IS UNSUCCESSFUL 01599702 * 01599802 *03* CHARACTER-CODE-DEPENDENCIES = NONE 01690802 * 01695402 *02* RESTRICTIONS = RMTR MUST NOT LEAVE SUPERVISOR STATE, AND CAN 01700002 * NOT ISSUE ESTEA WITH BRANCH ENTRY 01710002 * 01750002 *02* REGISTER-CONVENTIONS = SEE EQUATE SECTION OF MODULE 01800002 * 01850002 *02* PATCH-LABEL = NONE 01900002 * 01960002 *01* MODULE-TYPE = PROCEDURE 02000002 * 02050002 *02* PROCESSOR = ASSEMBLER 02100002 * 02150002 *02* MODULE-SIZE = 100 BYTES 02200002 * 02300002 *02* ATTRIBUTES = NUCLEUS 02350002 * REUSABLE 02400002 * REENTRANT 02450002 * ZERO PROTECT KEY 02500002 * SUPERVISOR MODE 02550002 * 02600002 *01* ENTRY-POINT = IEAVEPCR 02650002 * 02700002 *02* PURPOSE = THIS ENTRY TO IEAVEPCR WILL CLEAN UP THE PC 02750002 * FLIH'S RESOURCES, AND ALLOW PERCOLATION TO THE 02800002 * NEXT LEVEL OF RECOVERY. 02850002 * 02900002 *02* LINKAGE = SUPER FRR WILL INDICATE A RETRY TO IEAVEPCR. 02950002 * RTM WILL PASS CONTROL VIA BR 15. 03000002 * 03050002 *02* INPUT = 03100002 * 03150002 *03* ENVIRONMENT = DISABLED 03200002 * SUPERVISOR 03250002 * KEY 0 03300002 * NO LOCKS HELD 03350002 * 03400002 *03* DATA = DATA AREAS IN PSA AND LCCA 03450002 * 03500002 *03* REGISTERS = REG 15 = ENTRY POINT ADDRESS 03550002 * 03600002 *02* OUTPUT = 03650002 * 03700002 *03* DATA = CURRENT FRR STACK = PREVIOUS CURRENT 03750002 * PC FLIH'S RECURSION BITS CLEARED 03800002 * 03850002 *03* REGISTERS = REG 1 = ABEND CODE 03900002 * REG 15 = ADDR IEAVEABD 03910002 * ALL OTHERS AS ENTERED 03920002 * 03950002 *01* ENTRY-POINT = IEAVEFRE 03960002 * 03970002 *02* PURPOSE = THIS ENTRY TO IEAVEPCR WILL FREE THE STORAGE 03980002 * ALLOCATED FOA A SUSPENDED SRB. 03982002 * 03994002 *02* LINKAGE = CALLER WILL RESOLVE V-CON AND 03996002 * BALR 14, 15. 03998002 * 03998402 *02* INPUT = 03998802 * 03999202 *03* ENVIRONMENT = ENABLED 03999602 * SUPERVISOR 03999702 * KEY 0 03999802 * NO LOCKS HELD 03999902 * 04016602 *03* DATA = NONE 04026602 * 04028602 *03* REGISTERS = 04030602 * REG 1 = ADDR DEQUEUED SRB 04031002 * REG 14 = RETURN ADDRESS TO CALLER 04031102 * REG 15 = ENTRY POINT TO RMTR 04031402 * 04032602 *02* OUTPUT = 04033002 * 04033102 *03* DATA = NONE 04033202 * 04040802 *03* REGISTERS = NONE 04042802 * 04044002 *02* REGISTERS-SAVED = NONE 04044402 * 04050002 *02* REGISTER-USAGE = REG 1 = ABEND CODE 04100002 * REG 15 = ADDR IEAVEABD 04160002 * REG 0-7,14 & 15 DESTROYED BY FREECELL/ 04170002 * FREEMAIN INNERFACES 04192002 * 04194002 *02* REGISTERS-RESTORED = ALL AS ON ENTRY EXCEPT AS NOTED ABOVE 04200002 * 04250002 *01* EXIT-IEAVEPCR NORMAL = TO IEAVEABD WHO ISSUES AN SVC 13. 04300002 * 04350002 *02* CONDITIONS = THE CURRENT TASK MUST BE TERMINATED FOR 04400002 * RECOVERY PURPOSES. 04450002 * 04500002 *02* OUTPUT = NONE 04550002 * 04600002 *02* RETURN-CODES = NONE 04650002 * 04700002 *01* EXIT-IEAVEFRE NORMAL = BACK TO CALLER. 04710002 * 04720002 *02* CONDITIONS = STORAGE FOR THE SSRB HAS BEEN FREED 04730002 * 04742002 *02* OUTPUT = NONE 04744002 * 04746002 *02* RETURN-CODES = NONE 04748002 * 04748402 *01* EXIT-ERROR = NONE 04750002 * 04800002 *01* EXTERNAL-REFERENCES = 04850002 * 04900002 *02* ROUTINES = TO IEAVEABD (ON EXIT) TO ISSUE AN SVC 13 04950002 * FREECELL (MACRO INNERFACE) 05010002 * FREEMEAIN (MACRO INNERFACE) 05020002 * 05030002 *02* DATA-AREAS = 05050002 * PSAPI -- PC FLIH RECURSION BIT IN PSASUP1 05100002 * PSALCCAV -- ADDRESS LOGICAL CCA 05120002 * LCCAPSG1 -- SEGMENT RECURSION BIT 05150002 * PCCAPDAT -- TRANSLATION RECURSION BIT 05200002 * LCCAPPIE -- PIE RECURSION BIT 05250002 * PSAAOLD -- ASCB ADDRESS 05310002 * SSRBSIZE -- SIZE OF SUSPENDED SRB 05320002 * PSACSTK -- CURRENT FRR STACK POINTER 05330002 * PSAPSAV -- PC FLIH STACK POINTER SAVE AREA 05340002 * 05342002 *02* CONTROL-BLOCKS = PSA R/W 05350002 * LCCA R/W 05400002 * CVT R 05460002 * SSRB R 05470002 * 05480002 *01* TABLES = NONE 05500002 * 05550002 *01* MACROS = FREEMAIN RC,LV=SSRBSIZE,A=(1),SP=245,BRANCH=YES 05600002 * FREECELL CPUID=(0),CELL=(1),SAVE=NO,BRANCH=YES 05660002 * 05670002 *02* SERIALIZATION = DISABLE 05700002 * 05750002 *01* CHANGE-ACTIVITY = Y021104 05800002 * 05850002 *01* MESSAGES = NONE 05900002 * 05950002 *01* ABEND-CODES = X'4FC' 06000002 * NOTE = THE X'4FC' ABEND CODE MAY BE ISSUED BY THE PROGRAM 06010003 * FLIH IN THE CASE OF LOW CORE OVERLAY. IN THAT CASE 06020003 * THE INCORRECT VALUES IN LOCATIONS X'208' - '217' ARE IN 06030003 * THE FIRST FOUR REGISTERS. REFERENCE PTM VS08516. 06040003 * 06050002 **** END OF SPECIFICATIONS ***/ 06100002 EJECT 06110002 IEAVEPCR CSECT 06150002 SPACE 2 06160002 */*IEAVEPCR: CHART PC FLIH FRR */ 06170002 */* HEADER 06180002 */* 06190002 */* 06192002 */* 06194002 */* SECTION 3.1.8.3 06196002 */* PC FLIH RECOVERY ROUTINE 06198002 */* PAGE # */ 06198402 */* E ENTRY IEAVEPCR */ 06198802 */* P CLEAR THE PC FLIH RECURSION INDICATOR */ 06199202 */* P FLIP THE FRR STACK TO PREVIOUS CURRENT STACK */ 06199702 */* P SET ABEND CODE IN REG 1 FOR SVC 13 */ 06199802 */* P EXIT TO IEAVEABD TO PERFORM ABEND */ 06199902 */* R IEAVEABD */ 06216602 */*IEAVEFRE: E ENTRY IEAVEFRE */ 06218602 */* L CALL FREECELL TO FREE SRB CONTROL BLOCK */ 06220602 */* D (YES,EXIT,NO,) SSRB FREED? */ 06222602 */* L CALL FREEMAIN TO FREE SSRB */ 06224602 */*EXIT: R RETURN TO CALLER */ 06225002 */* FOOTING 06226602 */* 06228602 */* */ 06230602 */*IEAVERER: END PC FLIH FRR */ 06232602 EJECT 06233002 *********************************************************************** 06233102 * * 06233202 * EQUATES * 06238802 * * 06240802 *********************************************************************** 06242802 PCCODE EQU X'4FC' PC FLIH ABEND CODE 06244402 CPUIDREG EQU 0 CPU ID FIELD FOR FREECELL 06250002 CODEREG EQU 1 GENERAL REGISTER 1 06300002 SAVEREG EQU 5 SAVE AREA FOR RETURN ADDRESS 06350002 R7 EQU 7 GENERAL REGISTER 7 06400002 SSRBSAVE EQU 7 SAVE REG FOR SSRB ADDRESS @YM08435 06420003 R14 EQU 14 GENERAL REGISTER 14 = RETURN ADDR 06450002 R15 EQU 15 GENERAL REGISTER 15 06500002 CCABASE EQU 1 BASE TO LCCA 06550002 SSRBPTR EQU 1 IEAVEFRE -- SSRB ADDRESS @YM08435 06555003 BASEREG EQU 6 BASE REG FOR SSRB RMTR 06560002 C0 EQU 0 06570002 CXFF EQU X'FF' 06600002 CX38 EQU X'38' 06650002 *********************************************************************** 06660002 * * 06670002 * IEAVEPCR MAINLINE * 06680002 * * 06690002 *********************************************************************** 06692002 USING PSA,0 06700002 USING LCCA,CCABASE 06750002 USING *,R15 REG 15 = ENTRY POINT ADDRESS 06800002 NI PSASUP1,CXFF-PSAPI 06850002 * CLEAR PC FLIH RECURSION BIT 06900002 L CCABASE,PSALCCAV ESTABLISH BASE TO LCCA 06950002 NI LCCAIHR1,CXFF-CX38 07000002 * CLEAR TRANSLATION RECURSION BIT 07050002 MVC PSACSTK,PSAPSAV CURRENT FRR STACK = OLD CURRENT 07100002 LA CODEREG,PCCODE PUT PC FLIH ABEND CODE IN REG 1 07150002 L R15,ADABEND BRANCH TO ABEND ROUTINE LOCATED IN 07200002 BR R15 IEAVESVR (SVC FLIH FRR) 07250002 *********************************************************************** 07250402 * * 07250802 * CONSTANTS & STORAGE * 07251202 * * 07251602 *********************************************************************** 07251702 ADABEND DC V(IEAVEABD) ADDRESS COMMON ABEND ROUTINE 07252002 TITLE 'IEAVEPCR- SUSPEND SRB RMTR (IEAVEFRE)' 07252402 *********************************************************************** 07254002 * * 07256002 * IEAVEFRE MAINLINE * 07258002 * * 07258402 *********************************************************************** 07258802 ENTRY IEAVEFRE 07260002 IEAVEFRE DS 0H SUSPENDED SRB RMTR 07300002 BALR BASEREG,C0 ESTABLISH ADDRESSABILITY 07310002 USING *,BASEREG 07350002 LR SAVEREG,R14 SAVE RETURN ADDRESS 07400002 LR SSRBSAVE,SSRBPTR SAVE SSRB ADDR ACROSS FREECELL 07410003 * INTERFACE @YM08435 07420003 L CPUIDREG,IDFIELD PUT ID IN REG 0 FOR FREECELL 07450002 FREECELL CPID=(0),CELL=(1),SAVE=NO,BRANCH=YES 07500002 LTR R15,R15 CHECK RETURN CODE FROM FREECELL 07550002 BZ EXIT IF SUCCESSFUL, RETURN 07600002 FREEMAIN RU,LV=SSRBLEN,A=(SSRBSAVE),SP=245 @YM08435 07700003 EXIT LR R14,SAVEREG RESTORE RETURN ADDRESS 07750002 BR R14 RETURN TO CALLER 07800002 *********************************************************************** 07810002 * * 07820002 * CONSTANTS & STORAGE * 07830002 * * 07840002 *********************************************************************** 07842002 IDFIELD DS 0F CELL POOL ID 07850002 DC C'SRB' SAVE AREA CELL POOL ID 07900002 DC X'00' 07950002 TITLE 'IEAVEPCR- SSRB DSECT MAPPING' 08000002 IHASSRB 08050002 TITLE 'IEAVEPCR- PSA MAPPING' 08060002 IHAPSA 08100002 TITLE 'IEAVEPCR- LCCA DSECT MAPPING' 08110002 IHALCCA 08150002 TITLE 'IEAVEPCR- CVT DSECT MAPPING' 08160002 CVT DSECT=YES,PREFIX=NO,LIST=NO 08200002 END 08250002