TITLE 'IEAVPSI -- PAGE SERVICES INTERFACE ROUTINE' 00010002 * /* START OF SPECIFICATIONS **** 00050002 * 00100002 *01* MODULE-NAME = IEAVPSI 00150002 * 00300002 *02* CSECT-NAME = IEAVPSI 00350002 * 00450002 *01* DESCRIPTIVE-NAME = PAGE SERVICES INTERFACE (PSI) MODULE 00500002 * 00600002 *01* COPYRIGHT = NONE 00650002 * 00700002 *01* STATUS = OS/VS2 RELEASE 3.7 WITH SU7 00750040 * PTF LEVEL UZ09817 00900040 * 01000002 *01* FUNCTION = THIS MODULE RECEIVES ALL PAGE SERVICE REQUESTS, BOTH 01050002 * SVC AND BRANCH ENTRY. THE REQUESTS SERVICED ARE PGFIX, PGFREE, 01100002 * PGLOAD, PGRLSE, AND PGOUT. THIS MODULE CHECKS INPUT PARAMETERS 01110002 * FOR ERRORS AND ROUTES CONTROL BETWEEN THE PAGE SERVICES MODULES 01120002 * NECESSARY TO SATISFY THE INPUT REQUEST. 01130002 * 01150002 *02* OPERATION = THIS MODULE CREATES AN FRR RECOVERY ENVIRONMENT 01200002 * UPON ENTRY TO HANDLE ANY UNEXPECTED ERRORS THAT COULD ARISE. 01250002 * THESE WOULD BE ASSUMED TO BE ERRORS CAUSED BY USER SUPPLIED 01300002 * DATA. THE ROUTINE WORKS ALMOST EXCLUSIVELY WITH THE USER 01350002 * SUPPLIED PARAMETERS. 01360002 * 01400002 *01* NOTES = ALL ENTRY POINTS IN THIS MODULE SET UP A COMMON WORK 01450002 * AREA (CIWA) KNOWN TO ALL PAGE SERVICES MODULES. 01460002 * 01500002 *02* DEPENDENCIES = THIS MODULE WILL RUN ON ANY VS2 RELEASE 2 LEVEL 01550002 * HARDWARE/SOFTWARE CONFIGURATION. LOCKS REQUIRED AT ENTRY ARE 01600002 * DISCUSSED SEPARATELY FOR EACH ENTRY POINT. 01650002 * 01800002 *03* CHARACTER-CODE-DEPENDENCIES = NONE 01850002 * 01900002 *02* RESTRICTIONS = NONE 02050002 * 02100002 *02* REGISTER-CONVENTIONS = SEE REGISTER EQUATES BELOW 02200002 * 02400002 *02* PATCH-LABEL = NUCLEUS PATCH AREA 02450002 * 02600002 *01* MODULE-TYPE = PROCEDURE 02650002 * 02750002 *02* PROCESSOR = ASSEMBLER-S370R 02800002 * 03150002 *02* MODULE-SIZE = 2700 BYTES 03200002 * 03350002 *02* ATTRIBUTES = NUCLEUS, ZERO PROTECT KEY, DISABLED, REUSABLE, 03400002 * SUPERVISOR MODE, REFRESHABLE 03450002 * 03650002 *01* ENTRY-POINT = IGC112 03700002 * 03950002 *02* PURPOSE = ENTERED FROM SVC FLIH AS A RESULT OF THE ISSUANCE OF 04000002 * AN SVC INSTRUCTION GENERATED BY THE PGRLSE MACRO INSTRUCTION. 04050002 * 04100002 *02* LINKAGE = BALR 04150002 * 04350002 *02* INPUT = 04400002 * LOCKS HELD: LOCAL LOCK 04450002 * R0: LOW ADDRESS OF VIRTUAL AREA TO BE RELEASED 04500002 * R1: HIGH ADDRESS OF VIRTUAL AREA TO BE RELEASED 04550002 * R2: IRRELEVANT 04600002 * R3: CVT ADDRESS 04610002 * R4: TCB ADDRESS 04620002 * R5: RB ADDRESS 04630002 * R6: ENTRY POINT ADDRESS 04640002 * R7: ASCB ADDRESS 04642002 * R8-R13: IRRELEVANT 04644002 * R14: RETURN ADDRESS 04646002 * R15: IRRELEVANT 04648002 * 04650002 *02* OUTPUT = NO STREAM OR LIST OUTPUT 04700002 * 04800002 *02* REGISTERS-SAVED = 14 04850002 * 04950002 *02* REGISTERS-RESTORED = 14 05150002 * 05250002 *01* EXIT-NORMAL = RETURN 05300002 * 05500002 *02* CONDITIONS = USER'S REQUEST SATISFIED WITH NO ERRORS. RETURN 05550002 * IS MADE USING REGISTER 14. 05600002 * 05650002 *02* OUTPUT = 05700002 * LOCKS HELD: LOCAL LOCK 05750002 * R0-R13: UNPREDICTABLE 05800002 * R14: UNCHANGED 05850002 * R15: RETURN CODE 05900002 * 05950002 *02* RETURN-CODES = 06000002 * 0 - REQUEST SATISFIED SUCCESSFULLY 06050002 * 06200002 *01* EXIT-ERROR = RETURN4 06250002 * 06450002 *02* CONDITIONS = THE USER WAS NOT ALLOWED TO RELEASE PAGES 06500002 * SPECIFIED OR PROCESSING COULD NOT BE PERFORMED BY RSM BECAUSE 06550002 * OF BAD INPUT PARAMETERS OR SYSTEM CONDITIONS. RETURN IS MADE 06560002 * USING REGISTER 14. 06570002 * 06600002 *02* OUTPUT = 06650002 * LOCKS HELD: LOCAL LOCK 06700002 * R0-R13: UNPREDICTABLE 06750002 * R14: UNCHANGED 06800002 * R15: RETURN CODE 06850002 * 06900002 *02* RETURN-CODES = 06950002 * 4 - REQUEST NOT HONORED 07000002 * 07150002 *01* ENTRY-POINT = IGC113 07360502 * 07367302 *02* PURPOSE = ENTERED FROM SVC FLIH AS THE RESULT OF THE ISSUANCE 07367702 * OF AN SVC INSTRUCTION GENERATED BY A PGFIX, PGFREE, PGLOAD, OR 07368102 * PGOUT MACRO INSTRUCTION. 07368202 * 07368302 *02* LINKAGE = BALR 07368402 * 07368802 *02* INPUT = 07368902 * LOCKS HELD: LOCAL LOCK 07369302 * R0: ECB ADDRESS OR ZERO --- NOTE: THE ECB ADDRESS MUST BE 07369702 * A POSITIVE VALUE. IN OS/VS2 RELEASE 1, THE 07370102 * NEGATIVE ECB ADDRESS WAS USED TO INDICATE THE 07370502 * 'ECBIND' OPTION OF THE PAGE SERVICES. THIS MODE OF 07370902 * OPERATION IS NOT SUPPORTED BY THIS VERSION OF THE 07371302 * INTERFACE MODULE, THEREFORE, A NEGATIVE ECB ADDRESS 07371402 * IS TREATED AS AN INPUT PARAMETER ERROR. 07371502 * R1,R15: IF BYTE 0 BIT 0 OF R1=1, THEN R1 CONTAINS A POINTER 07371702 * TO A VIRTUAL SUBAREA LIST (VSL) AND R15 IS 07372102 * IRRELEVANT. 07372502 * IF BYTE 0, BIT 0 OF R1=0, THEN R1 AND R15 CONTAIN A 07372902 * VSL ENTRY. 07373002 * R2: IRRELEVANT 07396702 * R3: CVT ADDRESS 07397302 * R4: TCB ADDRESS 07397902 * R5: RB ADDRESS 07398302 * R6: ENTRY POINT ADDRESS 07398502 * R7: ASCB ADDRESS 07399102 * R8-R13: IRRELEVANT 07399702 * R14: RETURN ADDRESS 07400302 * 07400902 *02* OUTPUT = NO STREAM OR LIST OUTPUT 07401502 * 07402102 *02* REGISTERS-SAVED = 14 07402702 * 07403302 *02* REGISTERS-RESTORED = 14 07403902 * 07404502 *01* EXIT-NORMAL = EXITRTN 07405102 * 07405702 *02* CONDITIONS = THE INPUT REQUEST HAS BEEN SATISFIED OR IS IN THE 07406302 * PROCESS OF BEING SATISFIED IF PAGING I/O WAS REQUIRED. RETURN 07406902 * IS MADE USING REGISTER 14. 07407502 * 07408102 *02* OUTPUT = 07408702 * LOCKS HELD: UNCHANGED FROM ENTRY 07409302 * R0-R13: UNPREDICTABLE 07409902 * R14: UNCHANGED 07410502 * R15: RETURN CODE 07411102 * 07411702 * ECB: UNCHANGED IF RETURN CODE = 8. OTHERWISE, POSTED 07416502 * COMPLETE WITH POST CODE 07417102 * 0 - OPERATION COMPLETED SUCCESSFULLY. 07417702 * 07418302 * IF RETURN CODE = 8, POSTED COMPLETE WHEN PAGING I/O 07418902 * COMPLETES WITH POST CODE 07419502 * 0 - OPERATION COMPLETED SUCCESSFULLY. 07420102 * 4 - OPERATION TERMINATED ABNORMALLY. 07420702 * 07421302 *02* RETURN-CODES = 07421902 * 0 - OPERATION COMPLETED SUCCESSFULLY; ECB HAS BEEN POSTED 07422502 * IF PASSED AS INPUT. 07423102 * 8 - OPERATION PROCEEDING; ECB WILL BE POSTED WHEN PAGING I/O 07423702 * COMPLETES. 07424302 * 07424902 *01* EXIT-ERROR = EXITRTN 07425502 * 07426102 *02* CONDITIONS = THE INPUT REQUEST WAS IN ERROR FOR ONE OF THE 07426702 * REASONS LISTED WITH EACH RETURN CODE. THIS RETURN CODE IS 07427302 * LOADED INTO REGISTER 15 BEFORE THE ABEND IS ISSUED. EXIT IS 07427902 * MADE VIA THE ABEND MACRO INSTRUCTION. 07428502 * 07429102 *02* OUTPUT = 07429702 * LOCKS HELD: UNCHANGED FROM ENTRY 07430302 * R0-R13: UNPREDICTABLE 07430902 * R14: UNCHANGED 07431202 * R15: RETURN CODE 07431502 * 07432102 * VSL: IF A LIST FORM ENTRY WAS USED AND THE RETURN 07432702 * CODE = 4, THE VSL ENTRY CONTAINING THE BAD ADDRESS IS 07433302 * FLAGGED IN ERROR. ALL OTHER ENTRIES ARE UNCHANGED. 07433902 * OTHERWISE, ALL ENTRIES ARE UNCHANGED. 07434502 * 07435102 * ECB: POSTED COMPLETE WITH A POST CODE OF 4 IF THE RETURN 07435702 * CODE = 4. OTHERWISE, UNCHANGED. 07436302 * 07436902 *02* RETURN-CODES = 07437502 * 4 - OPERATION NOT DONE; INVALID ADDRESS IN VSL ENTRY OR 07438102 * REGISTER. ECB HAS BEEN POSTED COMPLETE. ABEND IS ISSUED 07438702 * FOR THE REQUESTOR'S TCB. 07439302 * 16 - INPUT PARAMETER ERROR. EITHER AN INVALID COMBINATION 07439902 * OF OPERATION OR OPTION FLAGS WAS SPECIFIED ON ENTRY, OR 07440502 * THE VSL, ECB OR TCB ADDRESSES WERE INVALID IF SUPPLIED. 07441102 * NO ECB IS POSTED IN THIS CASE. ABEND IS ISSUED FOR THE 07441702 * REQUESTOR'S TCB. 07442302 * BEFORE ABENDING THE CALLER, THESE REGISTERS ARE 07442902 * LOADED TO PERMIT DIAGNOSIS OF THE PARAMETER ERROR 07443502 * FROM DATA IN THE STORAGE DUMP. (X'171' ABEND ONLY) 07466302 * R11: THE ADDRESS OF THE INPUT VSL LIST OR 0 (R-FORM) 07466902 * R12: THE ADDRESS OF THE INPUT ECB. 07467202 * R13-R14: THE CURRENT VSL ENTRY BEING PROCESSED. 07467502 * R15: THE RETURN CODE. 07467802 * 07468102 *01* ENTRY-POINT = IEAVPSIB 07468402 * 07468702 *02* PURPOSE = BRANCH ENTERED FROM A SUPERVISOR STATE, KEY 0 07469302 * ROUTINE DESIRING A PAGE SERVICES FUNCTION. 07469902 * 07470502 *02* LINKAGE = BALR 07472302 * 07472902 *02* INPUT = 07473502 * LOCKS HELD: LOCAL LOCK 07475302 * R0: ECB ADDRESS OR ZERO --- NOTE: THE ECB ADDRESS MUST BE 07475902 * A POSITIVE VALUE. IN OS/VS2 RELEASE 1, THE 07476502 * NEGATIVE ECB ADDRESS WAS USED TO INDICATE THE 07478302 * 'ECBIND' OPTION OF THE PAGE SERVICES. THIS MODE OF 07478902 * OPERATION IS NOT SUPPORTED BY THIS VERSION OF THE 07479502 * INTERFACE MODULE, THEREFORE, A NEGATIVE ECB ADDRESS 07480702 * IS TREATED AS AN INPUT PARAMETER ERROR. 07481902 * R1,R2: IF BYTE 0 BIT 0 OF R1=1, THEN R1 CONTAINS A POINTER 07482502 * TO A VIRTUAL SUBAREA LIST (VSL) AND R2 IS 07484302 * IRRELEVANT. 07484902 * IF BYTE 0, BIT 0 OF R1=0, THEN R1 AND R2 CONTAIN A 07485502 * VSL ENTRY. 07487302 * R3: IRRELEVANT 07487902 * R4: TCB ADDRESS -- NOTE: IF A NULL (0) TCB ADDRESS IS GIVEN, 07488502 * THEN THE USER MUST TAKE THE RESPONSIBILITY FOR 07490302 * FREEING ANY PAGES FIXED AS A RESULT OF HIS PGFIX REQUEST, 07490902 * SINCE NO FOE'S ARE CREATED WHEN A NULL TCB IS PRESENTED. 07491502 * FOR PGFIX, PGLOAD AND PGOUT REQUESTS, THE USER SHOULD KNOW 07493302 * THAT PAGING I/O REQUESTS MADE WITH A ZERO TCB ADDRESS 07493902 * CANNOT BE RELATED TO ANY GIVEN TASK AND WILL NOT BE PURGED 07494502 * AT TASK TERMINATION. A ZERO TCB ADDRESS FOR PGRLSE HAS NO 07496302 * EFFECT. 07496902 * 07497502 * R5-R13: IRRELEVANT 07499302 * R14: RETURN ADDRESS 07499902 * R15: ENTRY POINT ADDRESS 07500502 * 07502302 *02* OUTPUT = NO STREAM OR LIST OUTPUT 07502902 * 07503502 *02* REGISTERS-SAVED = 0 - 14 (USES RSM LOCAL SAVE AREA) 07505302 * 07505902 *02* REGISTERS-RESTORED = 0 - 14 07506502 * 07508302 *01* EXIT-NORMAL = EXITRTN 07508902 * 07509502 *02* CONDITIONS = SAME AS ENTRY POINT IGC113 07511302 * 07511902 *02* OUTPUT = 07512502 * LOCKS HELD: UNCHANGED FROM ENTRY 07514302 * R0-R14: UNCHANGED 07514902 * R15: RETURN CODE 07515502 * 07517302 * VSL: SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07517902 * 07518502 * ECB: SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07520302 * 07520902 *02* RETURN-CODES = SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07521502 * 07522702 *01* EXIT-ERROR = EXITRTN 07523902 * 07524502 *02* CONDITIONS = SAME AS ENTRY POINT IGC113 07526302 * 07526902 *02* OUTPUT = 07527502 * LOCKS HELD: UNCHANGED FROM ENTRY 07529302 * R0-R14: UNCHANGED 07529902 * R15: RETURN CODE 07530502 * 07532302 * VSL: SAME AS ERROR EXIT FROM ENTRY POINT IGC113 07532902 * 07533502 * ECB: SAME AS ERROR EXIT FROM ENTRY POINT IGC113 07535302 * 07535902 *02* RETURN-CODES = SAME AS ERROR EXIT FROM ENTRY POINT IGC113 07536502 * 07538302 *01* ENTRY-POINT = IEAVPSIX 07538502 * 07538702 *02* PURPOSE = BRANCH ENTERED FROM THE I/O SUPERVISOR 07538902 * IN KEY ZERO, SUPERVISOR STATE FOR AN R-FORM PAGEFIX. 07541302 * 07541902 *02* LINKAGE = BALR 07544302 * 07547302 *02* INPUT = 07547902 * LOCKS HELD: LOCAL LOCK 07548102 * R0: ECB ADDRESS --- NOTE: THE ECB ADDRESS IS 07548302 * ASSUMED TO BE A POSITIVE VALUE. 07548502 * R1,R2: TOGETHER CONTAIN A VIRTUAL SUBAREA LIST (VSL). 07549402 * R3-R13: IRRELEVANT 07550302 * R14: RETURN ADDRESS 07551302 * R15: ENTRY POINT ADDRESS 07552302 * 07553302 *02* OUTPUT = NO STREAM OR LIST OUTPUT 07554502 * 07554602 *02* REGISTERS-SAVED = 0 - 14 (USES RSM LOCAL SAVE AREA) 07554702 * 07554802 *02* REGISTERS-RESTORED = 0 - 14 07554902 * 07555002 *01* EXIT-NORMAL = EXITRTN 07555102 * 07555202 *02* CONDITIONS = SAME AS ENTRY POINT IGC113 07555302 * 07555402 *02* OUTPUT = 07556302 * LOCKS HELD: UNCHANGED FROM ENTRY 07556602 * R0-R14: UNCHANGED 07556902 * R15: RETURN CODE 07557502 * 07557702 * ECB: SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07558302 * 07558502 *02* RETURN-CODES = SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07558702 * 07558902 *01* EXIT-ERROR = EXITRTN 07559102 * 07559302 *02* CONDITIONS = SAME AS ENTRY POINT IGC113 07559602 * 07559902 *02* OUTPUT = 07560002 * LOCKS HELD: UNCHANGED FROM ENTRY 07560102 * R0-R14: UNCHANGED 07560202 * R15: RETURN CODE 07560302 * 07560502 * ECB: SAME AS ERROR EXIT FROM ENTRY POINT IGC113 07561402 * 07561702 *02* RETURN-CODES = SAME AS ERROR EXIT FROM ENTRY POINT IGC113 07562002 * 07562302 *01* ENTRY-POINT = IEAVPSIF 07562402 * 07562502 *02* PURPOSE = BRANCH ENTERED FROM THE I/O SUPERVISOR 07562602 * IN KEY ZERO, SUPERVISOR STATE FOR AN L-FORM PAGEFREE. 07562702 * 07562902 *02* LINKAGE = BALR 07563102 * 07563302 *02* INPUT = 07563502 * LOCKS HELD: LOCAL LOCK 07564102 * R0: IRRELEVANT 07564702 * R1: CONTAINS THE ADDRESS OF A VIRTUAL SUBAREA LIST (VSL). 07565302 * R2-R13: IRRELEVANT 07565902 * R14: RETURN ADDRESS 07566502 * R15: ENTRY POINT ADDRESS 07567102 * 07567702 *02* OUTPUT = NO STREAM OR LIST OUTPUT 07568302 * 07569502 *02* REGISTERS-SAVED = 0 - 14 (USES RSM LOCAL SAVE AREA) 07569902 * 07570302 *02* REGISTERS-RESTORED = 0 - 14 07570702 * 07571302 *01* EXIT-NORMAL = EXITRTN 07571702 * 07572102 *02* CONDITIONS = SAME AS ENTRY POINT IGC113 07572502 * 07573402 *02* OUTPUT = 07574302 * LOCKS HELD: UNCHANGED FROM ENTRY 07574902 * R0-R14: UNCHANGED 07575102 * R15: RETURN CODE 07575302 * 07575502 * VSL: SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07575802 * 07576102 *02* RETURN-CODES = SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07576402 * 07576702 *01* EXIT-ERROR = EXITRTN 07577302 * 07577602 *02* CONDITIONS = SAME AS ENTRY POINT IGC113 07577902 * 07578102 *02* OUTPUT = 07578302 * LOCKS HELD: UNCHANGED FROM ENTRY 07578502 * R0-R14: UNCHANGED 07578902 * R15: RETURN CODE 07579302 * 07579702 * VSL: SAME AS ERROR EXIT FROM ENTRY POINT IGC113 07580002 * 07580302 *02* RETURN-CODES = SAME AS ERROR EXIT FROM ENTRY POINT IGC113 07580702 * 07581202 *01* ENTRY-POINT = IEAVPSII 07581702 * 07581802 *02* PURPOSE = BRANCH ENTERED FROM ANOTHER RSM ROUTINE REQUIRING A 07581902 * PAGE SERVICES FUNCTION. 07582002 * 07582102 *02* LINKAGE = BALR 07582202 * 07582302 *02* INPUT = 07582702 * LOCKS HELD: LOCAL AND SALLOC LOCKS --IT SHOULD BE NOTED THAT 07582802 * THE LOCAL LOCK IS REQUIRED IF EITHER A NON-ZERO TCB ADDRESS 07582902 * OR A NON-ZERO ECB ADDRESS IS GIVEN. 07583002 * R0: ZERO OR THE ADDRESS OF AN ECB RESIDING IN FIXED STORAGE. 07583102 * -- NOTE: A SYNCHRONOUS POST MAY BE ISSUED IF A NON-ZERO ECB 07583202 * ADDRESS IS PASSED. 07583302 * R1,R2: R1 AND R2 CONTAIN A VSL ENTRY. 07583402 * R3: PVT ADDRESS 07583502 * R4: TCB ADDRESS OR ZERO --- NOTE: FOR PGFIX OR PGFREE 07583602 * REQUESTS, AN FOE IS CREATED/DELETED IF A TCB ADDRESS IS 07583702 * PASSED. (THIS CAUSES A GETMAIN OR FREEMAIN TO OCCUR). IF A 07583802 * NULL TCB ADDRESS IS PASSED, NO FOE'S ARE CREATED, AND THE 07583902 * CALLER MUST ASSUME THE RESPONSIBILITY FOR ISSUING PGFREES 07584002 * FOR THOSE (AND ONLY THOSE) PAGES HE HAS CAUSED TO BE FIXED 07584102 * BY THIS NULL TCB REQUEST. ON PGOUT AND PGLOAD REQUESTS, THE 07584202 * TCB ADDRESS IS PLACED IN ANY PCB'S CREATED, SO THAT PAGING 07584302 * I/O MAY BE PURGED FOR THE GIVEN TASK. IF PAGING I/O SHOULD 07584402 * NOT BE PURGED ON TASK TERMINATION (OR IF IT DOESN'T MATTER) 07584502 * THEN A ZERO TCB ADDRESS MAY BE PASSED FOR THESE REQUESTS. 07584602 * NOTE ALSO THAT ALTHOUGH THE TCB SERVES NO PURPOSE ON PGRLSE 07584702 * REQUESTS, THE REGISTER MUST CONTAIN A VALID TCB ADDRESS, IF 07584802 * A NULL ADDRESS IS NOT GIVEN. 07584902 * R5-R13: IRRELEVANT 07585002 * R14: RETURN ADDRESS 07585102 * R15: ENTRY POINT ADDRESS 07585202 * 07585302 *02* OUTPUT = NO STREAM OR LIST OUTPUT 07585402 * 07585502 *02* REGISTERS-SAVED = 0 - 14 (USES PVTWSA4) 07585602 * 07585702 *02* REGISTERS-RESTORED = 0 - 14 07586202 * 07586702 *01* EXIT-NORMAL = EXITRTN 07587702 * 07588902 *02* CONDITIONS = SAME AS ENTRY POINT IGC113 07589902 * 07590902 *02* OUTPUT = 07591902 * LOCKS HELD: UNCHANGED FROM ENTRY 07592902 * R0-R14: UNCHANGED 07593902 * R15: RETURN CODE 07594902 * 07595902 * VSL: SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07596902 * 07598102 * ECB: SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07599102 * 07600102 *02* RETURN-CODES = SAME AS NORMAL EXIT FROM ENTRY POINT IGC113 07601102 * 07602102 *01* EXIT-ERROR = EXITRTN 07603102 * 07604102 *02* CONDITIONS = SAME AS ENTRY POINT IGC113 07605102 * 07606102 *02* OUTPUT = 07607302 * LOCKS HELD: UNCHANGED FROM ENTRY 07608202 * R0-R14: UNCHANGED 07609102 * R15: RETURN CODE 07610002 * 07610902 * VSL: SAME AS ERROR EXIT FROM ENTRY POINT IGC113 07611802 * 07612702 * ECB: SAME AS ERROR EXIT FROM ENTRY POINT IGC113 07613602 * 07614502 *01* ENTRY-POINT = NEXTVSL 07615402 * 07616502 *02* PURPOSE = BRANCH ENTERED FROM ANOTHER RSM ROUTINE REQUIRING 07617502 * THE VALIDATION OF A VSL ENTRY IN THE CIWA. 07618502 * 07619502 *02* LINKAGE = BALR 07620502 * 07621502 *02* INPUT = 07622502 * LOCKS HELD: LOCAL AND SALLOC LOCKS 07623502 * R2: RSM HEADER ADDRESS. 07624502 * R3: PVT ADDRESS 07625702 * R4: CIWA ADDRESS 07626702 * R5-R13: IRRELEVANT 07627702 * R14: RETURN ADDRESS 07628702 * R15: ENTRY POINT ADDRESS 07629702 * 07630702 *02* OUTPUT = THE NEXT VSL ADDRESSED BY THE CIWA IS MOVED INTO THE 07631702 * CIWA VSL AREA, AFTER BEING VALIDATED, AND THE NEXT VSL ADDRESS 07632702 * IS UPDATED IN THE CIWA. 07633702 * 07634902 *02* REGISTERS-SAVED = 5 - 9 (USES PVTSAVE) 07635902 * 07636902 *02* REGISTERS-RESTORED = 5 - 9 07637902 * 07638902 *01* EXIT-NORMAL = VSLDONE 07639902 * 07640902 *02* CONDITIONS = SUCCESSFUL VALIDATION OF THE VSL. 07641902 * 07642902 *02* OUTPUT = 07644102 * LOCKS HELD: UNCHANGED FROM ENTRY 07645102 * R0-R1: DESTROYED 07646102 * R2-R14: UNCHANGED 07647102 * R15: RETURN CODE 07648102 * 07649102 *02* RETURN-CODES = 0 & 8 (THERE ARE NO MORE VSL ENTRIES). 07650102 * 07651102 *01* EXIT-ERROR = ERR4 07652102 * 07653302 *02* CONDITIONS = THE VSL DOES NOT PASS THE VALIDATION. 07654302 * 07655302 *02* OUTPUT = 07656302 * LOCKS HELD: UNCHANGED FROM ENTRY 07657302 * R0-R1: UNPREDICTABLE 07658302 * R2-R14: UNCHANGED 07659302 * R15: RETURN CODE 07660302 * 07661302 *01* EXTERNAL-REFERENCES = 07662302 * 07663302 *02* ROUTINES = 07664302 * LOCK MANAGER VIA THE SET LOCK MACRO INSTRUCTION TO GET AND FREE 07665302 * THE SALLOC LOCK. 07666302 * 07667302 * RECOVERY MANAGER VIA THE SETFRR MACRO INSTRUCTION TO CREATE AND 07668302 * DELETE AN RSM FRR FROM THE FRR STACK. 07669302 * 07670302 * POST AT ENTRY POINT IEA0PT01 TO POST A REQUESTOR'S ECB 07671302 * 07672302 * TEST AUTHORIZATION ROUTINE VIA TESTAUTH MACRO INSTRUCTION TO 07673302 * CHECK THE AUTHORIZATION OF PAGE SERVICES REQUESTORS 07674302 * 07675302 * PAGE SERVICES MODULES AT ENTRY POINTS IEAVFXLD, IEAVFREE, 07676302 * IEAVOUT, AND IEAVRELS TO SATISFY THE INPUT REQUESTS. 07677202 * 07678102 * RSM FRR VIA ABEND MACRO 07679002 * TO EXIT FROM THIS MODULE AS THE RESULT OF USER ERRORS, OR 07679902 * RSM PROBLEMS IN FIXING THE INPUT ECB, OR GETTING OR 07680802 * FREEING THE SALLOC LOCK. PSI EXPECTS THE CALLER OF PSI TO 07681702 * BE ABENDED. 07682602 * 07683502 *02* DATA-AREAS = 07684402 * USER SUPPLIED VSL (VIRTUAL SUBAREA LIST). 07685302 * IF A LIST FORM ENTRY IS USED, THE SECOND WORD OF THE VSL 07686202 * ENTRIES MAY BE ALTERED BY PSI OR ONE OF THE PAGE SERVICES 07687102 * MODULES. 07688002 * 07688902 *02* CONTROL-BLOCKS = 07689802 * CVT R 07690702 * TCB ADDRESSED ONLY, NO REFERENCES MADE 07691602 * PVT R/W 07692502 * PFTE R 07693402 * VSL R 07694302 * RCA C/D/R/W 07695202 * ASCB R 07696102 * ASXB R 07697002 * PCBR R 07697902 * PSA R 07698802 * 07699702 *01* TABLES = COMMON INTERNAL WORK AREA (CIWA) 07700602 * THIS WORK AREA IS ALWAYS BASED ON REGISTER 4 AND INITIALIZED 07703302 * BY THIS MODULE ON EACH PAGE SERVICES REQUEST. IT IS USED 07704302 * EXTENSIVELY BY ALL PAGE SERVICES MODULES AS A WORK AREA AND 07705302 * AS A COMMUNICATIONS AREA FOR DATA FLOW BETWEEN THESE MODULES 07706302 * AND THIS MODULE. 07707302 * 07708302 *01* MACROS = 07709302 * EXECUTABLE MACROS 07710302 * SETLOCK 07711302 * SETFRR 07713302 * TESTAUTH 07723302 * ABEND 07733302 * 07743302 * MAPPING MACROS 07745302 * CVT 07747302 * IHAPVT 07751302 * IHAPFTE 07751702 * IHAVSL 07752102 * IEACIWA 07752502 * IHARCA 07752902 * IHAASCB 07753102 * IHAASXB 07753202 * IHAFRRS 07755202 * IHAPSA 07763202 * IHAWSAVT 07769902 * IHAPCBR 07779902 * IKJTCB 07796602 * IKJRB 07798602 * 07800602 *02* SERIALIZATION = THE GLOBAL SALLOC LOCK IS OBTAINED BY THIS 07803302 * MODULE AND RELEASED BY THIS MODULE AT THOSE ENTRY POINTS WHERE 07853302 * IT IS NOT HELD ON ENTRY. THE LOCAL LOCK IS ALWAYS HELD ON ENTRY 07903302 * AND IS NEVER OBTAINED OR RELEASED BY THIS MODULE. 07933302 * 07953302 *01* CHANGE-ACTIVITY = NEW FOR 0S/VS2 -- Y02752 08003302 * APAR OZ19332 @ZA19332 08053340 * OZ19344 @ZA19344 08103340 * 08153302 *01* MESSAGES = NONE 08203302 * 08253302 *01* ABEND-CODES = X'028' AN RSM INTERNAL ERROR WAS DETECTED. 08503302 * X'171' SVC 113 PARAMETER ERRORS HAVE BEEN DETECTED. 08505302 * X'271' AN UNAUTHORIZED REQUEST HAS BEEN DETECTED. 08509302 * X'C0D' A SYSTEM ERROR HAS BEEN NOTED AND RECORDED 08513302 * 08553302 **** END OF SPECIFICATIONS ***/ 08603302 EJECT 08608302 IEAVPSI CSECT 08613302 MODID BR=NO 08653302 R0 EQU 0 SCRATCH REGISTER AFTER 'COMMON' ENTERED 08753302 R1 EQU 1 SCRATCH REGISTER AFTER 'COMMON' ENTERED 08803302 R2 EQU 2 SCRATCH REGISTER AFTER 'COMMON' ENTERED 08853302 R3 EQU 3 PVT ADDRESS (THROUGHOUT THE MODULE) 08903302 R4 EQU 4 CIWA ADDRESS (THROUGHOUT THE MODULE) 08953302 R5 EQU 5 RCA ADDRESS (THROUGHOUT THE MODULE) 09003302 R6 EQU 6 PROGRAM BASE REGISTER (EXCEPT NEXTVSL) 09053302 R7 EQU 7 ASCB ADDRESS (EXCEPT IN NEXTVSL 09103302 * AND AFTER THE ROUTER IS REACHED - WHEN 09113302 * IT BECOMES AN INTERNAL LINKAGE REGISTER) 09143302 R8 EQU 8 RETURN ADDRESS SAVE AREA (FOR SVC 113) 09153302 R9 EQU 9 SCRATCH -- TCB ADDRESS UP TO ROUTER 09203302 R10 EQU 10 SCRATCH -- ECB ADDRESS UP TO ROUTER 09253302 * NOTE THAT THE REGISTER CONTAINS THE 09263302 * REAL STORAGE ADDRESS OF THE ECB, ONCE 09273302 * THE VIRTUAL ADDRESS HAS BEEN SAVED IN 09283302 * THE CIWA. 09293302 R11 EQU 11 SCRATCH REGISTER 09303302 R12 EQU 12 SCRATCH REGISTER 09353302 R13 EQU 13 SCRATCH REGISTER 09403302 R14 EQU 14 SCRATCH REGISTER 09453302 R15 EQU 15 SCRATCH REGISTER 09503302 TITLE 'SVC 112 -- PAGE RELEASE SERVICE INTERFACE' 09503802 *********************************************************************** 09504102 * THE SVC 112 PORTION OF IEAVPSI OBTAINS THE SALLOC LOCK, 09504502 * SETS UP THE RECOVERY ENVIRONMENT FOR THE PAGE RELEASE 09504902 * MODULE, AND PERFORMS SOME INITIAL CHECKS ON THE INPUT 09505002 * PARAMETERS. ONCE THIS IS DONE, IT CALLS IEAVRELS, AND, 09505102 * AFTER THE RETURN, DELETES THE LOCK AND RECOVERY ENVIRONMENTS 09506702 * THAT IT HAS CREATED, AND RETURNS TO THE CALLER. 09508702 *********************************************************************** 09510102 DC CL8'IGC112' ENTRY SYMBOL 09510502 ENTRY IGC112 09511702 IGC112 DS 0H 09513302 USING *,R6 09553302 USING PSA,R0 09555302 SVC112LB EQU * 09583302 LR R8,R14 SAVE RETURN ADDRESS AROUND SETLOCK & TESTAUTH 09603302 USING CVT,R3 09605302 L R9,CVTPVTP GET ADDRESS OF PAGE VECTOR TABLE 09613302 USING PVT,R9 09623302 *********************************************************************** 09625302 * ESTABLISH THE RECOVERY ENVIRONMENT, BY USING THE 09633302 * RSM FRR ROUTINE ADDRESS IN THE PVT. 09643302 *********************************************************************** 09645302 SETFRR A,FRRAD=PVTPRCV,PARMAD=(R5),WRKREGS=(R5,R15) 09653302 EJECT 09703302 *********************************************************************** 09713302 * SET UP THE RECOVERY CONTROL AREA, WHICH WILL BE 09753302 * USED TO PASS RECOVERY INFORMATION BETWEEN THE SERVICE 09803302 * AND RECOVERY ROUTINES. 09853302 *********************************************************************** 09903302 USING RCA,R5 10503302 MVI RCACSECT,RCACPS CSECT IDENT. INTO RCA 10563302 MVI RCANAME3,RCAPS112 ENTRY ID INTO RCA. 10573302 *********************************************************************** 10585302 * OBTAIN THE GLOBAL LOCK, SO THAT THE RELEASE 10593302 * OPERATION IS SERIALIZED WITH ALL OTHER RSM OPERATIONS. 10603302 *********************************************************************** 10615302 SALLGT12 SETLOCK OBTAIN,TYPE=SALLOC,MODE=UNCOND,RELATED=(SALLOC,IEAVPSI*10623302 (SALLRL12)) 10673302 L R15,PVTPCIWA GET COMMON INTERNAL WORK AREA ADDRESS 10703302 ST R4,CIWTCB-CIWA(R15) SAVE THE INPUT TCB ADDRESS 10713302 USING TCB,R4 10715302 L R14,TCBRBP OBTAIN THE RB ADDRESS 10717302 USING RBBASIC,R14 10719302 LR R4,R15 TRANSFER THE CIWA ADDR TO ITS NORMAL BASE 10723302 USING CIWA,R4 10753302 ST R5,PVTPRCA SAVE CURRENT RCA PTR IN PVT 11063302 OI RCALOCKS,RCASAL FOOTPRINT SALLOC LOCK ACQUISITION 11103302 XC CIWA(CIWALEN),CIWA CLEAR COMMON INTERNAL WORK AREA 11153302 MVC CIWKEY,RBOPSW+1 RETRIEVE CALLER'S KEY 11203302 DROP R14 11203702 NI CIWKEY,KEYMASK TURN OFF UNNECESSARY BITS 11205302 *********************************************************************** 11213302 * SET UP THE PARAMETERS FOR THE RELEASE ROUTINE AND 11223302 * PERFORM THE NECESSARY VALIDITY CHECKING ON THE REQUEST. 11233302 *********************************************************************** 11243302 ST R0,CIWSTRT SET UP INTERNAL VSL IN CIWA 11253302 ST R1,CIWEND1 FROM PARAMETERS PASSED. 11273302 OI CIWFLG1,CIWSVC2 INDICATE SVC 112 ENTRY 11303302 SR R1,R0 TEST FOR VALID RANGE OF ADDRESSES 11353302 BM RC4 RANGE < 0, ERROR RETURN 11503302 EJECT 11505302 *********************************************************************** 11507302 * TEST TO SEE IF THE CALLER IS AUTHORIZED, SINCE VALIDITY 11513302 * CHECKING CAN BE SKIPPED FOR THE AUTHORIZED CALLER. 11523302 *********************************************************************** 11533302 TESTAUTH STATE=YES,FCTN=1,KEY=YES,RBLEVEL=1,BRANCH=YES 11553302 LTR R15,R15 IS THE USER AUTHORIZED? 11603302 BZ SETUP YES, SKIP THE VSL ADDRESS VALIDATION 11653302 SPACE 11663302 *********************************************************************** 11665302 * THE CALLER IS UNAUTHORIZED, VALIDITY CHECK THE REQUEST. 11673302 *********************************************************************** 11683302 CLC CIWSTRTA(L'PVTLPRIV),PVTLPRIV TEST ADDR AGAINST LOW END 11703302 BL RC4 OF PRIVATE AREA AND GIVE ERROR IF LOW 11903302 CLC CIWEND1A(L'PVTLCSA),PVTLCSA TEST ADDR AGAINST LOW END 12103302 BNL RC4 OF CSA AND GIVE ERROR IF NOT LOW 12153302 * NOTE THAT THE END ADDRESS IS KNOWN TO BE 12203302 * HIGHER THAN THE START ADDRESS, SINCE IT 12365302 * GAVE A POSITIVE RESULT WHEN SUBTRACTED. 12373302 *********************************************************************** 12385302 * NOW CALL THE PAGE RELEASE ROUTINE, SINCE THE CALLER 12393302 * IS EITHER AUTHORIZED, OR HAS PASSED THE VALIDITY CHECK. 12395302 *********************************************************************** 12399302 SETUP EQU * 12403302 OI CIWOPFL1,CIWRLS SET PAGE RELEASE REQUEST FLAG 12453302 LR R3,R9 PASS THE PVT ADDRESS 12603302 USING ASCB,R7 12603702 L R2,ASCBRSM PASS THE RSM HEADER ADDRESS 12605302 DROP R9 CHANGE OVER THE PVT BASE 12607302 USING PVT,R3 REGISTER (REMAINS TO END OF ROUTINE) 12609302 STM R0,R15,PVTWSA11 SAVE NECESSARY REGISTERS 12611302 ***** THE PAGE RELEASE ROUTINE MUST GUARANTEE THE RETURN OF 12611702 ***** REGISTER 3. 12612102 L R15,PVTPRELS ADDRESS OF IEAVRELS FUNCTION 12613302 BALR R14,R15 INVOKE THE PAGE RELEASE ROUTINE 12623302 LM R0,R15,PVTWSA11 RESTORE MY OWN REGISTERS 12633302 MVI RCACSECT,RCACPS RESET CSECT ID IN RCA 12653302 SR R15,R15 PASS RETURN CODE FROM PGRLS 12703302 IC R15,CIWRETC BY LOADING IT FROM THE CIWA 12753302 EJECT 12763302 *********************************************************************** 12765302 * REMOVE THE ENVIRONMENT CREATED ON ENTRANCE, BY RELEASING 12773302 * THE GLOBAL (SALLOC) LOCK AND DELETING THE FRR COVERAGE. 12783302 *********************************************************************** 12793302 EXIT112 EQU * 12803302 SALLRL12 SETLOCK RELEASE,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(SALLGT12)) 12853302 LTR R13,R13 WAS THE LOCK FREED SUCCESSFULLY? 12903302 BZ EXIT112A YES, SKIP ERROR RECORDING 12953302 *********************************************************************** 12973302 * IF THE SALLOC LOCK CANNOT BE FREED, THE EVENT IS RECORDED 12983302 *********************************************************************** 12993302 MVI RCARCRD,SALLNOFR SET 'LOCK NOT HELD' CODE FOR FRR. 12993702 ABEND X'C0D',,,SYSTEM RECORD THE ERROR 12995302 EXIT112A EQU * 13003302 SETFRR D,WRKREGS=(R1,R2) DELETE RSM FRR ROUTINE 13053302 BR R8 RETURN 13153302 *********************************************************************** 13213302 * ALL ERROR RETURNS IN SVC 112 ARE ROUTED HERE, TO SET UP A 13223302 * RETURN CODE AND RETURN TO THE CALLER. 13243302 *********************************************************************** 13245302 RC4 EQU * 13253302 LA R15,4 ERROR RETURN CODE OF 4 13303302 B EXIT112 RETURN 13353302 DROP R3,R5,R6,R4,R7 13453302 TITLE ' SVC 113 -- PAGE SERVICES INTERFACE FOR PAGE FIX, FREE, LOAD AN*14255302 D OUT' 14257302 *********************************************************************** 14263302 * THE SVC 113 ENTRY POINT CONVERTS THE INPUT PARMS TO LOOK 14273302 * AS THOUGH THE ROUTINE WAS ENTERED AT IEAVPSIB, AND THEN 14283302 * ESTABLISHES THE RECOVERY ENVIRONMENT FOR THE FUNCTION. 14293302 * IN THE RCA, AN INDICATION IS MADE SO THAT THE ENTRY POINT 14295302 * USED TO ACCESS THE MODULE IS KNOWN. 14295702 *********************************************************************** 14297302 ENTRY IGC113 14603302 DC CL8'IGC113' ENTRY POINT SYMBOL 14753302 IGC113 DS 0H 14803302 USING IGC113,R6 14813302 LR R2,R15 PREPARE THE VSL IN THE INTERNAL FORMAT 14823302 LR R8,R14 SAVE THE RETURN ADDRESS 14843302 USING CVT,R3 14863302 L R3,CVTPVTP GET THE PAGE VECTOR TABLE ADDRESS 14913302 USING PVT,R3 14963302 ******* ESTABLISH THE RECOVERY ENVIRONMENT FOR THE FUNCTION, 15013302 ******* USING THE STANDARD RSM RECOVERY ROUTINE. 15063302 SETFRR A,FRRAD=PVTPRCV,PARMAD=(R5),WRKREGS=(R5,R15) 15253302 USING RCA,R5 15303302 ******* INDICATE IN THE RCA THAT THE SVC 113 ENTRY POINT WAS 15313302 ******* USED TO OBTAIN ACCESS TO THE MODULE. 15323302 OI RCANAME6,RCAPS113 SVC 113 (IGC113) ENTRY POINT FLAG 15703302 B COMMON CONTINUE WITH COMMON PATH 15853302 DROP R3,R5,R6 15863302 TITLE 'PAGE SERVICES BRANCH ENTRY INTERFACE FOR OTHER THAN REAL STORAG*15913302 E MGMT. ROUTINES.' 15915302 *********************************************************************** 15953302 * AT THIS ENTRY POINT, THE CALLER'S REGISTERS ARE SAVED IN THE 16003302 * RSM LOCAL SAVE AREA. THIS CAN BE SAFELY DONE, SINCE THE CALLER 16053302 * MUST HOLD THE LOCAL LOCK. AT THIS ENTRY POINT, THE RECOVERY 16103302 * ENVIRONMENT IS ESTABLISHED FOR THE FUNCTION, AND THE COMMON 16153302 * CODE ROUTINE IS THEN ENTERED. 16163302 *********************************************************************** 16203302 ENTRY IEAVPSIB 16253302 DC CL8'IEAVPSIB' ENTRY SYMBOL 16403302 IEAVPSIB DS 0H 16413302 USING IEAVPSIB,R15 16415302 L R15,PSAAOLD ADDRESS OF CURRENT ASCB 16423302 USING ASCB,R15 16603302 L R15,ASCBASXB ASXB ADDRESS 16653302 USING ASXB,R15 16703302 L R15,ASXBSPSA SAVE AREA VECTOR TABLE ADDR. 16753302 USING WSAL,R15 16803302 L R15,WSALRSM RSM LOCAL SAVE AREA ADDR. 16853302 STM R0,R14,0(R15) SAVE ALL ENTRY REGISTERS 16903302 DROP R15 16905302 L R7,PSAAOLD CURRENT ASCB ADDRESS 16913302 USING ASCB,R7 16923302 L R3,FLCCVT RESTORE CVT ADDRESS 16953302 USING CVT,R3 17003302 L R3,CVTPVTP ADDRESS OF PAGE VECTOR TABLE 17203302 USING PVT,R3 17205302 BALR R6,0 ESTABLISH A TEMPORARY PROGRAM BASE REG. 17207302 USING *,R6 17209302 ******* ESTABLISH THE RECOVERY ENVIRONMENT 17213302 SETFRR A,FRRAD=PVTPRCV,PARMAD=(R5),WRKREGS=(R5,R15) 17253302 ******* PASS THE ENTRY POINT INDICATOR IN THE RCA, SO THAT 17263302 ******* THE COMMON ROUTINE WILL KNOW WHERE THE MODULE WAS ENTERED. 17273302 USING RCA,R5 17283302 OI RCANAME3,RCAPSIB IEAVPSIB ENTRY INDICATOR 17503302 TITLE 'COMMON PROCESSOR - SVC 113 AND EXTERNAL (NON-RSM) BRANCH ENTRIE*17563302 S' 17573302 *********************************************************************** 17603302 * THE COMMON ROUTINE ESTABLISHES THE BASE REGISTER FOR THE 17703302 * MODULE, AND THEN OBTAINS THE GLOBAL (SALLOC) LOCK, SO THAT 17753302 * THE REQUESTED OPERATION MAY BE SERIALIZED WITH ALL OTHER RSM 17803302 * FUNCTIONS IN THE SYSTEM. 17853302 *********************************************************************** 17863302 COMMON BALR R6,0 RE-ESTABLISH PROGRAM BASE REGISTER 17953302 USING *,R6 18053302 COMMON00 EQU * 18064602 MVI RCACSECT,RCACPS IEAVPSI CSECT IDENTIFIER 18075902 OI RCAFLAGS,RCAPSIER INDICATE ECB/VSL CHECKING HAS BEGUN. 18081902 * THE FRR WILL CONVERT ANY PROGRAM 18087902 * CHECKS ENCOUNTERED WHILE CHECKING 18093902 * THE ECB OR VSL TO X'171' ABENDS. 18099902 LTR R10,R0 XFER ECB ADDR TO USEABLE REGISTER 18109802 BNP SALLGT13 BR IF ECB NOT SUPPLIED OR @ZA19344*18114840 IT IS NEGATIVE. @ZA19344 18119840 COMMON2 TM ECB(R10),X'FF' REFER TO ECB TO FORCE PAGE-IN *18149702 (IF NECESSARY) 18155002 SALLGT13 SETLOCK OBTAIN,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(SALLRL13,EC*18205002 BSLCRL)),MODE=UNCOND 18255002 OI RCALOCKS,RCASAL FOOTPRINT SALLOC LOCK ACQUISITION 18553302 ST R5,PVTPRCA STORE THE CURRENT RCA ADDRESS 18555302 LTR R10,R10 TEST FOR ECB ADDRESS YM02029 18565302 BNP SAVETCB NONE GIVEN OR NEGATIVE @ZA19344 18570340 LRA R0,ECB(R10) TEST ECB ADDRESS PASSED 18603302 **** NOTE: R0 MUST REMAIN CONSTANT UNTIL THE VIRTUAL ECB ADDRESS IS 18613302 ***** SAVED BELOW. 18623302 BZ ECBINOK ECB IS VALID AND ADDRESSABLE 18653302 *********************************************************************** 18703302 * THE ECB ADDRESS IS NOT RESOLVED, RELEASE THE SALLOC LOCK 18715302 * AND REFERENCE THE ECB AGAIN. THIS WILL CAUSE A PAGE-FAULT 18716302 * TO OCCUR, FORCING THE ECB PAGE INTO STORAGE, OR AN ERROR 18717302 * TO OCCUR IF THE ADDRESS IS INVALID. 18718302 *********************************************************************** 18722902 ECBSLCRL SETLOCK RELEASE,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(SALLGT13)) 18723302 NI RCALOCKS,X'FF'-RCASAL RESET LOCK HELD FLAG 18745302 B COMMON2 RETURN TO COMMON ROUTINE 18747302 EJECT 18749302 *********************************************************************** 18749702 * WITH THE SALLOC LOCK OBTAINED AND THE ECB SECURELY IN STORAGE, 18751302 * THE REQUEST IS VALIDITY CHECKED AND THE PARAMETERS ARE 18752102 * PREPARED FOR THE PAGE SERVICE BY PLACING THEM IN THE 18752502 * COMMON INTERNAL WORK AREA (CIWA). 18752902 *********************************************************************** 18753002 ECBINOK EQU * 18753302 L R13,ECB(R10) GET THE CONTENTS OF THE ECB AND 18803302 CS R13,R13,ECB(R10) SYNCHRONOUSLY STORE IT TO PREVENT 18805302 * STEALING BY RSM LSQA ROUTINE. 18807302 *********************************************************************** 18807702 * THE ECB HAS EITHER BEEN STORED OR THE CONTENTS HAVE IN SOME 18807902 * WAY BEEN CHANGED. IN EITHER CASE, THE PAGE CONTAINING THE ECB 18808502 * HAS BEEN CHANGED, PREVENTING THE FRAME FROM BEING STOLEN 18809102 * DURING SUBSEQUENT PROCESSING. 18809702 *********************************************************************** 18810002 SAVETCB EQU * YM02029 18810302 LR R9,R4 SAVE THE INPUT TCB ADDRESS 18813302 L R4,PVTPCIWA COMMON INTERNAL WORK AREA ADDR. 18823302 USING CIWA,R4 18833302 XC CIWA(CIWALEN),CIWA INITIALIZE THE CIWA 18843302 ST R10,CIWECB SAVE THE ECB ADDRESS 18843702 LR R10,R0 REAL STORAGE ADDRESS OF THE ECB 18844002 **** NOTE: REGISTER ZERO MAY NOW BE USED FOR SCRATCH AGAIN. 18844302 **** 18851302 *********************************************************************** 18852102 * SET THE APPROPRIATE ENTRY POINT INDICATOR IN THE CIWA. 18858102 *********************************************************************** 18864102 TM RCANAME6,RCAPS113 ENTERED AT SVC 113?? 18870102 BO SVC113EP YES, SET UP SVC113 ENTRY FLAGS 18876102 OI CIWFLG1,CIWBREX NO, SET THE IEAVPSIB FLAG IN CIWA 18882102 B REGTST CONTINUE WITH THE COMMON PATH 18888102 SVC113EP OI CIWFLG1,CIWSVC3 SET THE SVC 113 FLAG IN THE CIWA 18894102 USING TCB,R9 18902102 L R15,TCBRBP GET CALLER'S RB ADDRESS 18952102 USING RBBASIC,R15 18952502 MVC CIWKEY,RBOPSW+1 GET KEY OF CALLER 18953302 DROP R15 18953702 NI CIWKEY,KEYMASK TURN OFF THE EXTRANEOUS BITS 18955302 EJECT 18963302 *********************************************************************** 18965302 * TEST THE REQUEST FOR THE LIST OR REGISTER FORMAT. 18973302 *********************************************************************** 18983302 REGTST EQU * 19003302 LTR R1,R1 IS THIS A REGISTER FORM CALL? 19053302 BM LIST NO, GO TO LIST PROCESSING ROUTINE 19073302 *********************************************************************** 19105302 * REGISTER FORM CALL, GET THE VSL DATA INTO THE CIWA FROM 19113302 * THE CONTENTS OF REGISTERS 1 AND 2. 19123302 *********************************************************************** 19133302 ST R1,CIWSTRT NO, SET UP THE VSL IN THE CIWA 19153302 ST R2,CIWEND1 FROM THE INPUT PARAMETERS. 19253302 STCM R1,B'1000',CIWOPFL1 SAVE THE OPTION FLAGS FROM THE VSL 19263302 STCM R2,B'1000',CIWOPFL2 IN THE PAGE SERVICES OP FLAG AREAS 19283302 LA R2,0(R2) CLEAR OUT ANY FLAG BITS FIRST, THEN 19303302 LTR R2,R2 TEST IF SECOND VSL ENTRY ADDR = 0? 19353302 BNZ TSTRSAOP NO, SKIP ADDRESS CREATION 19403302 LA R1,1(R1) YES, SET END ADDR = START ADDR +1 19453302 STCM R1,ADDRMASK,CIWEND1A AND STORE IN VSL 19503302 EJECT 19513302 *********************************************************************** 19515302 * COMMON PROCESSING, THE VSL IS NOW IN THE CIWA, HAVING EITHER 19523302 * BEEN STORED FROM THE REGISTERS (REGISTER FORM), OR HAVING BEEN 19533302 * MOVED FROM A VSL LIST BY THE NEXTVSL ROUTINE (LIST FORM). 19543302 * PERFORM AN AUTHORIZATION TEST ON THE CALLER UNLESS THE 19545302 * BRANCH ENTRY WAS USED OR THE CALLER IS NOT REQUESTING A FIX OR 19547302 * FREE OPERATION, BOTH OF WHICH REQUIRE AUTHORIZATION. 19549302 *********************************************************************** 19551302 TSTRSAOP EQU * 19553302 NI RCAFLAGS,X'FF'-RCAPSIER RESET ECB/VSL CHECKING FLAG. 19573302 TM CIWOPFL2,CIWRAO RSAOPT REQUEST? 19603302 BO RC16A YES, ERROR EXIT 19653302 TM RCANAME6,RCAPS113 SVC 113 ENTRY? 19703302 BZ BRANCH NO, GO TO BRANCH ENTRY PROCESSING 19753302 TM CIWOPFL1,CIWFIX+CIWFREE YES, PAGEFIX OR PAGEFREE? 19853302 BZ SETTCB NO, SKIP AUTHORIZATION CHECK 19903302 LR R12,R3 SAVE THE PVT ADDRESS ACROSS TESTAUTH 19913302 TESTAUTH STATE=YES,FCTN=1,KEY=YES,RBLEVEL=1,BRANCH=YES 19953302 LR R3,R12 RESTORE THE PVT ADDRESS AFTER TESTAUTH 19963302 LTR R15,R15 IS CALLER AUTHORIZED? 20003302 BNZ RC16E NO, ERROR RETURN 20053302 SPACE 2 20103302 *********************************************************************** 20105302 * THE CALLER IS EITHER AUTHORIZED, USED THE BRANCH ENTRY OR IS 20113302 * REQUESTING A SERVICE THAT DOES NOT REQUIRE AUTHORIZATION, 20123302 * NOW COMPLETE THE GENERAL VALIDITY CHECK. 20133302 *********************************************************************** 20143302 SETTCB EQU * 20153302 ST R9,CIWTCB SAVE TCB ADDRESS IN CIWA 20203302 ECBCHK EQU * 20253302 LTR R10,R10 CHECK FOR NULL ECB ADDRESS 20403302 BP ECBONWRD ECB GIVEN, VALIDATE IT. @ZA19344 20453340 BM RC16G NEGATIVE VALUE, ERROR (SEE @ZA19344*20463340 PROLOGUE RE: IGC113 AND @ZA19344*20473340 IEAVPSIB ENTRIES). @ZA19344 20483340 TM CIWOPFL1,CIWFIX FIX REQUEST? 20509302 BZ ROUTER NO, GO TO ROUTER ROUTINE. 20511302 B RC16D YES, ECB REQUIRED FOR FIX, ERROR 20511702 ECBONWRD EQU * 20513302 TM CIWECB+L'CIWECB-1,WORDBDRY IS THE ECB ON A WORD BOUNDARY 20573302 BNZ RC16D NO, ERROR RETURN. 20633302 TM CIWOPFL2,CIWPGOUT YES, IS THIS A PGOUT REQUEST? 20703302 BO RC16D YES, ECB NOT ALLOWED, ERROR RETURN 20753302 CLI CIWKEY,0 NO, IS THE CALLER KEY ZERO? 20803302 BE ROUTER YES, SKIP ECB KEY CHECK 20853302 LR R15,R10 OBTAIN ECB REAL STORAGE ADDRESS 20863302 N R15,ISKPREP SET UP FOR ISK INSTRUCTION 20903302 ISK R1,R15 GET KEY OF ECB 20953302 N R1,KEYMASKW REMOVE THE EXTRANEOUS BITS 21003302 CLM R1,B'0001',CIWKEY DOES THE CALLER KEY MATCH? 21013302 BE ROUTER YES, BRANCH TO THE ROUTER 21033302 B RC16D NO, ERROR RETURN 21053302 SPACE 3 21363302 *********************************************************************** 21373302 * THE REQUEST WAS OF THE LIST FORM, SO THE VSL ENTRY MUST BE 21383302 * VALIDATED. TO DO THIS, IT IS PASSED TO THE 'NEXTVSL' ROUTINE, 21393302 * WHICH IS LOCATED IN THIS MODULE. 21395302 *********************************************************************** 21397302 LIST EQU * LIST FORM REQUEST, PROCESS VSL 21399302 LA R1,0(R1) CLEAR EXTRANEOUS BITS FROM ADDRESS 21401302 ST R1,CIWINVSL SAVE VSL LIST ADDRESS 21401702 USING VSL,R1 21406802 MVC CIWOPFL1,VSLFLAG1 COPY VSL OPTION FLAGS YM02034 21412402 MVC CIWOPFL2,VSLFLAG2 TO THE CIWA FLAG AREAS. YM02034 21415402 DROP R1 21419502 S R1,FVSLLEN BACK UP CURRENT VSL POINTER FOR 21422602 ST R1,CIWCUVSL USE BY NEXTVSL ROUTINE AND SAVE IT 21427702 LA R15,NEXTVSL NEXTVSL ENTRY ADDRESS 21432802 BALR R14,R15 GO VALIDATE THIS VSL ENTRY 21437902 LTR R15,R15 IS IT VALID? 21443002 BZ TSTRSAOP YES, CONTINUE 21473202 B RC16B NO, ERROR 21475202 SPACE 2 21483202 *********************************************************************** 21493202 * THE CALL WAS VIA A BRANCH ENTRY, CHECK IF A VALID TCB 21495202 * ADDRESS WAS SUPPLIED. 21497202 *********************************************************************** 21499202 BRANCH EQU * 21501202 LTR R9,R9 WAS A TCB ADDRESS GIVEN? 21502002 BZ ECBCHK NO, CHECK THE ECB (IF ANY) 21502402 ST R9,CIWTCB YES, SAVE THE TCB ADDRESS. 21502602 TM CIWTCB+L'CIWTCB-1,WORDBDRY IS IT ON A WORD BOUNDARY 21502802 BZ ECBCHK YES, GO TEST FOR VALID ECB 21503002 B RC16C NO, ERROR RETURN 21503102 DROP R7 REMOVE ASCB ADDRESSABILITY 21703002 TITLE 'REAL STORAGE MANAGEMENT BRANCH ENTRY INTERFACE' 22913302 ********************************************************************** 22953302 * ENTRY AT THIS POINT DOES NOT REQUIRE THE SETTING 23053302 * UP OF THE RECOVERY ENVIRONMENT OR ACQUISITION OF THE SALLOC 23103302 * LOCK, NOR IS IT NECESSARY TO PERFORM MUCH VALIDITY CHECKING 23153302 * FOR USERS OF THIS ENTRY. THEREFORE, THE ROUTINE ONLY SETS 23203302 * UP THE REGISTERS NECESSARY TO OPERATE IN THE COMMON 23213302 * ROUTINES, AND DISPATCHES CONTROL ACCORDINGLY. 23223302 ********************************************************************** 23253302 ENTRY IEAVPSII 23303302 DC CL8'IEAVPSII' ENTRY POINT SYMBOL 23453302 USING PVT,R3 23553302 IEAVPSII STM R0,R15,PVTWSA4 SAVE ALL REGISTERS IN THE PVT 23603302 USING IEAVPSII,R15 23608302 LR R14,R4 SAVE TCB ADDRESS 23613302 L R4,PVTPCIWA COMMON WORK AREA ADDRESS 23653302 USING CIWA,R4 23703302 XC CIWA(CIWALEN),CIWA INITIALIZE THE CIWA 23713302 L R5,PVTPRCA RECOVERY WORK AREA ADDRESS 23753302 USING RCA,R5 23803302 MVI RCACSECT,RCACPS PSI CSECT IDENTIFIER FOR RECOVERY 23853302 OI RCANAME3,RCAPSII IEAVPSII ENTRY ID FOR RECOVERY 23903302 ST R14,CIWTCB SAVE THE INPUT TCB ADDRESS 23953302 ST R0,CIWECB SAVE THE INPUT ECB ADDRESS 24003302 LA R6,IEAVPSII-COMMON00 ESTABLISH COMMON BASE 24013302 LNR R6,R6 ADDRESSABILITY, SO THAT THE COMMON 24023302 AR R6,R15 SUBROUTINES CAN BE USED. 24033302 LTR R1,R1 TEST THE ENTRY FORMAT AND IF NOT 24053302 BNP RC16 REGISTER FORM, ERROR RETURN 24103302 ST R1,CIWSTRT SET UP THE VSL IN THE CIWA, 24253302 ST R2,CIWEND1 USING THE INPUT DATA. 24273302 STCM R1,B'1000',CIWOPFL1 SAVE THE OPTION FLAGS FROM THE VSL 24283302 STCM R2,B'1000',CIWOPFL2 IN THE PAGE SERVICES OP FLAG AREAS. 24293302 OI CIWFLG1,CIWBRIN INDICATE INTERNAL BRANCH ENTRY (RSM) 24303302 L R15,PSAAOLD ADDRESS OF CURRENT ASCB 24513302 USING ASCB,R15 24523302 L R2,ASCBRSM ADDRESS OF THE RSM HEADER 24533302 DROP R15 24553302 USING COMMON00,R6 24603302 LA R7,EXIT PREPARE FOR RETURN TO EXIT FROM SUBROUTE 24653302 ********************************************************************** 24913302 * ROUTE CONTROL TO THE PROPER SUBROUTINE, BY TESTING THE MASK 24953302 * BITS IN THE FLG1 AND FLG2 FIELDS OF THE INPUT VSL. 25003302 ********************************************************************** 25013302 TM CIWOPFL2,CIWPGOUT TEST FOR PAGE OUT REQUEST 25023302 BO PSIIPOUT PAGE OUT REQUEST, BRANCH 25033302 BXLE R1,R1,PSIIFIX IF BIT 1, PAGE FIX REQUEST, BRANCH 25053302 BXLE R1,R1,PSIIFREE IF BIT 2, PAGE FREE REQUEST, BRANCH 25103302 BXLE R1,R1,PSIILOAD IF BIT 3, PAGE LOAD REQUEST, BRANCH 25153302 BXLE R1,R1,PSIIRLSE IF BIT 4, PAGE RELEASE, BRANCH 25203302 B RC16 UNKNOWN REQUEST, ERROR EXIT 25355302 TITLE 'ROUTER ROUTINE FOR SVC 113 AND NON-REAL STORAGE MGMT. BRANCH EN*25365302 TRY CALLS.' 25367302 ********************************************************************** 25373302 * THE ROUTER ROUTINE PERFORMS THE NECESSARY VALIDITY CHECKS 25403302 * PRIOR TO SETTING UP THE PARAMETERS FOR INVOKING THE 25553302 * DESIRED ROUTINE. LINKAGE TO THE ROUTINE IS ESTABLISHED, 25603302 * AND, ON RETURN, THE RCA CSECT IDENTIFIER IS RESET. 25653302 ********************************************************************** 25753302 ROUTER EQU * 25803302 USING ASCB,R7 RE-ESTABLISH ASCB ADDRESSABILITY 25813302 L R2,ASCBRSM GET RSM HEADER ADDRESS FOR ROUTER 25823302 DROP R7 DELETE ASCB ADDRESSABILITY 25833302 TM CIWOPFL2,CIWERR+CIWEXTRS ANY ERRORS? 25853302 BNZ RC16 YES, ERROR RETURN 25953302 *********************************************************************** 25963302 * IF THERE ARE NO ERRORS INDICATED, DISPATCH THE NECESSARY 26003302 * ERROR CHECKING, AS DETERMINED BY THE REQUESTED FUNCTION. 26153302 * THE REQUESTED FUNCTION IS DETERMINED BY TESTING THE BITS 26203302 * IN THE FLG1 AND FLG2 FIELDS OF THE VSL IN THE CIWA. 26253302 *********************************************************************** 26255302 LA R7,EXIT SET UP TO EXIT ON RETURN 26273302 TM CIWOPFL2,CIWPGOUT IF A PAGE OUT REQUEST, 26305302 BO ERRTST7 GO TO PAGEOUT VALIDATION ROUTINE. 26307302 L R15,CIWSTRT FLG1 FIELD IN BYTE 0 OF R15 26310302 BXLE R15,R15,ERRTST2 IF BIT 1 IS ON, PAGE FIX 26353302 BXLE R15,R15,ERRTST4 IF BIT 2 IS ON, PAGE FREE 26403302 BXLE R15,R15,ERRTST3 IF BIT 3 IS ON, PAGE LOAD 26453302 BXLE R15,R15,ERRTST6 IF BIT 4 IS ON, PAGE RELEASE 26503302 B RC16 UNKNOWN REQUEST, ERROR RETURN 26603302 SPACE 2 26613302 ERRTST7 EQU * PAGE OUT REQUEST ERROR CHECKING 26653302 TM CIWOPFL1,CIWLONG+CIWFIX+CIWFREE+CIWLOAD+CIWRLS IF ANY 26703302 BNZ RC16 EXTRANEOUS BITS FOR PGOUT, ERROR. 26733302 PSIIPOUT EQU * INTERNAL ROUTER POINT FOR PAGE OUT 26763302 L R15,PVTPOUT ADDRESS OF PAGE OUT ROUTINE 26803302 *********************************************************************** 26815302 * THIS ROUTINE SAVES THE NECESSARY REGISTERS PRIOR TO LINKING TO 26817302 * THE SUBROUTINE WHOSE ADDRESS IS IN REGISTER 15. ON RETURN, IT 26819302 * RE-ESTABLISHES THE CSECT ID IN THE RCA AND RETURNS TO ITS 26821302 * INVOKER VIA REGISTER 7. 26821702 *********************************************************************** 26822102 SUBROUTE EQU * 26823302 STM R0,R15,PVTWSA11 SAVE NECESSARY REGISTERS 26883302 * THE CALLED SUBROUTINE MUST GUARANTEE THE RETURN OF 26933302 * REGISTER 3. 26943302 BALR R14,R15 BRANCH (LINK) TO REQUESTED FUNCTION 26983302 LM R0,R15,PVTWSA11 RESTORE REQUIRED REGISTERS 27093302 MVI RCACSECT,RCACPS RESET CSECT IDENTIFIER 27133302 BR R7 RETURN TO PRESET CALLER ADDRESS 27183302 TITLE 'PAGE SERVICE ROUTINE INTERFACES FOR ALL FORMS OF ENTRY' 27235302 *********************************************************************** 27243302 * PAGE LOAD REQUESTS FROM IEAVPSIB AND SVC113 COME HERE. 27253302 *********************************************************************** 27263302 ERRTST3 EQU * PAGE LOAD ERROR CHECKING 27283302 TM CIWOPFL1,CIWFREE+CIWLONG LONG-FIX OR FREE REQUEST? 27333302 BZ ERRTST2A NO, CONTINUE 27353302 B RC16 YES, ERROR RETURN 27383302 SPACE 2 27433302 *********************************************************************** 27443302 * PAGE FIX REQUESTS FROM IEAVPSIB AND SVC113 COME HERE. 27453302 *********************************************************************** 27463302 ERRTST2 EQU * PAGE FIX ERROR TESTING 27483302 BXLE R15,R15,RC16 IF THE PGFREE BIT IS ON, ERROR 27493302 ERRTST2A EQU * 27503302 TM CIWOPFL2,CIWPGOUT+CIWKEPRL KEEPREAL OR PAGE-OUT REQUEST? 27533302 BNZ RC16 YES, ERROR RETURN 27583302 SPACE 2 27585302 *********************************************************************** 27593302 * PAGE FIX AND PAGE LOAD REQUESTS FROM IEAVPSII COME HERE. 27603302 *********************************************************************** 27613302 PSIILOAD EQU * INTERNAL ROUTER ENTRY FOR LOAD 27633302 PSIIFIX EQU PSIILOAD INTERNAL ROUTER ENTRY FOR PAGE-FIX 27643302 TM CIWOPFL1,CIWRLS RELEASE OPTION? 27683302 BZ CFXLD NO, SKIP CALL TO RELEASE 27733302 L R15,PVTPRELS RELEASE FUNCTION ADDRESS 27983302 BAL R7,SUBROUTE GET ROUTED TO IEAVRELS 28033302 *********************************************************************** 28043302 * A RETURN CODE OF 4 FROM PAGE RELEASE IS TREATED AS A PROPER 28083302 * RETURN (LIKE ZERO), IF THE OPERATION DESIRED IS A COMBINATION 28093302 * OF PAGE RELEASE AND SOME OTHER PAGE SERVICE. 28103302 *********************************************************************** 28113302 CLI CIWRETC,4 ERROR RETURN CODE? (>4?) 28133302 BH EXIT YES, EXIT 28183302 NI CIWFLG1,X'FF'-CIWFIXC-CIWOUTKR RESET INTERNAL FLAGS 28185302 SR R15,R15 ZERO OUT THE TWO RETURN CODE 28187302 STH R15,CIWRETC AREAS IN THE CIWA. 28189302 XC CIWCURPG(RICIWLEN),CIWCURPG CLEAR CIWA WORK AREA 28191702 L R15,CIWINVSL NO, SET UP VSL (IF LIST FORM), 28193302 LTR R15,R15 TO ADDRESS THE ORIGINAL LIST OF 28203302 BZ CFXLD VSLS, ELSE SKIP (FOR REGISTER FORM) 28213302 MVC CIWVSL,0(R15) COPY THE FIRST VSL INTO THE CIWA 28223302 ST R15,CIWCUVSL AND RESET CURRENT ADDRESS IN CIWA 28225302 CFXLD EQU * 28233302 L R15,PVTPFXLD NO, CALL IEAVFXLD 28283302 LA R7,EXIT PREPARE FOR RETURN TO EXIT 28293302 B SUBROUTE AFTER BEING ROUTED TO IEAVFXLD 28333302 EJECT 28383302 *********************************************************************** 28393302 * PAGE FREE REQUESTS FROM IEAVPSIB AND IGC113 COME HERE. 28403302 *********************************************************************** 28413302 ERRTST4 EQU * PAGE-FREE ERROR CHECKING 28433302 BXLE R15,R15,RC16 IF THE PGLOAD BIT IS ON, ERROR. 28453302 TM CIWOPFL2,CIWPGOUT+CIWKEPRL KEEPREAL OR PAGEOUT REQUEST? 28483302 BNZ RC16 YES, ERROR RETURN 28533302 SPACE 2 28535302 *********************************************************************** 28543302 * PAGE FREE REQUESTS FROM IEAVPSII COME HERE. 28553302 *********************************************************************** 28563302 PSIIFREE EQU * INTERNAL ROUTER ENTRY FOR PAGE-FREE 28583302 L R15,PVTPFREE PAGE-FREE FUNCTION ADDRESS 28783302 BAL R7,SUBROUTE GET ROUTED TO IEAVFREE 28833302 CLI CIWRETC,0 ERROR RETURN CODE? 28933302 BNE EXIT YES, EXIT 28983302 TM CIWOPFL1,CIWRLS RELEASE OPTION? 29033302 BNO EXIT NO, EXIT 29133302 NI CIWFLG1,X'FF'-CIWFIXC-CIWOUTKR RESET INTERNAL FLAGS 29135302 SR R15,R15 ZERO OUT THE TWO RETURN CODE 29135902 STH R15,CIWRETC AREAS IN THE CIWA. 29136502 XC CIWCURPG(RICIWLEN),CIWCURPG CLEAR CIWA WORK AREA 29141702 L R15,CIWINVSL NO, SET UP VSL (IF LIST FORM), 29143302 LTR R15,R15 TO ADDRESS THE ORIGINAL LIST OF 29153302 BZ CALLRLS VSLS, ELSE SKIP (FOR REGISTER FORM) 29163302 MVC CIWVSL,0(R15) COPY THE FIRST VSL INTO THE CIWA 29173302 ST R15,CIWCUVSL AND RESET CURRENT ADDRESS IN CIWA 29175302 B CALLRLS NOW CALL IEAVRELS 29177302 SPACE 3 29183302 *********************************************************************** 29193302 * PAGE RELEASE REQUESTS FROM IEAVPSIB AND IGC113 COME HERE. 29203302 * SINCE THE PGRLSE (PAGE RELEASE) MACRO ONLY INVOKES 29205302 * SVC 112, ANY SVC 113 ENTRY TO THIS POINT IS INVALID. 29207302 *********************************************************************** 29213302 ERRTST6 EQU * ERROR CHECKING FOR PAGE-RELEASE 29233302 TM CIWFLG1,CIWBREX EXTERNAL BRANCH ENTRY? 29283302 BZ RC16 NO, ERROR 29333302 TM CIWOPFL2,CIWKEPRL+CIWPGOUT KEEPREAL OR PAGE-OUT REQUEST? 29383302 BNZ RC16 YES, ERROR RETURN 29433302 TM CIWOPFL1,CIWLONG LONG-FIX OPTION IS ALLOWED ONLY ON 29483302 BO RC16 PGFIX REQUESTS, ERROR 29533302 EJECT 29543302 *********************************************************************** 29593302 * PAGE RELEASE REQUESTS FROM IEAVPSII COME HERE. 29603302 *********************************************************************** 29613302 PSIIRLSE EQU * INTERNAL ROUTER ENTRY FOR RELEASE 29633302 CALLRLS EQU * 29683302 L R15,PVTPRELS RELEASE FUNCTION ADDRESS 29733302 BAL R7,SUBROUTE ROUTE TO IEAVRELS 29783302 *********************************************************************** 29785302 * A RETURN CODE OF 4 FROM PAGE RELEASE IS TREATED AS A PROPER 29793302 * RETURN (LIKE ZERO), IF THE OPERATION DESIRED IS A COMBINATION 29803302 * OF PAGE RELEASE AND SOME OTHER PAGE SERVICE. THEREFORE, IF 29813302 * PAGE RELEASE WAS CALLED AFTER PAGE FREE, WE MUST CONVERT A 29823302 * RETURN CODE OF 4 FROM PAGE RELEASE INTO A RETURN CODE OF 29825302 * ZERO. 29829302 *********************************************************************** 29829702 CLI CIWRETC,4 RETURN CODE = UNAUTHORIZED RELEASE? 29831302 BNE EXIT NO, RETURN FOR NORMAL PROCESSING 29831702 TM CIWOPFL1,CIWFREE YES, WAS THE REQUEST FREE W/RELEASE? 29832102 BZ EXIT NO, RETURN NORMALLY 29832502 MVI CIWRETC,0 YES, CONVERT THE RETURN CODE TO 0 29832902 B EXIT AND RETURN TO EXIT PROCESSING 29833002 TITLE 'IEAVPSI -- PAGE SERVICES MODULE -- COMMON EXIT PROCESSOR' 29833302 *********************************************************************** 29843302 * ALL INTERNAL ERRORS WHICH WILL REQUIRE THE RELEASE 29853302 * OF THE SALLOC LOCK OR REMOVAL OF THE RECOVERY ROUTINE 29863302 * ARE ROUTED TO ONE OF THE FOLLOWING ENTRY POINTS. SET UP 29873302 * AN ERROR RETURN CODE OF 16 (FOR PARAMETER ERROR), AND 29875302 * CONTINUE TO THE NORMAL EXIT PROCESSING. 29877302 *********************************************************************** 29879302 RC16A EQU * 29883302 RC16B EQU * 29933302 RC16C EQU * 29983302 RC16D EQU * 30033302 RC16G EQU * 30143302 RC16 EQU * 30183302 MVI CIWRETC,RTCODE16 SET ERROR RETURN CODE 30233302 B NOPOST PREPARE TO RETURN 30283302 SPACE 30285302 RTCODE16 EQU 16 30293302 SPACE 2 30393302 RC16E EQU * UNAUTHORIZED REQUEST 30493302 MVI CIWRETC,RTCODE16 SET ERROR RETURN CODE 30593302 LA R10,X'271' PREPARE FOR PROPER ABEND 30693302 B LOAD15B AND BRANCH TO EXITING ROUTINE. 30793302 EJECT 30933302 ********************************************************************** 34833302 * THE EXIT ROUTINE PERFORMS ANY NECESSARY CLEANING UP PRIOR 34883302 * TO LEAVING IEAVPSI. THIS INCLUDES DELETION OF THE RECOVERY 34933302 * ENVIRONMENT, RELEASE OF THE SALLOC LOCK AND RESTORATION OF 34983302 * THE CALLER'S REGISTERS. ON EXIT FROM IEAVPSII, ONLY THE 35033302 * RESTORATION OF THE REGISTERS TAKES PLACE. 35083302 ********************************************************************** 35133302 EXIT CLI CIWRETC,RTCODE16 TEST THE RETURN CODE, IF 35283302 BL EXIT0 PAGE SERVICES ERROR, CONTINUE 35293302 BE NOPOST IF PARAMETER ERROR (=16), 35303302 * GO TO GENERAL PURPOSE EXIT 35333302 LA R10,X'028' IF UNKNOWN RETURN CODE (>16), GO TO 35333702 B LOAD15B INTERNAL ERROR ABEND EXIT. 35334102 EXIT0 SR R15,R15 CLEAR THE INDEX REGISTER 35343302 IC R15,CIWRETC OBTAIN THE RETURN CODE 35353302 B *+4(R15) BRANCH ACCORDING TO RETURN CODE 35363302 B EXIT00 RETURN CODE OF ZERO, NORMAL RETURN 35373302 B EXIT04 RETURN CODE = 4, POST ECB 35375302 B EXIT08 RETURN CODE = 8, FIX ECB 35379302 EXIT00 EQU * RETURN CODE = 12, NORMAL RETURN 35381302 L R11,CIWECB IS THERE AN INPUT ECB? 35383302 LTR R11,R11 TEST FOR NULL (0) VALUE 35433302 BZ LOAD15 NO ECB PRESENT, SKIP POST CODE 35483302 TM CIWOPFL1,CIWFREE PAGE FREE REQUEST? 35493302 BO LOAD15 YES, DO NOT POST ECB. 35503302 TM CIWFLG1,CIWNOPST POST TO BE SUPPRESSED? 35533302 BO LOAD15 YES, SKIP POST CODE 35583302 L R14,0(R11) GET THE ECB CONTENTS 35603302 LTR R14,R14 HAS THE ECB BEEN WAITED ON ? 35623302 BM GOPOSTIT YES, CALL POST TO POST IT. 35643302 L R15,POSTECB0 NO, SET UP TO SIMULATE POST. 35663302 CS R14,R15,0(R11) STORE THE POSTED ECB. 35683302 BE LOAD15 POSTED SUCCESSFULLY, CONTINUE. 35703302 GOPOSTIT EQU * ECB HAS CHANGED, CALL POST ROUTINE. 35723302 SR R10,R10 SET POST CODE TO 0 35743302 L R15,FLCCVT GET CVT ADDRESS TO LINK TO POST 35765302 USING CVT,R15 35765702 ***** NOTE: THE LOCAL LOCK MUST BE HELD IN ORDER FOR POST TO WORK. 35767302 L R15,CVT0PT01 ADDRESS OF THE POST ROUTINE 35773302 BALR R14,R15 LINK TO POST (IEAOPT01) 35775302 LOAD15 SR R15,R15 PREPARE FOR RETURN BY SETTING 35883302 IC R15,CIWRETC UP RETURN CODE 35933302 LOAD15A TM CIWFLG1,CIWBRIN ENTERED AT IEAVPSII? 35983302 BZ NOINTL NO, GO TO NON-RSM CALLER'S EXIT 36033302 ********************************************************************** 36093302 * IF THE ROUTINE WAS ENTERED AT IEAVPSII, IT WILL EXIT HERE. 36103302 ********************************************************************** 36113302 INTERNAL NI RCANAME3,X'FF'-RCAPSII RESET ENTRY FLAG FOR IEAVPSII 36183302 LM R0,R14,PVTWSA4 RESTORE CALLER'S REGISTERS 36233302 BR R14 RETURN 36283302 EJECT 36333302 ********************************************************************** 36383302 * THIS IS THE NORMAL EXIT FOR EITHER IEAVPSIB OR IGC113. 36433302 * THE SALLOC LOCK IS RELEASED, AND THE RECOVERY SHIELD IS 36483302 * LIFTED AT THIS POINT. 36533302 ********************************************************************** 36683302 NOINTL EQU * 36733302 SALLRL13 SETLOCK RELEASE,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(SALLGT13)) 36783302 LTR R13,R13 RELEASED LOCK SUCCESSFULLY? 36883302 BZ NRSMFRR1 YES, CONTINUE 36933302 BAL R7,RSMC0DAB NO, RECORD THE ERROR AND RETURN 36934102 NRSMFRR1 TM RCANAME6,RCAPS113 ENTERED AT IGC113? 36935302 BO RELFRR YES, REGISTERS ARE NOT RESTORED ON EXIT 36937302 L R13,PSAAOLD NO, GET THE ASCB ADDRESS TO RESTORE 36939302 USING ASCB,R13 REGISTERS FROM THE LOCAL SAVE AREA 36941302 L R13,ASCBASXB GET ASXB ADDRESS 36943302 USING ASXB,R13 36953302 L R13,ASXBSPSA SAVE AREA VECTOR 36963302 USING WSAL,R13 36973302 L R13,WSALRSM RSM LOCAL SAVE AREA ADDRESS 36975302 RELFRR SETFRR D,WRKREGS=(R1,R2) REMOVE RSM FRR COVERAGE 36983302 LTR R13,R13 IF THERE IS NO ADDRESS IN REG 13, 37033302 BZR R8 EXIT (NO REGISTERS NEED BE RESTORED FOR *37083302 IGC113), BUT REGISTER 8 MUST BE KEPT *37183302 FROM THE ENTRY AT IGC113. 37193302 ********************************************************************** 37243302 * EXIT WILL OCCUR HERE, IF ENTERED AT IEAVPSIB. 37253302 ********************************************************************** 37263302 LM R0,R14,0(R13) RESTORE CALLER'S REGISTERS 37283302 BR R14 RETURN TO CALLER 37333302 EJECT 37383302 ********************************************************************** 37393302 * THIS ROUTINE PROCESSES RETURN CODES OF 8. 37413302 * THESE RETURNS INDICATE THAT THE REQUEST WAS STARTED 37415302 * CORRECTLY, BUT WILL COMPLETE ASYNCHRONOUSLY. THE USER'S 37417302 * ECB WILL BE POSTED UPON COMPLETION. THE ECB MUST BE FIXED 37419302 * IN STORAGE IN ORDER FOR THIS TO OCCUR, THEREFORE, THE ECB 37421302 * WILL BE FIXED AT THIS TIME. 37421702 ********************************************************************** 37423302 EXIT08 EQU * 37483302 L R15,CIWECB GET THE INPUT ECB ADDRESS 37733302 LTR R15,R15 IS THERE AN ECB PRESENT? 37736302 BZ LOAD15A NO, RETURN CODE = 0 (PGLOAD, NO ECB) 37739302 LRA R0,0(R15) TEST THE ECB FOR ADDRESSABILITY. 37743302 BNZ LOAD15 NOT IN STORAGE, SKIP FIX ATTEMPT. 37753302 ********************************************************************** 37758302 * IF THE ECB IS NOT PRESENTLY IN STORAGE, IT WAS PROBABLY 37763302 * IN THE PAGE(S) JUST RELEASED BY THE INPUT REQUEST. 37773302 ********************************************************************** 37778302 ST R15,CIWSTRT STORE ECB ADDRESS IN THE VSL 37783302 LA R15,4(R15) GET ECB END ADDRESS @ZA19332 37833340 ST R15,CIWEND1 STORE IT IN THE INTERNAL VSL 38983302 MVI CIWOPFL1,CIWFIX SET FLAGS IN CIWA PREPARATORY TO 39782302 MVI CIWOPFL2,0 DOING A PAGE FIX ON THE INPUT ECB. 39785302 SR R13,R13 PRESERVE THE CURRENT RETURN 39788702 IC R13,CIWRETC CODE ACROSS THE PAGE FIX INTERFACE 39790902 SR R0,R0 ZERO OUT THE NEXT AND CURRENT 39793102 ST R0,CIWINVSL VSL POINTERS IN THE 39795302 ST R0,CIWCUVSL CIWA. 39797502 ST R0,CIWTCB ZERO TCB ADDR- PREVENT GETTING FOE 39797902 NI CIWFLG1,X'FF'-CIWFIXC-CIWOUTKR RESET INTERNAL FLAGS 39799502 STH R0,CIWRETC RESET RETURN CODE AREAS 39799602 * NOW FIX THE ECB 39805502 L R15,PVTPFXLD V(IEAVFXLD) -- ADDRESS OF PAGE-FIX 39807202 L R10,CIWWRK2 GET ADDRESS OF THE ROOT PCB 39808902 XC CIWCURPG(RICIWLEN),CIWCURPG CLEAR BALANCE OF THE CIWA 39809702 USING PCBR,R10 39810602 ***** THIS ADDRESS IS PRESERVED BY THE SUBROUTE ROUTINE 39812302 BAL R7,SUBROUTE CALL IEAVFXLD TO FIX THE ECB 39814002 CLI CIWRETC,0 FIX SUCCESSFUL? 39815702 STC R13,CIWRETC RESTORE THE ORIGINAL RETURN CODE 39817402 BNE RSMFRR2 FIX ERROR, FORCE RSM FRR ENTRY 39819102 OI PCBRFLAG,PCBRFECB SET 'FREE ECB' FLAG TO CAUSE PAGE *39820802 FREE TO TAKE PLACE ON THE ECB 39822502 B LOAD15 RETURN TO NORMAL EXIT PATH 39824202 EJECT 39825902 ********************************************************************** 39827602 * THIS ROUTINE PROCESSES ERRORS OF SEVERITY 4. 39830502 * THESE CONDITIONS INDICATE ERRORS IN THE VSL DATA PASSED. 39832502 * SINCE THIS IS A FORM OF PARAMETER ERROR, THE CALLER IS 39832702 * ABENDED WITH THE PARAMETER ERROR ABEND CODE. 39837002 * THE SPACE ALLOCATION LOCK IS RELEASED PRIOR TO POSTING THE 39838002 * INPUT ECB, SINCE IT MAY HAVE BEEN IN A PAGE INVALIDATED 39839002 * BY THE REQUEST JUST PROCESSED, AND A PAGE-FAULT MAY OCCUR 39840002 * WHEN THE POST IS ATTEMPTED. 39841002 ********************************************************************** 39843302 EXIT04 EQU * 39847702 NOPOST EQU * 39847802 LA R10,X'171' SET UP PARAMETER ERROR ABEND CODE 39847902 ********************************************************************** 39848002 * ALL RETURN CODES OTHER THAN 0, 8, AND 12 FINALLY END UP HERE. 39848402 ********************************************************************** 39848702 LOAD15B EQU * 39849102 SR R9,R9 SET UP RETURN CODE FROM THE @ZM30618 39851203 IC R9,CIWRETC ONE STORED IN THE CIWA. @ZM30618 39851903 * SAVE VSL, VSL ADDRESS, AND ECB IN WORK REGISTERS @ZM30618 39852603 * 39853303 L R8,CIWINVSL SAVE VSL ADDRESS @ZM30618 39854003 L R7,CIWECB SAVE ECB ADDRESS @ZM30618 39854703 LM R2,R3,CIWVSL SAVE CURRENT VSL @ZM30618 39855403 TM CIWFLG1,CIWBRIN IF ENTRY WAS MADE VIA IEAVPSII, 39856102 BO RCAFLAG SKIP LOCK RELEASE, AS REGISTERS 39860902 * MUST BE RESTORED FROM THE PVT. 39862902 SALLFR13 SETLOCK RELEASE,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(SALLGT13)) 39865302 CH R9,CHKRC4 POSTING REQUIRED? (RC=4)? @ZM30618 39879503 BNE RELSFRR NO, SKIP OVER POST CODE. 39880502 LTR R11,R7 IS THERE AN ADDRESS? @ZM30618 39882003 BZ RELSFRR NO, SKIP POST CODE 39882502 LA R10,4 SET POST CODE TO 4 39887302 L R15,FLCCVT GET CVT ADDRESS TO ENTER POST 39889302 USING CVT,R15 39891702 L R15,CVT0PT01 ADDRESS OF THE POST ROUTINE 39896102 BALR R14,R15 LINK TO POST (IEA0PT01) 39898102 LA R10,X'171' SET UP PARAMETER ERROR ABEND CODE 39900502 RELSFRR EQU * 39968302 SETFRR D,WRKREGS=(R11,R12) REMOVE RSM FRR @ZM30618 39973303 ABEND EQU * 39978302 CH R10,X171 IS THIS A PARAMETER ERROR ABEND? 39979102 BNE ABENDXXX NO, CONTINUE WITH ABEND. 39979902 LR R11,R8 YES, SET UP VSL ADDRESS @ZM30618 39980703 LR R12,R7 ECB ADDRESS, @ZM30618 39981203 LR R13,R2 AND CURRENT VSL, @ZM30618 39981703 LR R14,R3 FOR DIAGNOSTIC USE. @ZM30618 39982203 ABENDXXX EQU * 39982802 LR R15,R9 RESET RC FOR CALLER @ZM30618 39983003 ABEND (R10),DUMP,,SYSTEM 39983302 SPACE 2 40033302 RCAFLAG EQU * 40083302 NI RCANAME3,X'FF'-RCAPSII RESET ENTRY FLAG (IEAVPSII) 40133302 B ABEND AND ABEND 40183302 EJECT 40233302 ********************************************************************** 40235302 * THIS POINT WILL BE REACHED IF AN ERROR OCCURS WHILE 40243302 * FIXING THE ECB. 40253302 ********************************************************************** 40253702 RSMFRR2 EQU * 40255302 LA R7,LOAD15B SET UP TO CONTINUE AFTER POST CODE 40257302 LA R10,X'028' SET UP INTERNAL ERROR ABEND CODE 40257502 MVI RCARCRD,PGFIXERR INDICATE CAUSE OF ERROR TO FRR 40257702 B RSMC0D00 EXECUTE ABEND 40258102 SPACE 2 40259302 ********************************************************************** 40269302 * AN ERROR HAS OCCURRED THAT SHOULD BE RECORDED, CAUSE 40279302 * THE RSM FRR TO RECEIVE CONTROL AND RECORDING OF THE ERROR 40281302 * TO TAKE PLACE, THEN CONTINUE WITH EXIT. 40281702 ********************************************************************** 40281802 RSMC0DAB EQU * 40282102 MVI RCARCRD,SALLNOFR SET 'LOCK NOT HELD' CODE FOR FRR. 40282502 RSMC0D00 EQU * 40282602 ABEND X'C0D',,,SYSTEM 40282902 BR R7 CONTINUE AT PRESET POINT. 40283002 DROP R6 40283302 TITLE 'IEAVPSIX - SPECIAL IOS FAST-PATH PAGE FIX ROUTINE.' 42283302 *********************************************************************** 42363302 * AT THIS ENTRY POINT, THE CALLER'S REGISTERS ARE SAVED IN THE 42443302 * RSM LOCAL SAVE AREA. THIS CAN BE SAFELY DONE, SINCE THE CALLER 42523302 * MUST HOLD THE LOCAL LOCK. AT THIS ENTRY POINT, THE RECOVERY 42603302 * ENVIRONMENT IS ESTABLISHED FOR THE FUNCTION. 42683302 * 42769302 * REGISTER CONTENTS IN IEAVPSIX: 42775302 * 42781302 * R0 - ECB ADDR (ON INPUT), SCRATCH R8 - SAVE AREA ADDRESS 42787302 * R1 - 1ST HALF OF VSL, SCRATCH R9 - SCRATCH 42793302 * R2 - 2ND HALF OF VSL, RSMHD ADDR. R10 - ECB ADDRESS 42799302 * R3 - PVT ADDRESS R11 - SCRATCH 42805302 * R4 - CIWA ADDRESS R12 - SCRATCH 42811302 * R5 - RCA ADDRESS R13 - SCRATCH 42817302 * R6 - BASE REGISTER FOR PROGRAM R14 - SCRATCH 42823302 * R7 - ASCB ADDRESS R15 - SCRATCH 42829302 * 42835302 *********************************************************************** 42843302 ENTRY IEAVPSIX 42923302 DC CL8'IEAVPSIX' ENTRY SYMBOL 43003302 IEAVPSIX DS 0H 43083302 USING IEAVPSIX,R15 43163302 L R15,PSAAOLD ADDRESS OF CURRENT ASCB 43243302 USING ASCB,R15 43323302 L R15,ASCBASXB ASXB ADDRESS 43403302 USING ASXB,R15 43483302 L R15,ASXBSPSA SAVE AREA VECTOR TABLE ADDR. 43563302 USING WSAL,R15 43643302 L R15,WSALRSM RSM LOCAL SAVE AREA ADDR. 43723302 STM R0,R14,0(R15) SAVE ALL ENTRY REGISTERS 43773302 LR R8,R15 RETAIN THE SAVE AREA ADDRESS 43823302 DROP R15 43883302 L R7,PSAAOLD CURRENT ASCB ADDRESS 43963302 USING ASCB,R7 44043302 L R3,FLCCVT RESTORE CVT ADDRESS 44123302 USING CVT,R3 44203302 L R3,CVTPVTP ADDRESS OF PAGE VECTOR TABLE 44283302 USING PVT,R3 44363302 BALR R6,0 ESTABLISH THE PROGRAM BASE REG. 44443302 USING *,R6 44523302 EJECT 44563302 ******* ESTABLISH THE RECOVERY ENVIRONMENT 44603302 SETFRR A,FRRAD=PVTPRCV,PARMAD=(R5),WRKREGS=(R5,R15) 44683302 ******* PASS THE ENTRY POINT INDICATOR IN THE RCA, SO THAT 44763302 ******* THE COMMON ROUTINE WILL KNOW WHERE THE MODULE WAS ENTERED. 44843302 USING RCA,R5 44923302 OI RCANAME6,RCAPSIX IEAVPSIX ENTRY INDICATOR 45003302 MVI RCACSECT,RCACPS IEAVPSI CSECT IDENTIFIER 45083302 LR R10,R0 PRESERVE THE INPUT ECB ADDRESS. 45163302 XCOMMON2 EQU * 45243302 OI RCAFLAGS,RCAPSIER INDICATE PSI PARAMETER CHECKING 45323302 * HAS BEGUN. THIS ALLOWS THE FRR TO 45403302 * CONVERT ANY PROGRAM CHECKS 45483302 * ENCOUNTERED WHILE CHECKING THE 45563302 * ECB TO X'171' ABENDS. 45643302 TM ECB(R10),X'FF' REFER TO ECB TO FORCE PAGE-IN *45723302 (IF NECESSARY) 45803302 EJECT 45843302 XALLGT13 SETLOCK OBTAIN,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(XALLRL13,XC*45883302 BSLCRL)),MODE=UNCOND 45963302 OI RCALOCKS,RCASAL FOOTPRINT SALLOC LOCK ACQUISITION 46043302 ST R5,PVTPRCA STORE THE CURRENT RCA ADDRESS 46123302 LRA R0,ECB(R10) TEST ECB ADDRESS PASSED 46203302 BZ XECBINOK ECB IS VALID AND ADDRESSABLE 46443302 *********************************************************************** 46523302 * IF THE ECB ADDRESS IS NOT VALID, RELEASE THE SALLOC LOCK 46603302 * AND REFERENCE THE ECB AGAIN. WHEN THE ECB IS REFERRED TO, 46683302 * THIS WILL ALLOW A PAGE-FAULT TO OCCUR, FORCING THE ECB PAGE 46763302 * TO BE PAGED INTO STORAGE, OR AN ERROR TO OCCUR IF THE ADDRESS 46843302 * IS INVALID. 46923302 *********************************************************************** 47003302 XCBSLCRL SETLOCK RELEASE,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(XALLGT13)) 47083302 NI RCALOCKS,X'FF'-RCASAL RESET LOCK HELD FLAG 47163302 B XCOMMON2 RETURN TO COMMON ROUTINE 47243302 SPACE 2 47323302 *********************************************************************** 47403302 * WITH THE SALLOC LOCK OBTAINED AND THE ECB SECURELY IN STORAGE, 47483302 * THE REQUEST IS VALIDITY CHECKED AND THE PARAMETERS ARE 47563302 * PREPARED FOR THE PAGE SERVICE BY PLACING THEM IN THE 47643302 * COMMON INTERNAL WORK AREA (CIWA). 47723302 *********************************************************************** 47803302 XECBINOK EQU * 47883302 L R13,ECB(R10) GET THE CONTENTS OF THE ECB AND 47963302 CS R13,R13,ECB(R10) SYNCHRONOUSLY STORE IT TO PREVENT 48043302 * STEALING BY RSM LSQA ROUTINE. 48123302 ***** NOTE: THE ECB BOUNDARY ALIGNMENT REQUIRED FOR POST HAS BEEN 48133302 ***** ASSURED BY THE CS INSTRUCTION (WHICH IS BOUNDARY ALIGNED). 48143302 ***** SHOULD THE ALIGNMENT REQUIREMENT FOR CS CHANGE, THE ECB 48153302 ***** WILL HAVE TO BE CHECKED ANOTHER WAY. 48163302 NI RCAFLAGS,X'FF'-RCAPSIER RESET ECB CHECKING FLAG. 48203302 * THE ECB HAS EITHER BEEN STORED OR THE CONTENTS HAVE IN SOME 48283302 * WAY BEEN CHANGED. IN EITHER CASE, THE PAGE CONTAINING THE ECB 48363302 * HAS BEEN CHANGED, PREVENTING THE FRAME FROM BEING STOLEN 48443302 * DURING SUBSEQUENT PROCESSING. 48523302 L R4,PVTPCIWA COMMON INTERNAL WORK AREA ADDR. 48603302 USING CIWA,R4 48683302 XC CIWA(CIWALEN),CIWA INITIALIZE THE CIWA 48763302 ST R10,CIWECB SAVE THE ECB ADDRESS 48843302 OI CIWFLG1,CIWBREX INDICATE NON-RSM BRANCH ENTRY CALL 49003302 EJECT 49043302 *********************************************************************** 49083302 * THIS IS A REGISTER FORM CALL, GET THE VSL DATA INTO THE 49163302 * THE CIWA FROM CONTENTS OF REGISTERS 1 AND 2. 49243302 *********************************************************************** 49323302 ST R1,CIWSTRT SET UP THE VSL IN THE CIWA 49403302 ST R2,CIWEND1 FROM THE INPUT PARAMETERS. 49483302 STCM R1,B'1000',CIWOPFL1 SAVE THE OPTION FLAGS FROM THE VSL 49563302 STCM R2,B'1000',CIWOPFL2 IN THE PAGE SERVICES OP FLAG AREAS 49663302 L R2,ASCBRSM GET RSM HEADER ADDRESS FOR PGFIX 49883302 TM CIWOPFL2,CIWERR+CIWEXTRS ANY ERRORS? 49963302 BNZ RC16XX YES, ERROR RETURN 50043302 L R15,PVTPFXLD NO, CALL IEAVFXLD 50123302 STM R0,R15,PVTWSA11 SAVE NECESSARY REGISTERS 50203302 * THE CALLED SUBROUTINE MUST GUARANTEE THE RETURN OF 50283302 * REGISTER 3. 50363302 BALR R14,R15 BRANCH (LINK) TO REQUESTED FUNCTION 50443302 LM R0,R15,PVTWSA11 RESTORE REQUIRED REGISTERS 50523302 MVI RCACSECT,RCACPS RESET CSECT IDENTIFIER 50603302 CLI CIWRETC,0 WAS THE OPERATION SUCCESSFUL? 50683302 BNE ERRTEST NO, SET UP TO USE COMMON ERROR CODE. 50763302 TM CIWFLG1,CIWNOPST POST TO BE SUPPRESSED? 50843302 BO LOAD15X YES, SKIP POST CODE 50923302 L R14,0(R10) GET THE ECB CONTENTS 51003302 LTR R14,R14 HAS THE ECB BEEN WAITED ON ? 51083302 BM XOPOSTIT YES, CALL POST TO POST IT. 51163302 L R15,POSTECB0 NO, SET UP TO SIMULATE POST. 51243302 CS R14,R15,0(R10) STORE THE POSTED ECB. 51323302 BE LOAD15X POSTED SUCCESSFULLY, CONTINUE. 51403302 XOPOSTIT EQU * ECB HAS CHANGED, CALL POST ROUTINE. 51483302 SR R10,R10 SET POST CODE TO 0 51563302 L R15,FLCCVT GET CVT ADDRESS TO LINK TO POST 51643302 USING CVT,R15 51723302 ***** NOTE: THE LOCAL LOCK MUST BE HELD IN ORDER FOR POST TO WORK. 51803302 L R15,CVT0PT01 ADDRESS OF THE POST ROUTINE 51883302 BALR R14,R15 LINK TO POST (IEAOPT01) 51963302 LOAD15X EQU * 52043302 SR R15,R15 PREPARE FOR RETURN BY SETTING 52123302 IC R15,CIWRETC UP RETURN CODE 52203302 EJECT 52243302 ************************************************************** 52249302 * THE FAST PAGE-FIX HAS COMPLETED SUCCESSFULLY, RELEASE 52255302 * THE SALLOC LOCK AND THE RSM FRR COVERAGE, THEN RETURN 52261302 * TO THE CALLER. 52267302 ************************************************************** 52273302 XALLRL13 SETLOCK RELEASE,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(XALLGT13)) 52283302 LTR R13,R13 RELEASED LOCK SUCCESSFULLY? 52363302 BZ XRSMFRR1 YES, CONTINUE 52443302 ABEND X'C0D',,,SYSTEM NO, RECORD THE ERROR AND CONTINUE 52523302 XRSMFRR1 EQU * 52603302 SETFRR D,WRKREGS=(R1,R2) REMOVE RSM FRR COVERAGE 53243302 LM R0,R14,0(R8) RESTORE CALLER'S REGISTERS 53323302 BR R14 RETURN TO CALLER 53403302 EJECT 53483302 ************************************************************** 53563302 * ALL ERROR RETURNS FROM IEAVPSIX ARE FUNNELED THROUGH THE 53643302 * MAIN EXIT ROUTINE IN IEAVPSI, SO AS TO MINIMIZE STORAGE. 53723302 * THE FOLLOWING CODE ESTABLISHES ADDRESSABILITY IN THE MAIN 53803302 * ROUTINE AND BRANCHES TO IT. 53883302 ************************************************************** 53963302 RC16XX EQU * 53983302 MVI CIWRETC,16 SET UP PARAMETER ERROR CODE 54003302 ERRTEST EQU * 54043302 LA R6,PSIXBASE-COMMON00 ESTABLISH ADDRESSABILITY 54123302 BALR R15,0 TO THE COMMON ROUTINE, 54203302 PSIXBASE EQU * 54283302 LNR R6,R6 SO THAT THE ERROR EXIT ROUTINES 54363302 AR R6,R15 CAN BE USED FOR ERROR PROCESSING. 54443302 USING COMMON00,R6 54483302 B EXIT GO TO COMMON EXIT HANDLING 54523302 DROP R6 54563302 TITLE 'IEAVPSIF - SPECIAL IOS PAST-PATH PAGE FREE ROUTINE.' 54603302 *********************************************************************** 54683302 * AT THIS ENTRY POINT, THE CALLER'S REGISTERS ARE SAVED IN THE 54763302 * RSM LOCAL SAVE AREA. THIS CAN BE SAFELY DONE, SINCE THE CALLER 54843302 * MUST HOLD THE LOCAL LOCK. AT THIS ENTRY POINT, THE RECOVERY 54923302 * ENVIRONMENT IS ESTABLISHED FOR THE FUNCTION. 55003302 * 55089302 * REGISTER CONTENTS IN IEAVPSIF: 55095302 * 55101302 * R0 - ECB ADDR (ON INPUT), SCRATCH R8 - SAVE AREA ADDRESS 55107302 * R1 - ADDRESS OF VSL, SCRATCH R9 - SCRATCH 55113302 * R2 - RSMHD ADDR. R10 - SCRATCH 55119302 * R3 - PVT ADDRESS R11 - SCRATCH 55125302 * R4 - CIWA ADDRESS R12 - SCRATCH 55131302 * R5 - RCA ADDRESS R13 - SCRATCH 55137302 * R6 - BASE REGISTER FOR PROGRAM R14 - SCRATCH 55143302 * R7 - ASCB ADDRESS R15 - SCRATCH 55149302 * 55155302 *********************************************************************** 55163302 ENTRY IEAVPSIF 55243302 DC CL8'IEAVPSIF' ENTRY SYMBOL 55323302 IEAVPSIF DS 0H 55403302 USING IEAVPSIF,R15 55483302 L R15,PSAAOLD ADDRESS OF CURRENT ASCB 55563302 USING ASCB,R15 55643302 L R15,ASCBASXB ASXB ADDRESS 55723302 USING ASXB,R15 55803302 L R15,ASXBSPSA SAVE AREA VECTOR TABLE ADDR. 55883302 USING WSAL,R15 55963302 L R15,WSALRSM RSM LOCAL SAVE AREA ADDR. 56043302 STM R0,R14,0(R15) SAVE ALL ENTRY REGISTERS 56093302 LR R8,R15 RETAIN THE SAVE AREA ADDRESS 56143302 DROP R15 56203302 L R7,PSAAOLD CURRENT ASCB ADDRESS 56283302 USING ASCB,R7 56363302 L R3,FLCCVT RESTORE CVT ADDRESS 56443302 USING CVT,R3 56523302 L R3,CVTPVTP ADDRESS OF PAGE VECTOR TABLE 56603302 USING PVT,R3 56683302 BALR R6,0 ESTABLISH THE PROGRAM BASE REG. 56763302 USING *,R6 56843302 EJECT 56883302 ******* ESTABLISH THE RECOVERY ENVIRONMENT 56923302 SETFRR A,FRRAD=PVTPRCV,PARMAD=(R5),WRKREGS=(R5,R15) 57003302 ******* PASS THE ENTRY POINT INDICATOR IN THE RCA, SO THAT 57083302 ******* THE COMMON ROUTINE WILL KNOW WHERE THE MODULE WAS ENTERED. 57163302 USING RCA,R5 57243302 OI RCANAME6,RCAPSIF IEAVPSIF ENTRY INDICATOR 57323302 MVI RCACSECT,RCACPS IEAVPSI CSECT IDENTIFIER 57403302 FALLGT13 SETLOCK OBTAIN,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(FALLRL13)),*57483302 MODE=UNCOND 57563302 OI RCALOCKS,RCASAL FOOTPRINT SALLOC LOCK ACQUISITION 57643302 ST R5,PVTPRCA STORE THE CURRENT RCA ADDRESS 57723302 L R4,PVTPCIWA COMMON INTERNAL WORK AREA ADDR. 57883302 USING CIWA,R4 57963302 XC CIWA(CIWALEN),CIWA INITIALIZE THE CIWA 58043302 OI CIWFLG1,CIWBREX INDICATE NON-RSM BRANCH ENTRY CALLER 58203302 EJECT 58243302 *********************************************************************** 58283302 * THE REQUEST WAS OF THE LIST FORM, SO THE VSL ENTRY MUST BE 58363302 * VALIDATED. TO DO THIS, IT IS PASSED TO THE 'NEXTVSL' ROUTINE, 58443302 * WHICH IS LOCATED IN THIS MODULE. 58523302 *********************************************************************** 58603302 LA R1,0(R1) CLEAR EXTRANEOUS BITS FROM ADDRESS 58683302 ST R1,CIWINVSL SAVE VSL LIST ADDRESS 58763302 USING VSL,R1 58843302 OI RCAFLAGS,RCAPSIER INDICATE VSL CHECKING HAS BEGUN. 58853302 * THE FRR WILL CONVERT ANY PROGRAM 58863302 * CHECKS ENCOUNTERED WHILE CHECKING 58873302 * THE VSL TO X'171' ABENDS. 58883302 IC R15,VSLFLAG1 COPY THE VSL OPTION FLAGS 58923302 STC R15,CIWOPFL1 FROM THE VSL INTO THE 58943302 IC R15,VSLFLAG2 PAGE SERVICES OPERATION FLAG 58963302 STC R15,CIWOPFL2 AREAS IN THE CIWA. 59003302 NI RCAFLAGS,X'FF'-RCAPSIER RESET VSL CHECKING FLAG. 59043302 DROP R1 59083302 S R1,FVSLLEN BACK UP CURRENT VSL POINTER FOR 59163302 ST R1,CIWCUVSL USE BY NEXTVSL ROUTINE AND SAVE IT 59243302 LA R15,NEXTVSL NEXTVSL ENTRY ADDRESS 59323302 BALR R14,R15 GO VALIDATE THIS VSL ENTRY 59403302 LTR R15,R15 IS IT VALID? 59483302 BNZ RC16GF NO, ERROR 59563302 L R2,ASCBRSM GET RSM HEADER ADDRESS FOR PGFREE 59643302 TM CIWOPFL2,CIWERR+CIWEXTRS ANY ERRORS? 59723302 BNZ RC16GF YES, ERROR RETURN 59803302 L R15,PVTPFREE PAGE-FREE FUNCTION ADDRESS 60043302 *********************************************************************** 60123302 * THIS ROUTINE SAVES THE NECESSARY REGISTERS PRIOR TO LINKING TO 60203302 * THE SUBROUTINE WHOSE ADDRESS IS IN REGISTER 15. ON RETURN, IT 60283302 * RE-ESTABLISHES THE CSECT ID IN THE RCA AND RETURNS TO ITS 60363302 * INVOKER VIA REGISTER 7. 60443302 *********************************************************************** 60523302 STM R0,R15,PVTWSA11 SAVE NECESSARY REGISTERS 60603302 * THE CALLED SUBROUTINE MUST GUARANTEE THE RETURN OF 60683302 * REGISTER 3. 60763302 BALR R14,R15 BRANCH (LINK) TO REQUESTED FUNCTION 60843302 LM R0,R15,PVTWSA11 RESTORE REQUIRED REGISTERS 60923302 MVI RCACSECT,RCACPS RESET CSECT IDENTIFIER 61003302 CLI CIWRETC,0 WAS THE PAGEFREE SUCCESSFUL? 61083302 BNE PSIFERR NO, GO TO ERROR PROCESSOR 61163302 SR R15,R15 PREPARE FOR RETURN BY SETTING 61243302 IC R15,CIWRETC UP RETURN CODE 61323302 EJECT 61363302 ********************************************************************** 61403302 * THIS IS THE NORMAL EXIT FOR IEAVPSIF. 61483302 * THE SALLOC LOCK IS RELEASED, AND THE RECOVERY SHIELD IS 61563302 * LIFTED AT THIS POINT. 61643302 ********************************************************************** 61723302 FALLRL13 SETLOCK RELEASE,TYPE=SALLOC,RELATED=(SALLOC,IEAVPSI(FALLGT13)) 61803302 LTR R13,R13 RELEASED LOCK SUCCESSFULLY? 61883302 BZ FRSMFRR1 YES, CONTINUE 61963302 ABEND X'C0D',,,SYSTEM NO, RECORD THE ERROR AND RETURN 62043302 FRSMFRR1 EQU * 62123302 SETFRR D,WRKREGS=(R1,R2) REMOVE RSM FRR COVERAGE 62763302 LM R0,R14,0(R8) RESTORE CALLER'S REGISTERS 62843302 BR R14 RETURN TO CALLER 62923302 EJECT 63003302 ******************************************************************* 63083302 * ALL ERROR RETURNS FROM IEAVPSIF ARE FUNNELED THROUGH THE 63163302 * MAIN EXIT ROUTINE IN IEAVPSI, SO AS TO MINIMIZE STORAGE. 63243302 * THE FOLLOWING CODE ESTABLISHES ADDRESSABILITY IN THE MAIN 63323302 * ROUTINE AND BRANCHES TO IT. 63403302 ******************************************************************* 63483302 RC16GF EQU * 63503302 MVI CIWRETC,16 SET UP PARAMETER ERROR CODE 63523302 SPACE 3 63543302 PSIFERR EQU * 63563302 LA R6,PSIFBASE-COMMON00 ESTABLISH ADDRESSABILITY 63643302 BALR R15,0 TO THE COMMON ROUTINE CODE SO 63723302 PSIFBASE EQU * 63803302 LNR R6,R6 THAT THE COMMON ERROR PROCESSING 63883302 AR R6,R15 ROUTINES CAN BE USED. 63963302 USING COMMON00,R6 64003302 B EXIT BRANCH TO THE COMMON EXIT PROCESSOR. 64043302 DROP R6 64083302 TITLE 'VSL VALIDATION ROUTINE FOR LIST FORM REQUESTS' 64123302 ********************************************************************** 64203302 * THIS ROUTINE OBTAINS THE NEXT VSL IN A VSL LIST THAT 64283302 * IS ADDRESSED FROM THE CIWA. IT WILL THEN VALIDITY CHECK 64363302 * THIS VSL ENTRY AND PASS IT BACK BY STORING IT 64443302 * IN THE COMMON INTERNAL WORK AREA (CIWA). 64523302 ********************************************************************** 64603302 ENTRY NEXTVSL 64683302 DC CL8'NEXTVSL' ENTRY POINT SYMBOL 64763302 NEXTVSL DS 0H 64843302 USING NEXTVSL,R15 64923302 USING PVT,R3 65003302 STM R5,R13,PVTSAVE SAVE CALLER'S REGISTERS 65083302 USING CIWA,R4 65163302 TESTLAST TM CIWIFLG2,CIWILAST LAST ENTRY ALREADY PROCESSED? 65243302 BO VSLDONE YES, EXIT 65323302 L R5,CIWCUVSL NO, GET CURRENT VSL ENTRY ADDRESS 65403302 LA R5,VSLLEN(R5) ADD THE LENGTH OF A VSL ENTRY 65483302 LR R10,R5 SAVE THE VSL'S VIRTUAL ADDRESS 65563302 ADDRTST0 EQU * 65643302 TM CIWCUVSL+L'CIWCUVSL-1,WORDBDRY IF THE VSL IS NOT 65723302 BNZ ERR4 ON A WORD BOUNDARY, ERROR RETURN. 65803302 ST R5,CIWCUVSL STORE ADDRESS OF THE NEW CURRENT VSL 65883302 ADDRTEST LRA R6,0(R5) GET REAL STORAGE ADDRESS OF VSL 65963302 BNZ ERR4 CANNOT BE RESOLVED, ERROR 66043302 CLM R5,VBNMASK,PVTLPRIV TEST FOR VSL ADDRESS IN PRIVATE AREA 66123302 BL KEYCHECK VSL IS IN NUCLEUS, SKIP CHECKS 66203302 LR R7,R6 CHECK TO SEE IF THE VSL IS IN FIXED 66283302 SRL R7,12 STORAGE BY LOCATING THE ASSOCIATED 66363302 L R9,PVTPFTP PAGE FRAME TABLE ENTRY AND CHECKING 66443302 SLL R7,4 TO SEE IF THE PAGE IS FIXED. 66523302 LA R9,0(R9,R7) ADDRESS OF THE PFTE 66603302 USING PFTE,R9 66683302 LH R7,PFTFXCT GET AND TEST THE FIX COUNT FOR THE 66763302 LTR R7,R7 FRAME, CHECKING FOR A ZERO COUNT 66843302 BZ LOCCHECK THE PAGE IS NOT FIXED, CONTINUE 66923302 TM CIWOPFL1,CIWFREE IF NOT PGFREE, CONTINUE WITH 67003302 BNO KEYCHECK NORMAL PROCESSING, OTHERWISE, 67083302 BCT R7,KEYCHECK IF THE FIX COUNT IS > 1, CONTINUE 67163302 ********************************************************************* 67243302 * THE VSL IS FOR A PAGE FREE OF A PAGE HAVING A FIX COUNT OF 67323302 * EXACTLY ONE. THE VSL ADDRESSES MUST NOW BE CHECKED TO 67403302 * ASCERTAIN IF THE PAGE FREE WILL FREE THE VSL AS WELL. 67483302 ********************************************************************* 67563302 USING VSL,R10 67643302 SR R11,R11 GET THE VBN OF THE FRAME 67723302 ICM R11,VBNHWRD,PFTVBN CONTAINING THE VSL. 67803302 LA R13,16(R11) GENERATE THE VBN OF THE NEXT FRAME. 67883302 SR R12,R12 IF THE VBN OF THE FRAME CONTAINING 67893302 ICM R12,ADDRMASK,VSLEND1A THE VSL IS HIGHER THAN 67903302 BCTR R12,0 THE ENDING ADDRESS OF THE 67913302 SLL R11,8 AREA TO BE FREED (VSLEND1A 67923302 CR R11,R12 -1) THEN THE VSL IS ABOVE THE 67933302 BH KEYCHECK AREA TO BE FREED, CONTINUE. 67963302 CLM R13,VBNHWRD,VSLSTRTA IF IT IS BELOW THE START ADDRESS 68123302 BNH KEYCHECK OF THE AREA TO BE FREED, CONTINUE. 68203302 B ERR4 OTHERWISE, THE VSL WOULD BE FREED 68283302 * BY THIS REQUEST, PARAMETER ERROR. 68363302 SPACE 68443302 LOCCHECK EQU * 68523302 TM PFTFLAG1,PFTLSQA+PFTVRALC NOT FIXED, IT IT AN L/SQA *68603302 FRAME OR IS THE PAGE IN V=R AREA? 68683302 BZ ERR4 NO, ERROR RETURN 68763302 KEYCHECK EQU * 68843302 CLI CIWKEY,0 IS THE CALLER'S KEY EQUAL TO ZERO? 68923302 BE SECNDWD YES, SKIP THE REMAINING CHECKS 69003302 * NO, SET UP TO DO AN ISK ON THE 69083302 N R6,ISKPREP 'REAL' STORAGE ADDRESS OF THE VSL 69163302 ISK R9,R6 GET THE KEY OF THE VSL ENTRY 69243302 N R9,KEYMASKW TURN OFF THE EXTRANEOUS BITS 69323302 CLM R9,B'0001',CIWKEY DOES THE CALLER'S KEY MATCH? 69403302 BNE ERR4 NO, ERROR RETURN 69483302 SPACE 2 69563302 ********************************************************************** 69643302 * ONE WORD OF THE VSL PASSES THE TEST, IF IT WAS THE FIRST 69723302 * WORD, AND THE VSL SPANS A PAGE, THE SECOND WORD MUST ALSO 69803302 * BE VALIDATED. 69883302 ********************************************************************** 69963302 SECNDWD EQU * 70043302 C R5,CIWCUVSL IS THIS THE FIRST PASS FOR THIS VSL? 70123302 BNE STORVSL NO, STORE THE ENTRY AND EXIT 70203302 LA R7,L'VSLSTRT(R5) YES, GET THE ADDRESS OF THE SECOND 70283302 LR R9,R7 PART OF THE VSL ENTRY AND CHECK 70363302 N R7,PAGEBDRY IT FOR RESIDENCE ON A NEW PAGE 70443302 ********************************************************************** 70523302 * IF THE VSL SPANS A PAGE, THE STARTING ADDRESS MUST BE 70603302 * X'...FFC' (I.E., X'...000'-4). THEREFORE, IF 4 IS ADDED TO THE 70683302 * ADDRESS AND ALL BITS <4096 ARE 'AND'ED OFF, THE ADDRESS WILL 70763302 * REMAIN UNCHANGED IF AND ONLY IF THE VSL SPANS A PAGE. 70843302 ********************************************************************** 70923302 CR R7,R9 DOES THE VSL SPAN A PAGE? 71003302 BNE STORVSL2 NO, STORE THE VSL 71083302 GETPAGE EQU * SINCE THE VSL ENTRY SPANS A PAGE, WE 71163302 LR R5,R9 MUST PASS THE SECOND WORD ADDRESS 71243302 B ADDRTEST THROUGH ALL THE SAME CHECKS 71323302 EJECT 71403302 ********************************************************************** 71483302 * THE VSL SATISFACTORILY PASSES THE VALIDITY CHECKS, STORE 71563302 * IT IN THE CIWA INTERNAL VSL FIELD. 71643302 ********************************************************************** 71723302 STORVSL EQU * 71803302 L R5,CIWCUVSL RESTORE THE VSL ADDRESS 71883302 STORVSL2 EQU * 71963302 MVC CIWVSL,0(R5) MOVE THE VSL INTO THE CIWA 72043302 TM CIWIFLG2,CIWINULL NULL VSL ENTRY? 72063302 BO TESTLAST YES, RECYCLE THROUGH IF ANY OTHERS 72083302 TM CIWIFLG1,CIWICONT CONTINUED VSL? 72123302 BO GETADDR YES, CONTINUE 72203302 SR R15,R15 NO, RETURN CODE = 0 72443302 LM R5,R13,PVTSAVE RESTORE CALLER'S REGISTERS 72523302 BR R14 RETURN TO CALLER 72603302 SPACE 2 72683302 ********************************************************************** 72763302 * THE VSL ENTRY DOES NOT PASS THE VALIDITY CHECK, SET 72843302 * THE ERROR CODE OF 4 AND RETURN. 72923302 ********************************************************************** 73003302 ERR4 LA R15,4 SET RETURN CODE TO 4 73083302 LM R5,R13,PVTSAVE RESTORE CALLER'S REGISTERS 73163302 BR R14 RETURN TO CALLER 73243302 SPACE 2 73323302 ********************************************************************** 73403302 * THERE ARE NO MORE VSL ENTRIES LEFT TO PROCESS, RETURN 73483302 * A CODE OF EIGHT TO ADVISE THE CALLER OF THIS CONDITION. 73563302 ********************************************************************** 73643302 VSLDONE EQU * 73723302 LA R15,8 SET RETURN CODE = 8 73803302 LM R5,R13,PVTSAVE RESTORE CALLER'S REGISTERS 73883302 BR R14 RETURN TO CALLER 73963302 SPACE 2 74043302 ********************************************************************** 74123302 * A CONTINUATION VSL ENTRY HAS BEEN FOUND, GET THE NEXT VSL 74203302 * ADDRESS FROM THE FIRST WORD OF THE CONTINUATION ENTRY. 74283302 ********************************************************************** 74363302 GETADDR EQU * 74443302 L R5,CIWSTRT SET UP TO HANDLE CONTINUATION ENTRY 74523302 B ADDRTST0 AND GO ON WITH PROCESS. 74603302 TITLE 'IEAVPSI -- PAGE SERVICES INTERFACE ROUTINE' 74683302 ********************************************************************** 74763302 * THESE ARE THE CONSTANTS AND WORK AREAS REQUIRED BY THE ROUTINE 74843302 ********************************************************************** 74923302 WORDBDRY EQU 3 MASK FOR WORD-ALIGNMENT TESTING 75003302 VBNHWRD EQU 3 MASK TO EFFECT A 'CLH' ON A VBN 75083302 KEYMASK EQU X'F0' MASK TO REMOVE EXTRANEOUS BITS FROM KEY 75163302 ECB EQU 0 DISPLACEMENT TO ECB 75243302 ADDRMASK EQU 7 MASK FOR STORING/ LOADING ADDRESSES 75323302 VBNMASK EQU 6 MASK TO COMPARE ADDRS AGAINST RBN/VBN'S 75403302 SALLNOFR EQU 6 RETURN CODE FOR FRR TO INDICATE THAT*75483302 AN ATTEMPT WAS MADE TO FREE A LOCK NOT HELD. 75563302 PGFIXERR EQU X'1C' RETURN CODE TO INFORM FRR THAT PGFIX *75643302 COULD NOT FIX THE ECB. 75723302 FVSLLEN DC A(VSLLEN) LENGTH OF A VSL ENTRY 75803302 ISKPREP DC X'FFFFFFF0' MASK TO PREPARE AN ADDRESS FOR AN 'ISK' 75883302 KEYMASKW DC X'000000F0' MASK FOR ISOLATING 4-BIT KEY AFTER 'ISK' 75963302 PAGEBDRY DC X'FFFFF000' MASK FOR PAGE BOUNDARY DETERMINATION 76043302 POSTECB0 DC X'40000000' IMAGE OF A POSTED ECB WITH CODE=0 76123302 X171 DS 0H ABEND CODE FOR PARAMETER ERRORS, 76203302 DC X'0171' USED TO TEST FOR ABEND TYPE 76283302 CHKRC4 DS 0H INDICATES ECB POSTING REQUIRED 76303303 DC X'0004' USED ON ERROR PATH 76323303 EJECT 76363302 CVT DSECT=YES 76443302 IHAPVT 76523302 EJECT 76603302 IHAPFTE 76683302 EJECT 76763302 IHAVSL 76843302 EJECT 76923302 IEACIWA 77003302 RICIWLEN EQU *-CIWCURPG LENGTH OF CIWA TO BE RE-INITIALIZED *77083302 WHEN TWO PAGE SERVICES ROUTINES ARE CALLED IN SEQUENCE 77163302 EJECT 77243302 IHARCA 77323302 EJECT 77403302 IHAASCB 77483302 EJECT 77563302 IHAASXB 77643302 EJECT 77723302 IHAFRRS 77803302 EJECT 77883302 IHAPSA 77963302 EJECT 78043302 IHAWSAVT CLASS=LOCAL 78123302 EJECT 78203302 IHAPCBR 78283302 EJECT 78363302 IKJTCB 78443302 EJECT 78523302 IKJRB 78603302 EJECT 78683302 */*IGC112: CHART */ 78763302 */* E IGC112 */ 78843302 */* S SETFRR:CREATE FRR ELEMENT FOR RSM */ 78923302 */* P INIT. RCA WITH MODULE ID AND ENTRY POINT FLAG */ 79003302 */* S SETLOCK:GET THE SALLOC LOCK */ 79083302 */* P SET SALLOC FLAG IN RCA. STORE RCA ADDR IN PVT */ 79163302 */* P CLEAR CIWA. CIWKEY = CALLERS KEY FROM RB PSW */ 79243302 */* P PLACE R0 AND R1 IN INTERNAL VSL, INDICATE SVC112 CALL */ 79323302 */* D (NO,,YES,RC4) START ADDR > END ADDR+1 */ 79403302 */* S TESTAUTH: CHECK CALLERS AUTHORIZATION. R14-R3 CHANGED */ 79483302 */* D (NO,,YES,SETUP) AUTHORIZED CALLER ? */ 79563302 */* D (NO,,YES,RC4) AREA TO BE RELEASED COMMON AREA ? */ 79643302 */*SETUP: P SET UP THE CIWA FOR A PAGE RELEASE */ 79723302 */* S IEAVRELS: PAGE RELEASE FUNCTION */ 79803302 */* P RESET MODULE ID IN RCA */ 79883302 */* P R15 = RETURN CODE IN CIWA */ 79963302 */*EXIT112: S SETLOCK:RELEASE SALLOC LOCK */ 80043302 */* D (YES,EXIT112A,NO,%IMMEXIT) LOCK RELEASED O.K. ? */ 80123302 */*EXIT112A: S SETFRR:REMOVE RSM FRR FROM STACK */ 80203302 */* R RETURN TO CALLER */ 80283302 */*%IMMEXIT: S (,EXIT112A) ABEND: RSM FRR VIA ABEND X'C0D' */ 80363302 */*RC4: P (,EXIT112) SET RETURN CODE = 4 */ 80443302 */*IGC112: END */ 80523302 */*MAIN: CHART */ 80603302 */* E (,%ENTRY1) IGC113 */ 80683302 */* E (,%ENTRY2) IEAVPSIB */ 80763302 */*%ENTRY1: P MOVE CONTENTS OF REGISTER 15 TO REGISTER 2 FOR 80843302 */*COMMON PROCESSING */ 80923302 */* S SETFRR:CREATE FRR ELEMENT FOR RSM */ 81003302 */* P (,COMMON) INIT. RCA WITH ENTRY POINT FLAG */ 81083302 */*%ENTRY2: P SAVE CALLERS REGISTERS IN RSM LOCAL SAVE AREA */ 81163302 */* S SETFRR:CREATE FRR ELEMENT FOR RSM */ 81243302 */* P INIT. RCA WITH ENTRY POINT FLAG */ 81323302 */*COMMON: P SET MODULE ID IN THE RCA */ 81403302 */* D (YES,,NO,SALLGT13) IS THERE AN INPUT ECB? */ 81483302 */* D (YES,RC16X,NO,COMMON2) ECBIND OPTION (NEGATIVE ECB ADDR) ? */ 81563302 */*COMMON2: P REFERENCE INPUT ECB TO PAGE IT INTO STORAGE */ 81643302 */*SALLGT13: S SETLOCK:GET SALLOC LOCK */ 81723302 */* P SET SALLOC FLAG IN RCA AND POINT THE PVT TO THE RCA */ 81803302 */* D (YES,,NO,%CCIWA) IS THERE AN ECB GIVEN ? */ 81883302 */* P GET THE REAL STORAGE ADDRESS OF THE ECB */ 81963302 */* D (YES,ECBINOK,NO,GETECBIN) ECB IN STORAGE ? */ 82043302 */*GETECBIN: S SETLOCK:RELEASE SALLOC LOCK */ 82123302 */* P (,COMMON2) RESET SALLOC FLAG IN RCA */ 82203302 */*ECBINOK: P STORE ECB IN ECB TO PREVENT 82283302 */*STEALING OF FRAME. */ 82363302 */*%CCIWA: P CLEAR CIWA TO 0 AND SET CIWECB = INPUT ECB ADDR */ 82443302 */* D (YES,SVC113EP,NO,) ENTERED VIA SVC 113 ? */ 82523302 */* P (,REGTST) SET (IEAVPSIB) BRANCH ENTRY FLAG IN THE CIWA */ 82603302 */*SVC113EP: P SET SVC 113 ENTRY FLAG IN THE CIWA */ 82683302 */* P GET THE CALLERS KEY FROM RB PSW */ 82763302 */*REGTST: D (YES,,NO,LIST) REGISTER FORM ENTRY */ 82843302 */* P SET UP THE CIWA'S VSL FROM REGISTERS 1 AND 2 */ 82923302 */* D (YES,,NO,MOVEFLGS) END ADDRESS OMITTED ? */ 83003302 */* P GENERATE A ONE BYTE REQUEST ENDING ADDRESS */ 83083302 */*MOVEFLGS: P (,TSTRSAOP) COPY INPUT OPTION FLAGS INTO PAGE SERVICES 83163302 */*AREAS IN CIWA */ 83243302 */*TSTRSAOP: D (NO,,YES,RC16X) REAL ADDR OPTION REQUESTED */ 83323302 */* D (YES,,NO,BRANCH) ENTERED AT IGC113 (SVC 113) ? */ 83403302 */* D (YES,,NO,SETTCB) FIX OR FREE REQUEST ? */ 83483302 */* S TESTAUTH:TEST REQUESTORS AUTHORIZATION. R14-R3 CHANGED */ 83563302 */* D (YES,,NO,RC16E) CALLER AUTHORIZED ? */ 83643302 */*SETTCB: P STORE THE INPUT TCB ADDR IN THE CIWA */ 83723302 */*ECBCHK: D (YES,ECBONWRD,NO,%FIXTEST) INPUT ECB SUPPLIED ? */ 83803302 */*%FIXTEST: D (YES,RC16X,NO,SETRSMHD) PGFIX REQUEST ? */ 83883302 */*ECBONWRD: D (YES,,NO,RC16X) ECB ON A FULLWORD BOUNDARY ? */ 83963302 */* D (NO,,YES,RC16X) PGOUT REQUEST ? */ 84043302 */* D (NO,,YES,SETRSMHD) KEY ZERO CALLER ? */ 84123302 */* D (YES,,NO,RC16X) ECB HAVE CORRECT PROTECT KEY ? */ 84203302 */*SETRSMHD: P GET THE RSM HEADER ADDRESS FOR THE ROUTER */ 84283302 */* R GO TO ROUTER RTN. */ 84363302 */*RC16E: P SET UP RETURN CODE = 16 AND ABEND CODE = X'271' */ 84443302 */* R EXIT ROUTINE AT LOAD15B */ 84523302 */*LIST: P STORE THE VSL ADDR IN THE CIWA AND COPY THE OPTION FLAGS */ 84603302 */* P CIWCUVSL = (VSL ADDR - 8) FOR CALL TO NEXTVSL */ 84683302 */* S NEXTVSL:CHECK FIRST VSL ENTRY AND STORE IN CIWA */ 84763302 */* D (YES,TSTRSAOP,NO,RC16X) VSL VALIDATION SUCCEED ? */ 84843302 */*BRANCH: P STORE THE INPUT TCB ADDR IN THE CIWA */ 84923302 */* D (YES,,NO,ECBCHK) TCB ADDRESS SUPPLIED ? */ 85003302 */* D (YES,ECBCHK,NO,RC16X) TCB ADDR ON FULLWORD BOUNDARY ? */ 85083302 */*RC16X: P SET THE RETURN CODE (CIWRETC) = 16 */ 85163302 */* R GO TO EXIT RTN. */ 85243302 */*MAIN: END */ 85323302 */*ROUTER: CHART */ 85403302 */*IEAVPSIX: E IOS FAST-FIX */ 85408302 */* P SAVE REGISTERS IN RSM LOCAL SAVE AREA */ 85413302 */* S SETFRR: ESTABLISH RSM RECOVERY */ 85418302 */* P SET CSECT AND ENTRY FLAGS IN RCA */ 85423302 */*XCOMMON2: P SET PSI VULNERABLE FLAG IN EVENT OF PROGRAM CHECK */ 85428302 */* P REFERENCE THE ECB TO PAGE-FAULT IT INTO STORAGE */ 85433302 */* S SETLOCK: OBTAIN THE SALLOC LOCK */ 85438302 */* P STORE RCA ADDR., SET SALLOC LOCK FLAG */ 85443302 */* D (NO,XCBSLCRL,YES,XECBINOK) ECB IN REAL STORAGE ? */ 85448302 */*XCBSLCRL: S (,XCOMMON2) SETLOCK: RELEASE THE SALLOC LOCK */ 85453302 */*XECBINOK: P STORE THE ECB IN ITSELF TO PREVENT PAGE STEALING */ 85458302 */* P RESET PSI VULNERABLE FLAG, CLEAR THE CIWA */ 85463302 */* P SAVE THE ECB ADDR. IN THE CIWA, INDICATE BRANCH ENTRY */ 85468302 */* P STORE THE VSL IN THE CIWA */ 85473302 */* D (NO,,YES,RC16XX) VSL NULL OR IN ERROR ? */ 85483302 */* S IEAVFXLD: FIX THE PAGE(S) REQUESTED */ 85487302 */* P RESET CSECT ID IN THE CIWA */ 85491302 */* D (YES,,NO,ERRTEST) PGFIX SUCCEED ? */ 85495302 */* D (NO,,YES,LOAD15X) POST SUPPRESSED ? */ 85499302 */* D (NO,,YES,XOPOSTIT) ECB BEEN WAITED ON YET ? */ 85503302 */* P COMPARE AND SWAP ECB (POST CODE = 0) */ 85507302 */* D (YES,LOAD15X,NO,XOPOSTIT) ECB STORED ? */ 85511302 */*XOPOSTIT: S (,LOAD15X) POST: POST THE ECB, CODE = 0 */ 85515302 */*LOAD15X: P SET UP RETURN CODE FROM THE CIWA */ 85519302 */* S SETLOCK: RELEASE THE SALLOC LOCK */ 85523302 */* D (NO,,YES,XRSMFRR1) LOCK RELEASED OK? */ 85527302 */* S ABEND: ABEND X'C0D' TO RECORD THE ERROR. */ 85531302 */*XRSMFRR1: S SETFRR: REMOVE RSM RECOVERY */ 85535302 */* R RESTORE REGS AND RETURN */ 85539302 */*RC16XX: P (,ERRTEST) SET RETURN CODE = 16 */ 85543302 */*ERRTEST: P ESTABLISH ADDRESSABILITY TO THE MAINLINE */ 85547302 */* R GO TO COMMON EXIT ROUTINE */ 85563302 */*IEAVPSIF: E IOS FAST-FREE */ 85566302 */* P SAVE REGISTERS IN RSM LOCAL SAVE AREA */ 85569302 */* S SETFRR: ESTABLISH RSM RECOVERY */ 85572302 */* P SET CSECT AND ENTRY FLAGS IN RCA */ 85575302 */* S SETLOCK: OBTAIN THE SALLOC LOCK */ 85578302 */* P STORE RCA ADDR., SET SALLOC LOCK FLAG */ 85581302 */* P CLEAR THE CIWA, INDICATE BRANCH ENTRY */ 85584302 */* P STORE THE VSL IN THE CIWA */ 85587302 */* S NEXTVSL: VALIDATE THE FIRST VSL ENTRY */ 85590302 */* D (YES,,NO,RC16GF) IS IT VALID ? */ 85593302 */* D (NO,,YES,RC16GF) VSL NULL OR IN ERROR ? */ 85596302 */* S IEAVFREE: FREE THE PAGE(S) REQUESTED */ 85599302 */* P RESET CSECT ID IN THE CIWA */ 85602302 */* D (YES,,NO,PSIFERR) PGFREE SUCCEED ? */ 85605302 */* P SET UP RETURN CODE FROM THE CIWA */ 85608302 */* S SETLOCK: RELEASE THE SALLOC LOCK */ 85611302 */* D (NO,,YES,FRSMFRR1) LOCK RELEASED OK? */ 85614302 */* S ABEND: ABEND X'C0D' TO RECORD THE ERROR. */ 85617302 */*FRSMFRR1: S SETFRR: REMOVE RSM RECOVERY */ 85620302 */* R RESTORE REGS AND RETURN */ 85623302 */*RC16GF: P (,PSIFERR) SET RETURN CODE = 16 */ 85626302 */*PSIFERR: P ESTABLISH ADDRESSABILITY TO THE MAINLINE */ 85629302 */* R GO TO COMMON EXIT ROUTINE */ 85632302 */* E IEAVPSII */ 85635302 */* P SAVE REGISTERS IN PVT (WSA4) */ 85638302 */* P CLEAR CIWA. SET MODULE ID AND ENTRY POINT FLAG IN RCA */ 85643302 */* P SET UP THE CIWA: STORE TCB ADDR. AND ECB ADDR. */ 85723302 */* P ESTABLISH COMMON ADDRESSABILITY */ 85803302 */* D (NO,RC16,YES,) REGISTER FORM ENTRY ? */ 85883302 */* P COPY OPTION FLAGS, STORE VSL FROM REGS. 1 & 2 */ 85963302 */* P SET ENTRY POINT FLAG IN CIWA, GET RSM HEADER ADDR. */ 86043302 */* D (YES,PSIIPOUT,NO,) PGOUT REQUEST ? */ 86123302 */* D (YES,PSIILOAD,NO,) PGFIX REQUEST ? */ 86203302 */* D (NO,,YES,PSIIFREE) PGFREE REQUEST ? */ 86283302 */* D (NO,,YES,PSIILOAD) PGLOAD REQUEST ? */ 86363302 */* D (NO,RC16,YES,PSIIRLSE) PGRLSE REQUEST ? */ 86443302 */*ROUTER: E ENTRY TO THE ROUTER RTN. */ 86523302 */* D (NO,,YES,RC16) ANY ERRORS INDICATED ? */ 86603302 */* D (NO,,YES,ERRTST7) PGOUT REQUEST ? */ 86683302 */* D (NO,,YES,ERRTST2) PGFIX REQUEST ? */ 86763302 */* D (NO,,YES,ERRTST4) PGFREE REQUEST ? */ 86843302 */* D (NO,,YES,ERRTST3) PGLOAD REQUEST ? */ 86923302 */* D (NO,,YES,ERRTST6) PGRLSE REQUEST ? */ 87003302 */*RC16: P SET THE RETURN CODE (CIWRETC) = 16 */ 87083302 */*EXIT: R GO TO EXIT RTN. */ 87163302 */*ERRTST2: D (NO,ERRTST2A,YES,RC16) PGFREE BIT ON? */ 87203302 */*ERRTST2A: D (NO,PSIILOAD,YES,RC16) PGOUT OR KEEPREAL OPTION ? */ 87243302 */*PSIILOAD: D (YES,,NO,CFXLD) RELEASE OPTION SPECIFIED ? */ 87323302 */* S IEAVRELS:PGRLSE FUNCTION (VIA SUBROUTE) */ 87403302 */* D (YES,,NO,EXIT) PGRLSE SUCCEED ? */ 87483302 */* P (,CFXLD) RESET FIELDS IN CIWA CHANGED BY PAGE RELEASE SET UP FOR 87563302 */*PGLOAD */ 87643302 */*CFXLD: S (,EXIT) IEAVFXLD:PGFIX/PGLOAD FUNCTION (VIA SUBROUTE) */ 87723302 */*ERRTST3: D (YES,RC16,NO,ERRTST2) PGFREE OR LONG-FIX OPTION ? */ 87803302 */*ERRTST4: D (NO,,YES,RC16) PGOUT OR KEEPREAL OPTION ? */ 87883302 */* D (NO,PSIIFREE,YES,RC16) PGLOAD BIT ON? */ 87923302 */*PSIIFREE: S IEAVFREE:PGFREE FUNCTION (VIA SUBROUTE) */ 87963302 */* D (YES,,NO,EXIT) PAGE FREE SUCCEED ? */ 88043302 */* D (YES,,NO,EXIT) RELEASE OPTION SPECIFIED ? */ 88123302 */* P (,PSIIRLSE) RESET CIWA FIELDS CHANGED BY PAGE FREE SET UP FOR 88203302 */*PAGE RELEASE */ 88283302 */*PSIIRLSE: S IEAVRELS:PGRLSE FUNCTION (VIA SUBROUTE) */ 88363302 */* D (NO,EXIT,YES,) RETURN CODE = 4 AND PAGE FREE ? */ 88443302 */* P (,EXIT) ALTER CIWRETC TO REFLECT SUCCESSFUL OPERATION */ 88523302 */*ERRTST6: D (NO,,YES,RC16) ENTRY MADE VIA SVC 113 ? */ 88603302 */* D (YES,RC16,NO,PSIIRLSE) PGOUT, LONG-FIX OR KEEPREAL OPTION ? */ 88683302 */*ERRTST7: D (NO,PSIIPOUT,YES,RC16) LONG-FIX OPTION ? */ 88763302 */*PSIIPOUT: S (,EXIT) IEAVOUT:PGOUT FUNCTION (VIA SUBROUTE) */ 88843302 */*ROUTER: END */ 88923302 */*EXITRTN: CHART */ 89003302 */*EXIT: E ENTRY TO EXIT RTN. */ 89083302 */* D (YES,%AB028,NO,%RC016) RETURN CODE > 16 ? */ 89163302 */*%AB028: P (,LOAD15B) SETUP FOR X'028' ABEND */ 89243302 */*%RC016: D (YES,%AB171,NO,%RC012) RETURN CODE = 16 ? */ 89323302 */*%AB171: P (,LOAD15B) SETUP FOR X'171' ABEND */ 89403302 */*%RC012: D (YES,EXIT00,NO,%CHCKRC8) RETURN CODE = 0 OR 12 ? */ 89483302 */*EXIT00: D (YES,,NO,LOAD15) INPUT ECB GIVEN ? */ 89563302 */* D (NO,,YES,LOAD15) POST TO BE SUPPRESSED ? */ 89643302 */* D (YES,LOAD15,NO,) PAGE FREE REQUEST ? */ 89723302 */* D (NO,,YES,GOPOSTIT) ECB WAITED ON YET ? */ 89803302 */* P (,LOAD15) SIMULATE POST WITH RETURN CODE = 0, USING COMPARE & 89883302 */*SWAP. */ 89963302 */*GOPOSTIT: S POST: POST REQUESTORS ECB WITH POST CODE OF 0 */ 90043302 */*LOAD15: P R15 = RETURN CODE (CIWRETC) */ 90123302 */* D (NO,NOINTL,YES,INTERNAL) ENTERED VIA IEAVPSII ? */ 90203302 */*NOINTL: S SETLOCK:RELEASE SALLOC LOCK */ 90283302 */* D (YES,NRSMFRR1,NO,) LOCK RELEASED O.K. ? */ 90363302 */* S (,NRSMFRR1) ABEND: RSM FRR VIA ABEND X'C0D' */ 90443302 */*NRSMFRR1: S SETFRR:CANCEL RSM RECOVERY COVERAGE */ 90523302 */* P RESTORE CALLERS REGISTERS FROM RSM LOCAL SAVE AREA (NOT DONE 90603302 */*FOR SVC 113) */ 90683302 */*%RETURN: R RETURN TO CALLER */ 90763302 */*INTERNAL: P TURN OFF ENTRY POINT FLAG IN THE RCA */ 90843302 */* P (,%RETURN) RESTORE REGISTERS FROM PVT (WSA4) */ 90923302 */*%CHCKRC8: D (YES,EXIT08,NO,EXIT04) RETURN CODE (CIWRETC) = 8 ? */ 91003302 */*EXIT08: D (YES,%EXIT8,NO,LOAD15A) IS THERE AN ECB ? */ 91043302 */*%EXIT8: P SAVE CIWRETC. SET UP THE CIWA TO PAGE FIX THE INPUT ECB */ 91083302 */* S IEAVFXLD:FIX THE INPUT ECB */ 91163302 */* P RESET MODULE ID IN RCA */ 91243302 */* P RESTORE SAVED RETURN CODE */ 91323302 */* D (YES,,NO,RSMFRR2) PAGE FIX SUCCEED ? */ 91403302 */* P (,LOAD15) TURN ON THE FREE ECB FLAG IN THE ROOT PCB FOR THE 91483302 */*REQUEST */ 91563302 */*EXIT04: D (YES,,NO,NOPOST) WAS AN ECB SUPPLIED ? */ 91643302 */* S (,NOPOST) POST:POST REQUESTORS ECB WITH A POST CODE OF 4 */ 91723302 */*NOPOST: P (,LOAD15B) SET UP TO ABEND WITH CODE = X'171' */ 91803302 */*LOAD15B: P (,LOAD15A) RETURN CODE = CIWRETC */ 91883302 */*LOAD15A: D (NO,,YES,RCAFLAG) ENTERED VIA IEAVPSII ? */ 91963302 */* S SETLOCK:FREE THE SALLOC LOCK */ 92043302 */* D (YES,NRSMFRR3,NO,%RSMFRR3) LOCK RELEASED O.K. ? */ 92123302 */*%RSMFRR3: S (,NRSMFRR3) ABEND: RSM FRR VIA ABEND X'C0D' */ 92203302 */*NRSMFRR3: S SETFRR:CANCEL RSM RECOVERY COVERAGE */ 92283302 */*ABEND: R ABEND WITH PRESET CODE */ 92363302 */*RCAFLAG: P (,ABEND) TURN OFF ENTRY POINT FLAG IN THE RCA */ 92443302 */*RSMFRR2: P SET UP TO ABEND WITH X'028' AFTER X'C0D' CALL */ 92523302 */* S (,LOAD15B) ABEND: RSM FRR VIA ABEND X'C0D' */ 92603302 */*EXIT: END */ 92683302 */*NEXTVSL: CHART */ 92763302 */* E NEXTVSL */ 92843302 */* N THIS SUBROUTINE IS CALLED BY ALL PAGE SERVICES MODULES. */ 92923302 */* N IT MUST ONLY BE CALLED FOR LIST FORM REQUESTS */ 93003302 */* P OBTAIN THE CURRENT ENTRY STORED IN THE CIWA */ 93083302 */*TESTLAST: D (NO,,YES,VSLDONE) IS IT THE LAST ENTRY */ 93163302 */* P SET UP TO TEST THE FIRST HALF OF THE VSL */ 93243302 */*ADDRTST0: D (YES,,NO,ERR4) VSL ON A WORD BOUNDARY ? */ 93323302 */* P STORE ADDRESS OF NEXT VSL IN CIWCUVSL */ 93403302 */*ADDRTEST: P GET THE REAL STORAGE ADDRESS OF THE VSL HALF UNDER TEST 93483302 */**/ 93563302 */* D (YES,,NO,ERR4) IS IT IN STORAGE ? */ 93643302 */* D (NO,,YES,KEYCHECK) IS IT IN THE NUCLEUS ? */ 93723302 */* P GET PFTE FOR REAL FRAME OCCUPIED BY THE VSL HALF UNDER TEST */ 93803302 */* D (NO,LOCCHECK,YES,%FXCHECK) IS THE STORAGE FIXED ? */ 93883302 */*%FXCHECK: D (YES,,NO,KEYCHECK) PAGE FREE REQUEST ? */ 93963302 */* D (YES,,NO,KEYCHECK) FIX COUNT = 1 ? */ 94043302 */* D (YES,ERR4,NO,KEYCHECK) VSL IN PAGE TO BE FREED ? */ 94123302 */*LOCCHECK: D (NO,ERR4,YES,KEYCHECK) IS IT SQA, LSQA OR V=R ? */ 94203302 */*KEYCHECK: D (NO,,YES,SECNDWD) KEY ZERO CALLER ? */ 94283302 */* P GET THE STORAGE PROTECT KEY OF THIS VSL HALF */ 94363302 */* D (YES,,NO,ERR4) SAME AS CALLER'S KEY ? */ 94443302 */*SECNDWD: D (YES,,NO,STORVSL) IS THIS THE FIRST VSL HALF ? */ 94523302 */* D (NO,STORVSL2,YES,GETPAGE) VSL SPAN A PAGE ? */ 94603302 */*STORVSL: P RECOVER THE VSL ADDRESS */ 94683302 */*STORVSL2: P STORE THE NEW VSL ENTRY IN THE CIWA */ 94763302 */* N START ADDR > THAN END ADDR+1 TEST NOT PERFORMED HERE */ 94843302 */* D (NO,,YES,GETADDR) IS THIS A CONTINUATION ENTRY ? */ 94923302 */* D (NO,,YES,TESTLAST) IS THIS A NULL ENTRY ? */ 95003302 */* R RETURN TO THE CALLER. RETURN CODE = 0 */ 95083302 */*VSLDONE: R RETURN TO THE CALLER. RETURN CODE = 8 */ 95163302 */*ERR4: R RETURN TO THE CALLER. RETURN CODE = 4 */ 95243302 */*GETADDR: P (,ADDRTST0) RESET CURRENT VSL POINTER CIWCUVSL = 95323302 */*1ST WORD OF CURRENT VSL ENTRY */ 95403302 */*GETPAGE: P (,ADDRTEST) SET UP ADDR OF SECOND WORD OF VSL */ 95483302 */*NEXTVSL: END */ 95563302 END 95643302