TITLE 'IEAVEIOR- I/O FLIH RECOVERY' 00110002 * /* START OF SPECIFICATIONS **** 00120002 * 00130002 *01* MODULE-NAME = IEAVEIOR 00150002 * 00200002 *02* CSECT-NAME = IEAVEIOR 00250002 * 00300002 *01* DESCRIPTIVE-NAME = I/O FLIH RECOVERY ROUTINE 00350002 * 00400002 *01* COPYRIGHT = NONE 00450002 * 00500002 *01* STATUS = VERSION 1 00550002 * 00600002 *01* FUNCTION = 00650002 * WHEN RECOVERY IS INITIATED FOR THE I/O FIRST LEVEL 00700002 * INTERRUPT HANDLER, THE SUPER FRR WILL INDICATE A RETRY 00750002 * TO THE IEAVEIOR. THIS ROUTINE WILL CLEAR THE I/O FLIH 00800002 * RECURSION INDICATOR, MAKING THE FUNCTION OPERABLE. IT 00850002 * WILL ALLOW PERCOLATION TO THE PREVIOUS LEVEL OF 00900002 * RECOVERY. 00950002 * 01000002 *02* OPERATION = 01050002 * 01100002 * IEAVEIOR ENTRY = 01150002 * 01200002 * CLEAR THE I/O FLIH RECURSION INDICATOR; 01250002 * FLIP THE FRR STACK TO THE NORMAL STACK; 01300002 * SET COMPLETION CODE IN REG 1 FOR ABEND; 01350002 * EXIT TO IEAVEABD TO PERFORM ABEND; 01400002 * 01450002 *01* NOTES = 01500002 * 01550002 *02* DEPENDENCIES = 01702002 * RTM: 01704002 * RECOVERY IS CONTROLLED BY USE OF THE FRR STACK MECHANISM. 01706002 * 01708002 * IEAVESVR: 01708402 * THE SVC FLIH RECOVERY ROUTINE CONTAINS A COMMON 01708802 * SECTION, STARTING AT THE EXTERNAL LABEL IEAVEABD, 01709202 * WHICH WILL ABEND THE CURRENT TASK, AND PERCOLATE 01709602 * THE ERROR. 01709702 * 01736702 *03* CHARACTER-CODE-DEPENDENCIES = NONE 01750002 * 01800002 *02* RESTRICTIONS = NONE 01850002 * 01900002 *02* REGISTER-CONVENTIONS = SEE EQUATE SECTION OF MODULE 01950002 * 02100002 *02* PATCH-LABEL = 02150002 * 02200002 *01* MODULE-TYPE = PROCEDURE 02250002 * 02300002 *02* PROCESSOR = ASSEMBLER 02350002 * 02400002 *02* MODULE-SIZE = 24 BYTES 02450002 * 02500002 *02* ATTRIBUTES = NUCLEUS 02550002 * REUSABLE 02600002 * REENTRANT 02650002 * DISABLED 02700002 * ZERO PROTECT KEY 02750002 * SUPERVISOR MODE 02800002 * 02850002 *01* ENTRY-POINT = IEAVEIOR 02900002 * 02950002 *02* PURPOSE = THIS IS THE ONLY ENTRY TO IEAVEIOR 03000002 * 03050002 *02* LINKAGE = SUPER FRR WILL INDICATE A RETRY TO IEAVEIOR 03100002 * RTM WILL PASS CONTROL VIA BR 15. 03150002 * 03200002 *02* INPUT = 03250002 * 03300002 *03* ENVIRONMENT = DISABLED 03350002 * SUPERVISOR 03400002 * KEY 0 03450002 * NO LOCKS HELD 03500002 * 03550002 *03* DATA = DATA AREAS IN PSA 03600002 * 03650002 *03* REGISTERS = REG 15 = ENTRY POINT ADDRESS 03700002 * 03750002 * 03800002 *02* OUTPUT = 03850002 * 03900002 *03* DATA = CURRENT FRR STACK = NORMAL 03950002 * I/O FLIH RECURSION BIT CLEARED 04000002 * 04050002 *03* REGISTERS = 04100002 * REG 1 = ABEND CODE 04150002 * REG 15= ADDRESS IEAVEABD 04200002 * ALL OTHERS AS ENTERED 04250002 * 04300002 *02* REGISTERS-SAVED = NONE 04350002 * 04400002 *02* REGISTER-USAGE = REG 1 = ABEND CODE 04450002 * REG 15= IEAVEABD ENTRY POINT ADDRESS 04500002 * 04550002 *02* REGISTERS-RESTORED = ALL AS ON ENTRY EXCEPT REG 1 & 15 04600002 * 04650002 *01* EXIT-NORMAL = TO IEAVEABD WHO ISSUES AN SVC 13 04700002 * 04750002 *02* CONDITIONS = THE CURRENT TASK MUST BE TERMINATED FOR 04800002 * RECOVERY PURPOSES. 04850002 * 04900002 *02* OUTPUT = NONE 04950002 * 05000002 *02* RETURN-CODES = NONE 05050002 * 05100002 *01* EXIT-ERROR = NONE 05150002 * 05200002 *01* EXTERNAL-REFERENCES = 05250002 * 05300002 *02* ROUTINES = TO IEAVEABD TO ISSUE AN SVC 13 (ON EXIT) 05350002 * 05400002 *02* DATA-AREAS = 05450002 * PSANSTK -- NORMAL FRR STACK POINTER 05500002 * PSACSTK -- CURRENT FRR STACK POINTER 05550002 * PSAIO -- I/O FLIH RECURSION BIT 05600002 * 05650002 *02* CONTROL-BLOCKS = PSA R/W 05700002 * 05750002 *01* TABLES = NONE 05800002 * 05850002 *01* MACROS = NONE 05900002 * 05950002 *01* SERIALIZATION = DISABLE 06000002 * 06050002 *01* CHANGE-ACTIVITY = Y021104 06100002 * 06150002 *01* MESSAGES = NONE 06200002 * 06250002 *01* ABEND-CODES = X'2FC' 06300002 * 06350002 **** END OF SPECIFICATIONS ***/ 06400002 EJECT 06410002 IEAVEIOR CSECT 06450002 SPACE 2 06452002 */*IEAVEIOR: CHART I/O FLIH FRR */ 06454002 */* HEADER 06456002 */* 06458002 */* 06458402 */* 06458802 */* SECTION 3.1.8.3 06459202 */* I/O FLIH RECOVERY ROUTINE 06459602 */* PAGE # */ 06459702 */*IEAVEIOR: E IEAVEIOR */ 06459802 */* P CLEAR THE I/O FLIH RECURSION INDICATOR */ 06463202 */* P FLIP THE FRR STACK TO THE NORMAL STACK */ 06465202 */* P SET ABEND CODE IN REG 1 FOR SVC 13 */ 06465602 */* P EXIT TO IEAVEABD TO PERFORM ABEND */ 06466002 */* R IEAVEABD */ 06466402 */* FOOTING 06466702 */* 06470002 */* */ 06480002 */*IEAVEIOR: END I/O FLIH FRR */ 06490002 EJECT 06492002 *********************************************************************** 06494002 * * 06496002 * EQUATES * 06498002 * * 06498402 *********************************************************************** 06498802 IOCODE EQU X'2FC' I/O FLIH ABEND CODE 06500002 CODEREG EQU 1 GENERAL REGISTER 1 06550002 R15 EQU 15 GENERAL REGISTER 15 06600002 CXFF EQU X'FF' CONSTANT = X'FF' 06650002 *********************************************************************** 06660002 * * 06670002 * IEAVEIOR MAINLINE * 06680002 * * 06690002 *********************************************************************** 06692002 USING PSA,0 06700002 USING *,R15 REG 15 = ENTRY POINT ADDRESS 06750002 NI PSASUP1,CXFF-PSAIO 06800002 * CLEAR I/O FLIH RECURSION BIT 06850002 MVC PSACSTK,PSANSTK MAKE CURRENT FRR STACK = NORMAL 06900002 LA CODEREG,IOCODE PUT IO FLIH ABEND CODE IN REG 1 06950002 L R15,ADABEND BRANCH TO ABEND ROUTINE LOCATED IN 07000002 BR R15 IEAVESVR (SVC FLIH FRR) 07050002 *********************************************************************** 07060002 * * 07070002 * CONSTANTS & STORAGE * 07080002 * * 07090002 *********************************************************************** 07092002 EXTRN IEAVEABD 07096002 ADABEND DC V(IEAVEABD) ADDRESS COMMON ABEND ROUTINE 07100002 TITLE 'IEAVEIOR- PSA MAPPING' 07110002 IHAPSA 07150002 END 07200002