TITLE 'GETPART/FREEPART ROUTINE FOR OS/VS2 REL 3.7 WITH SU7' 00020040 * /* START OF SPECIFICATIONS **** 01158302 * 01160302 *01* MODULE-NAME = IEAVPRT0 01160702 * 01161702 *02* CSECT-NAME = IEAVPRT0 01162102 * 01162302 *01* DESCRIPTIVE-NAME = GETPART/FREEPART ROUTINE 01162402 * 01163202 *01* COPYRIGHT = NONE 01163602 * 01164002 *01* STATUS = OS/VS2 RELEASE 3.7 WITH SU7 01164240 * PTF LEVEL UZ07644 01164540 * 01165602 *01* FUNCTION = ROUTINE TO GET OR FREE A REGION 01166002 * 01166502 *02* OPERATION = FOR A GETPART REQUEST, NECESSARY CONTROL BLOCKS 01166602 * DEFINING THE EXISTENCE OF A USER REGION WITHIN THE PRIVATE 01167002 * AREA ARE CREATED AND INITIALIZED AND CONTROL IS RETURNED 01167202 * TO THE INITIATOR. FOR FREEPART REQUESTS, REGION SPACE 01167402 * AND CONTROL BLOCKS ARE FREED, AND ANY WAITING REQUESTS 01167602 * WHICH MAY NOW BE HONORED ARE POST'ED. RECOVERY CONSISTS 01167802 * OF ISOLATING THE ERROR, PROVIDING AS MUCH STORAGE 01168002 * CLEAN-UP AS POSSIBLE, AND RETRYING THE REQUEST OR 01168202 * TERMINATING THE REQUESTOR. 01168402 * 01169102 *01* NOTES = NONE 01169402 * 01171002 *02* DEPENDENCIES = LOCAL LOCK MUST BE HELD UPON ENTRY; SALLOC MUST 01171402 * BE AVAILABLE 01171802 * 01172602 *03* CHARACTER-CODE-DEPENDENCIES = EBCDIC IS USED, BUT THERE 01173002 * APPEAR TO BE NO PROBLEMS WHICH COULD NOT BE SOLVED WITH A 01173402 * REASSEMBLY 01173802 * 01174302 *02* RESTRICTIONS = NONE 01174702 * 01175102 *02* REGISTER-CONVENTIONS = REFER TO END OF MODULE IEAVPRT0 FOR 01175702 * REGISTER EQUATES 01176102 * 01176702 *02* PATCH-LABEL = USE NUCLEUS PATCH AREA 01176802 * 01177102 *01* MODULE-TYPE = PROCEDURE 01178902 * 01179702 *02* PROCESSOR = ASSEMBLER 01180103 * 01181802 *02* MODULE-SIZE = 4300 BYTES 01182202 * 01182502 *02* ATTRIBUTES = NUCLEUS,ZERO PROTECT KEY,REENTERABLE,REFRESHABLE, 01182902 * SUPERVISOR MODE 01183702 * 01184302 *01* ENTRY-POINT = IEAVPRT0 (SEE FOLLOWING COMMENTARY) 01184702 * 01185602 *01* ENTRY-POINT = IEALIMIT 01188902 * 01190902 *02* PURPOSE = TO ALLOW THE USER TO INCLUDE A USER EXIT ROUTINE TO 01199102 * LIMIT AS REQUIRED THE SIZE OF ANY OR ALL REGION REQUESTS 01201102 * THE IBM SUPPLIED ROUTINE ADDS 64K TO THE REGION REQUESTED 01203103 * AND SETS THIS AS A LIMIT ON ALL GETMAINS FROM SUBPOOL 01206103 * 0-127, 251, AND 252. 01209703 * 01209903 *02* LINKAGE = BALR FROM IEAVPRT0 01210102 * 01210902 *02* INPUT = REGISTER 1: NUMBER OF BYTES REQUESTED 01217902 * REGISTER 13: ADDRESS OF STANDARD SAVE AREA 01224902 * REGISTER 14: RETURN ADDRESS 01231902 * REGISTER 15: ENTRY POINT ADDRESS 01238902 * 01245902 *02* OUTPUT = REGISTER 1 CONTAINS THE NUMBER OF BYTES TO WHICH THE 01252902 * REGION REQUESTED IS TO BE LIMITED, OR ZERO IF NO LIMIT IS 01259902 * PROVIDED. 01266902 * 01273902 *01* EXIT-NORMAL = USER EXIT RETURNS TO IEAVPRT0 01280902 * 01287902 *02* CONDITIONS = BR 14 BACK TO IEAVPRT0, WITH LOCAL LOCK STILL 01294902 * HELD 01301902 * 01308902 *02* OUTPUT = REGISTER 1 CONTAINS THE LIMIT SIZE FOR THE REQUEST, 01315902 * OR ZERO IF NO LIMIT 01322902 * 01329902 *02* RETURN-CODES = NONE 01336902 * 01343902 *01* EXIT-ERROR = NONE 01350902 * 01357902 *01* EXTERNAL-REFERENCES = SEE FOLLOWING COMMENTARY 01364902 * 01371902 *02* ROUTINES = SAME AS ABOVE 01378902 * 01385902 *02* DATA-AREAS = SAME AS ABOVE 01392902 * 01399902 *02* CONTROL-BLOCKS = SEE FOLLOWING COMMENTARY 01406902 * 01413902 *01* TABLES = SEE FOLLOWING COMMENTARY 01420902 * 01441902 *01* MACROS = GETMAIN, FREEMAIN, SETLOCK, SETFRR, CALLRTM 01448902 * 01455902 *02* SERIALIZATION = THE LOCAL LOCK IS HELD AT ENTRY TO IEAVPRT0; 01462902 * THE SALLOC LOCK IS OBTAINED AND RELEASED BY IEAVPRT0. 01469902 * 01476902 *01* CHANGE-ACTIVITY = 01483902 * PTMS: VS00464,VS00845,VS00850,VS00856,VS00857, 01490902 * VS00885,VS01903,VS01960,VS03454,VS05423, 01500902 * VS07262, VS07625 01508902 * 01517602 * APARS = OZ02596 463585 01617603 * OZ05651 156300, 180100, 186950, 187220, 187240, 01627640 * 187400, 187900-188100, 191260-191500, 01637640 * 194100, 197700, 197800 01667640 * OZ05954 412234, 412245-412249, 412254 01677640 * OZ08170 312900, 313400, 371200-372500, 01697640 * 372800-373200 01702640 * OZ10088 187410, 187930, 187960, 197650 01707640 * OZ15799 290600, 290700 01712640 * 01717603 *01* MESSAGES = NONE 01817602 * 02117602 *01* ABEND-CODES = 082,A0A 02417602 * 02717602 **** END OF SPECIFICATIONS ***/ 03017602 EJECT 03570001 *********************************************************************** 03640001 * STATUS * 03710001 * CHANGE LEVEL 000 * 03780001 * FUNCTION * 03850001 * THIS SUBCOMPONENT OF VIRTUAL STORAGE MANAGEMENT PERFORMS THE * 03920001 * FUNCTION OF ALLOCATING AND FREEING REGION SPACE AT THE REQUEST OF* 03990001 * THE SYSTEM. THE FOLLOWING TYPES OF GETPART ARE SUPPORTED. 1) REG-* 04060001 * ISTER FORM GETMAIN REQUEST(SVC 10,120). 2) ECB MODE GETPART REQST* 04130002 * (SVC 4) WHICH CAN BE A SINGLE REGION LIST REQUEST OR A SPLIT RE- * 04200001 * GION LIST REQUEST OF TWO ELEMENTS. THE ONE TYPE OF FREEPART WHICH* 04270001 * IS SUPPORTED IS REGISTER FORM FREEMAIN (SVC 10,120). * 04340002 * ENTRY POINTS * 04410001 * IEAVPRT0 * 04480001 * THIS IS THE MAIN ENTRY POINT. A REQUEST TO OBTAIN SPACE FOR A RE-* 04550001 * GION IS INITIATED BY THE SYSTEM VIA A GETMAIN(SVC 4 ) FOR SPACE * 04620002 * FROM SUBPOOL 242(V=R REGION) OR GETMAIN(SVC4,10,120) FOR * 04740002 * SUBPOOL 247(V=V REGION). * 04750002 * FREEPART IS INVOKED THROUGH THE ISSUANCE OF A SVC 10 OR 120 FOR * 04760002 * SUBPOOL 242 OR 247 TO REQUEST THE FREEING OF A V=R OR V=V REGION * 04830001 * RESPECTIVELY. * 04900002 * INPUT * 05040001 * IF THE REQUEST IS FROM GETMAIN AND IS AN SVC 4, REGISTER 1 CON- * 05110001 * TAINS THE ADDRESS OF THE GETMAIN PARAMETER LIST. THE FORMAT OF * 05180003 * THE FIRST 2 1/2 WORDS OF THE GETPART PARAMETER LIST IS THE * 05200003 * SAME AS THE GETMAIN SVC 4 PARAMETER LIST. IF THE REQUEST 05220003 * IS FROM GETMAIN AND IS AN SVC 10, REGISTER 0 CONTAINS REGION SIZE* 05250002 * AND REGISTER 1 IS ZERO SIGNIFYING A GETPART REQUEST. REGISTER 4 * 05460002 * CONTAINS LDA ADDRESS AND REGISTER 5 CONTAINS SPID IN LOW BYTE.IF * 05510002 * REQUEST IS FROM FREEMAIN, REGISTER 1 IS POSITIVE INDICATING A * 05530002 * FREEPART REQUEST. REGISTER 4 MUST CONTAIN THE ADDRESS OF THE LDA,* 05670002 * REGISTER 5 CONTAINS THE SUBPOOL ID IN THE LOW-ORDER BYTE. REGS 8 * 05740002 * AND 13 ARE THE GETMAIN BASE REGISTERS. * 05790002 * OUTPUT * 05950001 * IF THE EXIT IS NORMAL, REGISTER 15 CONTAINS ONE OF THE FOLLOWING * 06020001 * RETURN CODES. 0-THE REGION WAS SUCCESSFULLY ALLOCATED. 4-SUFFI- * 06090001 * CIENT VIRTUAL SPACE WAS NOT AVAILABLE TO BACK THE V=R REQUEST. * 06160002 * 8-INVALID REQUEST. 12-A SUFFICIENT NUMBER OF CONTIGUOUS REAL * 06230002 * PAGES ARE NOT AVAILABLE TO IMMEDIATLEY SATISFY THE V=R REGION * 06300002 * REQUEST. 16-THE AVAILABLE ALLOCATABLE V=R AREA HAS BEEN * 06350002 * DECREASED SUCH THAT THE V=R REQUEST CANNOT BE HONORED. * 06360002 * 20-PRIVATE AREA IS FRAGMENTED WITH SYSTEM SPACE SO THAT * 06362002 * THE REGION REQUEST CANNOT BE HONORED.24-V=R REGION SIZE REQUESTED* 06364002 * IS GREATER THAN THE INSTALLATION IMPOSED LIMIT FROM IEALIMIT * 06464002 * ROUTINE. * 06564002 * EXTERNAL REFERENCES * 06720001 * THE FOLLOWING INTERFACES ARE DEFINED FOR GETPART- * 06790001 * RSM'S ALLOCATE V=R REGION - IEAVEQR * 07350002 * TO ALLOCATE AND FIX CONTIGUOUS PAGES IN REAL MEMORY WHICH DES- * 07420001 * CRIBE THE VIRTUAL EXTENTS OF THE REGION ON A 1:1 VIRTUAL TO REAL * 07490001 * BASIS. * 07560001 * GETMAING * 07630002 * TO ALLOCATE SPACE IN LSQA FOR VSM CONTROL BLOCKS. * 07700001 * CBBRANCH * 07780003 * TO ALLOCATE/FREE CELLS IN LSQA/SQA FOR VSM INTERNAL CONTROL * 07870003 * BLOCKS. * 07960003 * XMPOST ROUTINE * 08050002 * TO POST EACH ECB BEING WAITED UPON BY AN INITIATOR DUE TO A 'WAIT* 08120002 * FOR REGION' CONDITION. * 08170002 * * 08220002 * THE FOLLOWING INTERFACES ARE DEFINED FOR FREEPART: * 08270002 * * 08320002 * MRELEASF * 08680002 * TO RETURN THE REGION SPACE TO THE QUEUE OF FREE BLOCKS FOR DYNAM-* 08750001 * IC VIRTUAL SPACE. * 08820001 * RMBRANCH * 09380001 * TO FREE SPACE IN LSQA ALLOCATED TO VSM CONTROL BLOCKS. * 09450001 * RSM'S FREE V=R REGION - IEAVEQRF * 09500002 * TO FREE PAGES THAT ARE ALLOCATED TO A V=R REGION. * 09550002 * XMPOST ROUTINE * 09730002 * TO POST EACH ECB BEING WAITED UPON BY AN INITIATOR DUE TO A 'WAIT* 09800002 * FOR REGION' CONDITION. * 09820002 * RTM 09854002 * TO RTM VIA CALLRTM FOR A MEMORY TERMINATION WHEN A SITUATION IS * 09858002 * DETECTED WHICH MIGHT CAUSE FREEPART TO PUT DEFERRED RELEASE PAGES* 09862002 * BACK INTO A FBQE. * 09866002 * IEALIMIT USER EXIT ROUTINE * 09870002 * TO ALLOW THE USER TO LIMIT IF DESIRED THE SIZE OF ANY OR ALL * 09890002 * REGION REQUESTS 09910002 * THE FOLLOWING CONTROL BLOCKS ARE REFERENCED: CVT, GDA, LDA, DPQE,* 09940002 * PQE, FBQE, TCT, VRWPQEL, PVT, AND TCB. * 10010002 * EXITS,NORMAL * 10080001 * EITHER TO TYPE 1 SVC EXIT OR TO BRANCH ENTRY CALLER VIA A BR 14 * 10150002 * EXITS,ERROR * 10220001 * NONE * 10290002 * TABLES AND WORK AREAS * 10500001 * THIS ROUTINE REFERENCES THE GETPART WORK TABLE. THE FORMAT OF * 10570001 * THIS TABLE IS AS FOLLOWS. * 10640001 * ***************************************** * 10710001 * * * * 10780001 * 0 * REGION SIZE POINTER * * 10850001 * * * * 10920001 * ***************************************** * 10990001 * * * * 11060001 * 4 * REGION ADDRESS POINTER * * 11130001 * * * * 11200001 * ***************************************** * 11270001 * * REQUEST * SUBPOOL * * * 11340001 * 8 * * * RESERVED * * 11410001 * * CODE * ID * * * 11480001 * ***************************************** * 11550001 * * * * * 11620001 * 12 * H0 CODE *REGION ADDR REQUEST (OR 0) * * 11690001 * * * * * 11760001 * ***************************************** * 11830001 * * * * * 11900001 * 16 * 0 * 0 * * 11970002 * * * * * 12040001 * ***************************************** * 12110001 * * END OF * * * 12180001 * 20 *LIST CODE*H0 REGION SIZE REQUEST * * 12250001 * * OR 0 * * * 12320001 * ***************************************** * 12390001 * * END OF * * * 12460001 * 24 * LIST *H1 REGION SIZE REQUEST * * 12530002 * * CODE * * * 12600001 * ***************************************** * 12670001 * the cfapWKAR WORKAREA IN THE LDA IS USED TO PROVIDE REENTRANCY. * 12720002 * see workaREA DSECT FOR A MAPPING OF THIS AREA. * 12730002 * ATTRIBUTES * 12740001 * REENTRANT, REFRESHABLE * 12810002 * CHARACTER CODE DEPENDENCY * 12880001 * EBCDIC IS USED, BUT THERE APPEAR TO BE NO PROBLEMS WHICH COULD * 12950001 * NOT BE SOLVED WITH A REASSEMBLY. * 13020001 * NOTES * 13090001 * NONE * 13160001 *********************************************************************** 13230002 EJECT 13300002 */*IEAVPRT0: CHART (AMODE)*/ 13350002 */* HEADER 13360002 */*IEAVPRT0 MAY, 1972 13362002 */* PAGE # */ 13364002 */*START: E BRANCH ENTRY FROM GETMAIN*/ 13366002 */* P SAVE REGS, 13368002 */* SAVE GM BASE*/ 13368402 */* P SET FRR */ 13368502 */*P INITIALIZE FRR PARM AREA */ 13368602 */* P INIT GP INTERNAL SWITCHES 13368802 */* (GPSW=0)*/ 13369202 */* D (NO,,YES,%VR) V=R REQUEST?*/ 13369602 */* P GET @ AS PQE FROM LDA*/ 13369702 */*%SVCBYT: P GET @ OF SVCBYT IN IEAVGM00*/ 13369802 */* D (NO,,YES,SVC4) SVC 4?*/ 13369902 */* D (NO,REGPART,YES,FREEPART) FREEPART? 13373202 */* (REG1 > 0)*/ 13375202 */*%VR: P GET @ V=R PQE FROM GDA 13375602 */* (VRPQEP)*/ 13376002 */* P (,%SVCBYT) SET V=R REQUEST FLAG 13376402 */* X'02' IN GPSW*/ 13376502 */*FREEPART: D (YES,,NO,%REG1) IS V=R REGION FREEPARTING*/ 13376602 */* P OBTAIN SALLOC LOCK*/ 13387402 */* D (NO,,YES,%DEQW) IS ITS EL ON VRWAITQ?*/ 13397402 */* D (YES,,NO,%REG2) IS ITS EL ON VRPOSTQ?*/ 13397802 */*%DEQ: P DEQUEUE EL FROM Q AND FREE IT*/ 13398202 */*%REG2: P RELEASE SALLOC LOCK*/ 13398302 */* D (NO,,YES,6F4) TCB HAS A REGION?*/ 13401902 */* P (,8A2) RC=0 IN REG 15*/ 13403902 */*%DEQW: P DEQUEUE EL FROM Q AND FREE IT*/ 13404302 */* D (NO,,YES,%REG2) ANY MORE SPEC REQUESTS ON Q? */ 13404702 */* P (,%REG2) TURN OFF WAITQUE BIT */ 13405102 */*%REG1: D (NO,,YES,6F4) TCB HAS A REGION*/ 13405502 */* P (,RETURN) RC=0 IN REG 15*/ 13409102 */*6F4: P ACCESS TCBMSS FIELD*/ 13411102 */*%G4: D (YES,,NO,A27) ANY MORE SPQE'S REMAIN?*/ 13411502 */* P GET @ OF DQE FROM SPQE (SPDQEAD)*/ 13411902 */* D (NO,,YES,%X01) SPQEAD=0 ?*/ 13412703 */* P SUBPOOL FM TO FREE REMAINING SPACE*/ 13413703 */*%X01: P FREEMAIN SPQE (CELL RETURNED TO LSQA)*/ 13415203 */* P (,%G4) GET ADDRESS OF NEXT SPQE*/ 13424103 */*A27: D (YES,,NO,%H27) V=R REGION?*/ 13434902 */* P SET UP INTERFACE TO FREE REGION SPACE*/ 13435302 */* P OBTAIN SALLOC LOCK*/ 13435702 */* S MRELEASE:RETURN REG SPACE TO FREE V=R AREA*/ 13439502 */* P SET UP PARM LIST TO FREE V=R REGION*/ 13441502 */* S IEAVEQRR:FREE REAL PAGES*/ 13441902 */* P RELEASE SALLOC LOCK */ 13442302 */* P ACCESS A.S. PQE PTR */ 13442702 */* S MRELEASE: ADD REGION SPACE TO FREE A.S. SPACE*/ 13443102 */* P RESTORE V=R PQE PTR */ 13443202 */* P FREEMAIN FBQE (CELL RETURNED TO LSQA)*/ 13444203 */* S RMBRANCH: FREE PQE,DPQE FROM LSQA*/ 13444603 */*%H27: P SET TCBPQE=0 IN TCB*/ 13447102 */* P SET TCBRV=0*/ 13449102 */* P SET VVREGSZ IN LDA = 0*/ 13449502 */* D (NO,,YES,8A2) V=R REQUEST FLAG SET?*/ 13449902 */* D (NO,,YES,%B5) IS THIS SYSTEM REGION? */ 13450103 */* D (YES,,NO,MEMTERM) CURRGNTP = PQEREGN? */ 13450703 */* P ENSURE PQEREGN = P.A. START @ + SYS. REG. SIZE*/ 13450803 */* P ENSURE PQE SIZE = P.A. SIZE - SYS. REG. SIZE*/ 13451803 */* P FIRST FBQE @ - P.A.START = DIFFERENCE*/ 13452803 */* P FIRST FBQE SIZE = SIZE + DIFFERENCE - SYS. REG. SIZE*/ 13454703 */* P FIRST FBQE ADDRESS = P.A.START + SYS. REG. SIZE*/ 13456703 */* P READJUST CURRGNTP IN LDA*/ 13457903 */*%B5: P (,RETURN) PLACE RC=0 IN REG 15*/ 13458303 */*MEMTERM: P (,%B5) MEMTERM CURRENT ASID - A0A */ 13459303 */*8A2: P OBTAIN SALLOC LOCK*/ 13460303 */* D (YES,,NO,%B38) IS WAITQUE BIT ON?*/ 13461303 */* P SET POSTCHK FLAG*/ 13462303 */*%D28: N (,%J210) BRANCH TO SEE IF FIRST OR NEXT REQUEST CAN BE 13463303 */*HONORED*/ 13464303 */*%B38: D (YES,,NO,%C38) ANY ELS ON VRWAITQ?*/ 13465303 */* P RETRIEVE FIRST NON-SPEC REQUEST*/ 13468702 */* P BUILD TABLE OF LENGTHS AVAILABLE IN V=R FBQE'S*/ 13478702 */*%D48: D (YES,,NO,%J48) IS REQUESTED SIZE <=_ ANY FBQE SIZE?*/ 13479102 */* P SUBTRACT REQUESTED SIZE FROM FBQE SIZE IN TABLE*/ 13482502 */* P DEQUEUE EL FROM VRWAITQ*/ 13484502 */* S XMPOST:POST THE REQUESTOR*/ 13484902 */* P FREE THE DEQUEUED VRWPQEL*/ 13485302 */*%J48: D (YES,%D48,NO,) ANY MORE ELS ON Q?*/ 13485702 */* P READJUST CURRGNTP IN LDA*/ 13485802 */*%C38: P (,RETURN) RELEASE SALLOC LOCK*/ 13489302 */*%F28: D (YES,,NO,%G28) IS RETURN SUCCESSFUL?*/ 13491702 */* P DEQUEUE VRWPQEL FROM VRWAITQ*/ 13492702 */* D (NO,,YES,%J38) ANY MORE SPEC REQUESTS ON Q?*/ 13493702 */* P TURN OFF WAITQUE BIT*/ 13496102 */*%J38: S XMPOST:POST THE REQUESTOR*/ 13498502 */* P ENQUEUE VRWPQEL ON VRPOSTQ*/ 13498902 */* P (,RETURN) RELEASE SALLOC LOCK*/ 13499902 */*%G28: D (YES,,NO,%C38) IS NEXT EL ON THE Q A SPEC. REQUEST?*/ 13500902 */* D (YES,,NO,%D28) DOES ITS @ RANGE OVERLAP 1ST REQUEST'S RANGE*/ 13502902 */* P (,%G28) IF SO, DO NOT HONOR IT*/ 13504902 */*SVC4: P SET SVC 4 GP FLAG (X'01' IN GPSW)*/ 13505702 */* P GET FIRST LIST AND ADDRESS ENTRY*/ 13506702 */* D (YES,,NO,%D34) LAST ENTRY?*/ 13507702 */* D (YES,,NO,%G24) SPECIFIC REQUEST?*/ 13508702 */* P SET SPEC. REQUEST FLAG 13509702 */* X'08'IN GPSW*/ 13510702 */*%G24: D (NO,,YES,%G34) IS REQUEST V=V?*/ 13511702 */* D (NO,%C22,YES,) IS V=R DEFAULT INDICATED?*/ 13515402 */* P (,%C22) GET DEFAULT SIZE FROM GDA AND SET LENGTH=SIZE*/ 13517402 */*%G34: D (NO,%C22,YES,REGLIM) IS V=V DEFAULT INDICATED?*/ 13519402 */*%D34: D (YES,%D44,NO,) SPECIFIC REQUEST?*/ 13520402 */* P RETRIEVE 2ND LENGTH LIST EL*/ 13521402 */* D (YES,,NO,%H54) IS EITHER LENGTH = 0?*/ 13523402 */* D (NO,,YES,REGLIM) IS REQUEST V=V?*/ 13523802 */* P (,%C22) ADD NON-ZERO EL TO V=R DEFAULT SIZE*/ 13524802 */*%H54: P (,%C22) ADD THE 2 LENGTHS*/ 13525802 */*%D44: P INVALID GETPART REQUEST*/ 13526802 */* P (,RETURN) RC=8 IN REG 15*/ 13527802 */*REGPART: P GET REQUEST LENGTH FROM GPR0*/ 13528802 */* D (NO,,YES,REGLIM) IS V=V DEFAULT INDICATED?*/ 13529802 */*%C22: P SET ROUNDING VALUE FOR PAGE MULTIPLES*/ 13530802 */* P ROUND REQUEST UPWARDS*/ 13536302 */* D (NO,,YES,%E32) REG SIZE > PQE SIZE?*/ 13546302 */* D (NO,REGLIMIT,YES,%G32) IS REQUEST V=V?*/ 13548302 */*REGLIM: P ZERO SIZE REG IF DEFAULT*/ 13548402 */*REGLIMIT: P REG 1 = SIZE OF REQUEST*/ 13549602 */* S IEALIMIT:USER EXIT ROUTINE*/ 13551602 */* P STORE REGION LIMIT IN LDA*/ 13551702 */* D (YES,,NO,%D23) V=R REQUEST?*/ 13552002 */* D (YES,,NO,%VRQCHK) IS A LIMIT INDICATED?*/ 13552302 */* D (YES,,NO,%VRQCHK) IS REQUEST > LIMIT?*/ 13552602 */* P (,RETURN) R. C. = 24*/ 13552902 */*%VRQCHK: D (YES,,NO,%H32) IS WAITQUE BIT ON?*/ 13553202 */* D (YES,,NO,ELBUILD) IS THIS A SPECIFIC REQUEST?*/ 13553502 */* P OBTAIN SALLOC LOCK */ 13554002 */* D (NO,,YES,%A33) IS ITS EL ON VRPOSTQ?*/ 13554602 */* P COMPARE THIS REQUESTED @ RANGE WITH 1ST ON VRWAITQ*/ 13555202 */* D (NO,,YES,%C33) IS THERE ANY OVERLAP?*/ 13556002 */*%D23: D (NO,,YES,GPSPEC) IS SPEC. REQUEST FLAG SET?*/ 13557002 */* D (NO,,YES,VRREQ) IS V=R FLAG SET?*/ 13558002 */*LOOP: P GET 1ST OR NEXT A.S. FBQE*/ 13558402 */* D (NO,,YES,%G13) FBQE PTR = PQE @?*/ 13559102 */* D (YES,%J23,NO,LOOP) REG SIZE <= FBQE SIZE?*/ 13559902 */*%J23: P SET TCBPQE TO POINT TO A.S.DPQE - 8*/ 13560802 */* P PUT START @ IN CURRGNTP IN LDA*/ 13561202 */* P PUT START @ IN TCT*/ 13561702 */* P INDICATE V=V REGION (SET TCBRV AND BIT 7 OF 13562802 */* PQE'S VMMFLGS =0*/ 13563802 */* P (,RETURN) RC = 0 IN REG 15*/ 13564802 */*%E32: P INVALID REQUEST*/ 13565802 */* P RC = 8 IN REG 15*/ 13566802 */*RETURN: D (NO,,YES,%G52) BRANCH ENTRY TO FREEPART?*/ 13567202 */* P RESTORE REGS FROM GP/FP SAVE AREA*/ 13568102 */* R RETURN VIA BR14*/ 13569002 */*%G52: P TURN OFF BRANCH ENTRY FLAG*/ 13569902 */* P RESTORE REGS FROM OBFRSAVE IN IEAVGM00*/ 13570802 */* R RETURN TO USER VIA BR14*/ 13572802 */*%G32: P (,REGLIMIT) STORE ROUNDED V=V REQUEST SIZE IN LDA */ 13573202 */*%H32: P OBTAIN SALLOCK LOCK*/ 13573602 */* D (YES,,NO,%D29) IS THIS A SPECIFIC REQUEST?*/ 13574002 */* D (YES,%A33,NO,GPSPEC) IS ITS EL ON VRPOSTQ?*/ 13574102 */*%A33: P DEQUEUE EL FROM VRPOSTQ*/ 13574202 */* P FREE THE ELEMENT*/ 13574302 */* P (,GPSPEC) SET FLAG IN GPSW TO INDICATE "POSTED-SPEC"*/ 13577902 */*%G13: P (,RETURN) RC = 20 IN REG 15*/ 13579902 */*%C33: P RELEASE SALLOC LOCK*/ 13580302 */* P ACCESS V=R AREA START @ (PQEREGN) */ 13580702 */* D (NO,,YES,%E32) IS REG START < DYNAMIC AREA START?*/ 13581102 */* P CALCULATE V=R AREA END @*/ 13581502 */* D (NO,,YES,%E32) IS REG START >=_ DYNAMIC AREA END?*/ 13581602 */* P CALCULATE REGION END ADDRESS*/ 13581702 */* D (NO,ELBUILD,YES,%E32) REG END > DYNAMIC AREA END?*/ 13582502 */*GPSPEC: P ACCESS DYNAMIC AREA START @ (PQEREGN)*/ 13582902 */* D (NO,,YES,%E32) REG START < DYNAMIC AREA START?*/ 13583302 */* P CALCULATE DYNAMIC AREA END @*/ 13583702 */* D (NO,,YES,%E32) REG START >= DYNAMIC AREA END?*/ 13584102 */* P CALCULATE REG END @*/ 13584202 */* D (NO,,YES,%E32) IS REG END > DYNAMIC AREA END?*/ 13587602 */*%J210: P GET @ OF FIRST OR NEXT FBQE*/ 13589602 */* D (NO,,YES,%C510) ADDRESS NEXT= ADDRESS PQE?*/ 13590002 */* D (NO,,YES,%A49) FREE AREA START > REG START?*/ 13590402 */* D (NO,,YES,%J210) FREE AREA END < REG START?*/ 13590802 */* D (NO,,YES,%C510) REG END > FREE AREA END?*/ 13590902 */* D (NO,,YES,%D510) IS POSTCHK FLAG ON?*/ 13591002 */* D (YES,,NO,%H40) IS THIS A V=R SPEC. REQUEST?*/ 13591502 */* D (YES,,NO,%B49) IS "ALLOCATE PASS" FLAG ON?*/ 13591902 */* P TURN OFF "ALLOCATE PASS" FLAG*/ 13592302 */*%H40: P CALCULATE REG START - FREE AREA START*/ 13592402 */* D (NO,,YES,%J510) IS DIFFERENCE = 0?*/ 13592502 */* D (NO,,YES,%A412) IS THIS A V=V REQUEST?*/ 13593402 */* P STORE DIFFERENCE IN SIZE FIELD OF FBQE*/ 13593802 */*%B211: P CALCULATE FREE AREA END @ - REG END @*/ 13594202 */* D (YES,,NO,%C311) FREE AREA END = REG END?*/ 13594602 */* D (NO,%H311,YES,) REG START = FREE AREA START?*/ 13595002 */* P REMOVE THE FBQE FROM THE CHAIN*/ 13595102 */* P FREEMAIN FBQE (CELL RETURNED TO LSQA)*/ 13596203 */*%H311: P RELEASE SALLOC LOCK*/ 13598302 */* D (NO,%J23,YES,) IS THIS A V=R REGION?*/ 13600302 */* S GETMAINB:GET LSQA SPACE FOR A PQE*/ 13600703 */* S GETMAINB:GET SPACE IN LSQA FOR DPQE*/ 13601102 */* P SET TCBPQE = ADDRESS DPQE - 8*/ 13601202 */* P INITIALIZE FIELDS IN PQE*/ 13602103 */* P INITIALIZE DPQE TO POINT TO PQE*/ 13602502 */* P GETMAIN CELL FROM LSQA FOR FBQE*/ 13602703 */* P INITIALIZE FIELDS IN PQE AND FBQE*/ 13602903 */*%G212: P INDICATE V=R REGION (TCBRV AND BIT 7 OF PQE VMMFLGS = 1*/ 13606303 */* P REGION START ADDRESS IN TCT*/ 13606403 */* P REGION START @ IN CURRGNTP IN LDA*/ 13607403 */* P RETURN CODE IN REG 15*/ 13608403 */* D (YES,,NO,RETURN) IS "POSTED-SPEC" FLAG ON*/ 13609403 */* P (,8A2) TURN IT OFF*/ 13610403 */*%C510: P (,%A49) RC = 20 IN REG 15*/ 13611403 */*%D510: P TURN POSTCHK FLAG OFF*/ 13614203 */* P UNLOCK V=R QUEUE */ 13616203 */* P (,%F28) RC = 0 IN REG 0*/ 13617203 */*ELBUILD: P GETMAIN AN ELEMENT FOR VRWPQEL*/ 13618203 */* P PLACE ASID IN WPELASID*/ 13620603 */* P TCB @ FROM LDA IN WPTCBADD*/ 13621003 */* P ECB @ FROM JSCB IN WPECBADD*/ 13622003 */* D (NO,,YES,%G35) SPEC. REQUEST?*/ 13623003 */* P ROUNDED SIZE IN WPELSIZE*/ 13624003 */* P ZERO IN WPSPADDR*/ 13625003 */* P OBTAIN SALLOC LOCK*/ 13626003 */* P ENQ NON-SPEC REQUEST AT END OF Q*/ 13627003 */*%K35: P RELEASE SALLOC LOCK*/ 13628003 */* P (,RETURN) RC=4 IN REG 15*/ 13631403 */*%G35: P REGION END @ IN WPELSIZE*/ 13632403 */* P REG. START @ IN WPSPADDR*/ 13633403 */* P OBTAIN SALLOC LOCK*/ 13634403 */* D (NO,,YES,%J45) IS WAITQUE BIT ON?*/ 13635403 */* P TURN IT ON*/ 13636403 */*%J45: P (,%K35) ENQ. REQUEST EL AFTER LAST SPEC.*/ 13637403 */*%A412: P FBQE SIZE = SIZE - DIFFERENCE*/ 13641402 */* P FREE AREA START = REGION START*/ 13641502 */* P PQEREGN = REG. START*/ 13641802 */* P (,%J23) PQESIZE = SIZE - DIFFERENCE*/ 13642202 */*%J510: P REG START = FREE AREA START*/ 13642302 */* P SET REG START = FREE AREA START FLAG 13644602 */* X'20' IN GPSW+1*/ 13646602 */* D (YES,%J23,NO,%B211) IS THIS A V=V REQUEST?*/ 13648602 */*%C311: N REG END < FREE AREA END*/ 13649002 */* D (NO,,YES,%D411) REG START = FREE AREA START?*/ 13649102 */* P ENSURE STADDRE FLAG IS OFF*/ 13649202 */* P GETMAIN CELL FROM LSQA/SQA FOR FBQE*/ 13651503 */* P INSERT THE FBQE IN THE CHAIN*/ 13652902 */* P (,%H311) INITIALIZE SIZE AND FBQAREA FIELDS*/ 13653302 */*%D411: P (,%H311) ADJUST SIZE AND FBQAREA FIELDS IN FBQE*/ 13653702 */*VRREQ: P ACCESS SYSTEM V=R PQE*/ 13654102 */*%D29: P GET @ OF FIRST OR NEXT FBQE*/ 13654202 */* D (NO,,YES,%A49) FBQE @ = PQE @?*/ 13654302 */* D (YES,,NO,%D29) ENOUGH SPACE IN FBQE?*/ 13654402 */*%9G2: S IEAVEQR:ALLOCATE REAL REGION*/ 13656102 */* P RETURN CODE IN RCSAVE*/ 13658102 */* D (NO,,YES,%J39) RC = 16?*/ 13658502 */* D (NO,,YES,%K39) RC = 8?*/ 13658902 */* D (YES,,NO,%A29A) RC = 4?*/ 13659302 */* P PUT 12 IN RCSAVE*/ 13659402 */*%A29A: P PICK UP @ THAT V=R VIRTUAL REG SHOULD START AT*/ 13659502 */* P ACCESS ADDRESS SPACE PQE*/ 13659602 */*%C39A: P SUBTRACT SPACE FROM A.S. FREE SPACE*/ 13660102 */* P (,%J210) RESTORE V=R PQE PTR*/ 13660502 */*%K39: P INDICATE THAT RC=8 OCCURRED*/ 13660902 */* P (,%9G2) FIND 1ST FREE AREA @ > @ RSM STOPPED SEARCH AT */ 13661002 */*%J39: D (NO,%UNLOCK,YES,) ANY RC = 8? */ 13661102 */* P RC = 20 IN REG 15 */ 13662802 */*%UNLOCK: P (,RETURN) RELEASE SALLOC LOCK*/ 13664802 */*%A49: D (NO,,YES,%A59) IS POSTCHK FLAG ON?*/ 13665202 */* D (NO,,YES,%C59) V=R REQUEST?*/ 13665602 */* D (NO,,YES,RETURN) DOES RC IN REG 15 = 20?*/ 13666002 */* P (,RETURN) RC=8 IN REG 15*/ 13666402 */*%C59: P (,ELBUILD) RELEASE SALLOC LOCK */ 13666502 */*%A59: P TURN IT OFF*/ 13675902 */* P (,%F28) RC=4 IN REG 0*/ 13677902 */*%B49: P SET UP GP SPEC. PARMS FOR RSM ALLOC*/ 13679902 */* S IEAVEQR: ALLOCATE REAL REGION*/ 13681902 */* P RETURN CODE IN RCSAVE*/ 13683902 */* D (YES,,NO,%F39B) RC=16? */ 13684302 */* P TURN OFF POSTED-SPEC FLAG */ 13684702 */* P (,RETURN) RELEASE SALLOC LOCK */ 13685102 */*%F39B: P TURN ON 'ALLOCATE BYPASS' FLAG */ 13685202 */* D (YES,,NO,%A29A) RC=4? */ 13685302 */* P (,%A29A) PUT 12 IN RCSAVE */ 13687002 */*IEAVPRT0: END*/ 13690202 IEAVPRT0 CSECT 13690602 ENTRY GPRETRY 13694802 ENTRY FREERSM 13704202 ENTRY FREEASQ 13713602 ENTRY ZEROPTRS 13723002 ENTRY DEQUEUE 13732402 ENTRY GPRETURN 13741802 ENTRY CBGETS 13751202 ENTRY ENDASQS 13760602 ENTRY SUCVR 13770002 ENTRY ELBUILD 13820002 ENTRY UNL 13870002 ENTRY FREEPART 13920002 BALR RBASE2,REG0 ESTABLISH TEMP ADDRESSABILITY 14210002 USING *,RBASE2 Y02714 14280002 MODID BR=YES 14290002 USING PSA,0 14300002 USING LDA,RLDA 14330002 USING WORKAREA,REG14 14412002 L RBASE,BASE2 PERMANENT ADDRESSABILITY Y02714 14462002 USING RNDSIZE,RBASE Y02714 14512002 PART MVC DRINSAV(60),BRANCHSV GM S CALLERS REGS 0-14 Y02714 14591602 PRT0GO ST GMBASE2,DRINSV15 SAVE GETMAIN BASE 2 14615602 MVC DGPSW(FLWD),ZEROES ZERO OUT BIT INDICATORS YM00464 14630002 L RCVT,CVTADDR CVT ADDRESSABILITY YM00856 14680002 USING CVT,RCVT 14730002 LA REG14,CFAPWKAR BASE FOR GP/FP WORKAREA Y02714 14780002 ST RIN1,SAVE1FRR SAVE REGISTER 1 FOR FRR YM07262 14781002 SETFRR A,FRRAD=FRRTN,PARMAD=FRRPARMS,WRKREGS=(RWORK1,RWORK2) 14782002 L RWORK1,FRRPARMS @ OF FRR PARM AREA Y02703 14792002 USING RECOVERY,RWORK1 14794002 ST RBASE2,PRT0BASE SAVE HIS BASE REGISTER YM07262 14794202 ST RLDA,LDAADD SAVE FOR FRR USE Y02703 14794402 USING PVT,RWORK1 Y02714 14796002 ST GMBASE,REGSAVE4 SAVE GETMAIN BASE Y02714 14798002 GPRETRY L RWORK1,CVTPVTP BASE FOR THE PVT Y02714 14800002 L RWORK2,PVTPVEQR ENTRY PT FOR IEAVEQR Y02714 14810002 ST RWORK2,ALLOCVR SAVE E.P. FOR LATER USE Y02714 14820002 L RWORK2,PVTPVRLS ENTRY PT. FOR IEAVEQRF Y02714 14822002 ST RWORK2,RSMFREE SAVE E.P. FOR LATER USE Y02714 14824002 DROP RWORK1 14826002 L RGDA,CVTGDA OBTAIN ADDRESS OF GDA Y02714 14830002 DROP RCVT 14880002 USING GDA,RGDA ADDRESSABILITY FOR GDA Y02714 14930002 LA RWORK2,VVSPID V=V SUBPOOL ID IN A REGISTER 15190001 CR RSPID,RWORK2 IS REQUEST FOR V=V REGION 15260001 BL VRREQ BRANCH IF V=R REQUEST 15330001 L PQEREG,ASDPQE OBTAIN @ OF ADDR SP PQE Y02714 15400002 B CKSVCBYT BRANCH TO DETERMINE SVC 15470001 VRREQ L PQEREG,VRPQEP OBTAIN @ OF V=R PQE 15540002 OI GPSW,VERREQ SET SWITCH FOR V=R REQUEST 15610001 USING PQESECT,PQEREG ADDRESSABILITY FOR PQE @ZA05651 15620040 CKSVCBYT L RWORK15,FRRPARMS FRR PARM AREA YM00885 15660002 USING RECOVERY,RWORK15 Y02714 15710002 CLI LDARQSTA+2,SVCFOUR CHECK FOR SVC 4 15750002 BE SVC4 BRANCH IF SVC 4 15820001 LTR RIN1,RIN1 CHECK FOR FREEPART REQUEST 15890001 BP FREEPART BRANCH IF FREEPART 15960002 OI FRRFLAGS,GPFPFLG FRR FOOTPRINT Y02703 16020002 SR RADDR,RADDR ZERO REGION ADDRESS YM01903 16025002 REGREQ LTR RWORK2,RLENGTH SAVE LENGTH OF REGISTER REQUEST 16030002 BZ REGLIM BRANCH IF V=V DEFAULT 16090002 B RNDSIZE BRANCH TO ROUND REQUEST SIZE 16100001 BASE2 DC A(RNDSIZE) VALUE FOR BASE REG Y02714 16150002 SVC4 OI GPSW,SVC4SW SET SWITCH FOR SVC 4 REQUEST 16170001 OI FRRFLAGS,GPFPFLG FRR FOOTPRINT Y02703 16220002 * THIS CODE CALCULATES THE TOTAL LENGTH REQUESTED 16450001 GPART L RWORK1,FSTWORD(RIN1) PICK UP PTR TO LENGTH LIST 16520001 L RADDR,SNDWORD(RIN1) PICK UP ADDRESS POINTER 16590001 L RADDR,FSTWORD(RADDR) PICK UP ADDRESS ENTRY 16660001 NLCSGP L RWORK2,FSTWORD(RWORK1) PICK UP LENGTH 16730001 CLI FSTBYTE(RWORK1),LASTENT CHECK FOR LAST ENTRY 16800002 BE SPECLST BRANCH IF LAST ENTRY 16870001 LTR RADDR,RADDR CHECK FOR SPECIFIC REQUEST 16940001 BNZ RTN08 ERROR IF SPLIT SPECIFIC REQUEST 17010001 L RWORK1,SNDWORD(RWORK1) RETRIEVE 2ND LENGTH Y02714 17060002 TM GPSW,VERREQ TEST FOR V=R REQUEST Y02714 17070002 BO VRDEFCHK BRANCH IF V=R Y02714 17072002 LTR RWORK2,RWORK2 CHECK FOR V=V DEFAULT Y02714 17074002 BZ REGLIM BRANCH IF DEFAULT Y02714 17076002 C RWORK1,DEFAULT CHK FOR 2ND EL = DEFAULT Y02714 17078002 BE REGLIM BRANCH IF YES Y02714 17078402 ADD ALR RWORK2,RWORK1 ADD 2 LENGTHS Y02714 17078802 B RNDSIZE BRANCH TO ROUND SIZE Y02714 17079202 VRDEFCHK LTR RWORK2,RWORK2 CHECK FOR V=R DEFAULT Y02714 17079602 BNZ CHKLEN2 CHECK 2ND LENGTH Y02714 17079702 L RWORK2,VRDREG LOAD DEFAULT SIZE Y02714 17079802 CHKLEN2 C RWORK1,DEFAULT 2ND LENGTH = DEFAULT Y02714 17079902 BNE ADD ADD 2 LENGTHS Y02714 17113202 L RWORK1,VRDREG LOAD DEFAULT SIZE Y02714 17123202 B ADD ADD THE 2 SIZES Y02714 17125202 SPECLST LTR RADDR,RADDR CHECK FOR SPECIFIC REQUEST 17220001 BZ DEFLTCHK IF NOT, ROUND LENGTH 17290002 OI GPSW,GPSSW SET SPECIFIC SWITCH 17360001 ST RADDR,REGADD REGION ADDRESS FOR FRR Y02703 17390002 DEFLTCHK C RWORK2,DEFAULT CHK FOR DEFAULT REQUEST Y02714 17410002 BNE RNDSIZE ROUND SIZE IF NOT Y02714 17420002 TM GPSW,VERREQ CHECK FOR V=R Y02714 17422002 BZ REGLIM BRANCH IF NOT Y02714 17424002 L RWORK2,VRDREG LOAD DEFAULT SIZE Y02714 17426002 DROP RBASE2 17428002 * ROUND UP REGION SIZE TO NEXT 4K FOR V=V OR V=R REQUESTS 17430002 RNDSIZE LA RWORK2,FSTBYTE(RWORK2) CLEAR HI BYTE OF LENGTH REG 17500002 LA RWORK1,PAGERND LOAD PAGE ROUNDING INDEX 17710001 LR RWORK3,RWORK1 ROUND TO PAGE MULTIPLE 17760002 AR RWORK1,RWORK2 RWORK2 CONTAINS LENGTH 17850001 OR RWORK1,RWORK3 17920001 XR RWORK1,RWORK3 RWORK1 CONTAINS ROUNDED SIZE 17990001 LR SIZEREG,RWORK1 SIZE FOR IEALIMIT INTF @ZA05651 18000040 B REGLIMIT SET UP FOR USER EXIT 18050040 * THIS CODE DETERMINES IF THE REQUEST IS VALID 18270001 REGLIM SR SIZEREG,SIZEREG ZERO REG FOR DEFAULT SIZEY02714 18670002 REGLIMIT L RBRANCH,LIMIT @ OF USER EXIT ROUTINE Y02714 18676002 LA RWORK3,SAVEAREA SAVEAREA FOR EXIT ROUTINEY02714 18682002 LR LIM,SIZEREG SIZE REQUESTED IN REG1 Y02714 18690002 LR REG0,LIM SIZE REQUESTED IN REG0 @ZA05651 18692040 BALR RRETURN,RBRANCH USER EXIT ROUTINE Y02714 18700002 * THE IEALIMIT ROUTINE MAY CHANGE THE REGION SIZE (REG0) AND THE 18702040 * LDALIMIT VALUE (LIM). THSES VALUES, HOWEVER, ARE NOT MEANINGFUL 18704040 * FOR V=R REQUESTS SINCE A SEPARATE PQE IS BUILT TO DEFINE THE 18706040 * LIMITS OF THE REAL REGION. 18708040 LA REG14,CFAPWKAR WORKAREA BASE Y02714 18710002 ST LIM,LDALIMIT STORE REG. LIMIT Y02714 18720002 L RWORK15,FRRPARMS FRR PARM AREA ADDR @ZA05651 18721040 TM GPSW,VERREQ V=R REQUEST? Y02714 18730002 BZ STVVREGN BRANCH IF NOT @ZA05651 18735040 ST SIZEREG,REGSIZE RGN SIZE FOR FRR USE @ZA10088 18740040 LTR LIM,LIM CHECK FOR NO LIMIT Y02714 18743002 BZ VRQCHK OK IF NO LIMIT Y02714 18746002 CR LIM,SIZEREG REQUEST > LIMIT? Y02714 18750002 BNL VRQCHK OK TO ALLOCATE Y02714 18760002 LA RRETREG,RC24 RETURN CODE OF 24 Y02714 18770002 B RETURN RETURN TO REQUESTOR Y02714 18780002 STVVREGN ST REG0,VVREGSZ SAVE NEW RGN SIZE @ZA05651 18785040 ST REG0,REGSIZE RGN SIZE FOR FRR USE @ZA10088 18790040 DROP RWORK15 @ZA10088 18792040 LR SIZEREG,REG0 RELOAD SIZEREG WITH @ZA05651 18794040 * NEW REGION SIZE @ZA05651 18800040 NOTHRESH STM SIZEREG,PQEREG,REGSAVE2 SAVE REGS 6-8 18830002 TM GPSW,GPSSW TEST FOR SPECIFIC REQUEST 18900001 BO GETSPEC BRANCH TO SPECIFIC PROCESSING 18970001 TM GPSW,VERREQ CHECK FOR V=R REQUEST 19040001 BO REALREG BRANCH FOR V=R SCAN IF SO 19110002 * MUST BE A REGULAR V=V REQUEST 19114040 L LIM,LDALIMIT GET LDALIMIT VALUE @ZA05651 19118040 C LIM,VVREGSZ LDALIMIT > REGION? @ZA05651 19126040 BNH LDALIMOK NO. USE LDALIMIT @ZA05651 19134040 L LIM,VVREGSZ YES. USE REGN SIZE @ZA05651 19142040 LDALIMOK L RWORK1,PQEFFBQE ADDRESSABILITY FOR FBQE Y02714 19150040 USING FBQESECT,RWORK1 Y02714 19210002 ASLOOP CR RWORK1,PQEREG ARE THERE ANY FBQES? Y02714 19260002 BE RTN20 NO--SYS SPACE OCCUPIES Y02714 19310002 * ALL ADDRESS SPACE Y02714 19360002 C LIM,SIZE DOES REQUEST FIT? @ZA05651 19380040 BNH VVEND BRANCH IF YES Y02714 19460002 L RWORK1,FWDPTR GET NEXT FBQE Y02714 19510002 B ASLOOP TRY NEXT SIZE Y02714 19560002 RTN20 LA RRETREG,RC20 RETURN CODE = 20 Y02714 19710002 MVC VVREGSZ(FLWD),ZEROES ZERO REGION SIZE Y02714 19720002 B RETURN RETURN TO CALLER Y02714 19760002 VRQCHK EQU * @ZA10088 19765040 TM GVSMFLAG,WAITQUE IS SPEC REQUEST WAITING? 19770040 BO WAITON BRANCH IF YES Y02714 19860002 STM RBASE,REG14,CFAPWKAR SAVE REGS ACROSS SETLK Y02714 19922002 OBT1 SETLOCK OBTAIN,TYPE=SALLOC,MODE=UNCOND,RELATED=(VRQS,IEAVPRT0*19924002 (REL2,REL3,REL4,REL8,RET8)) OBTAIN LOCK Y02714 19926002 LM RBASE,REG14,CFAPWKAR RESTORE REGS Y02714 19929602 TM GPSW,GPSSW IS THIS A SPEC REQUEST Y02714 19930002 BZ REALREG NO-TO REAL PROCESSING Y02714 19940002 L ELBASE,VRPFEL BASE FOR VRPOSTQ ELS Y02714 19942002 USING VRWPQEL,ELBASE Y02714 19944002 LTR ELBASE,ELBASE ANY ELS ON Q? Y02714 19946002 BZ GETSPEC NO-TO SPEC PROCESSING Y02714 19948002 L RWORK3,PASCBSV GET ASCB FOR THIS REQ Y02714 19948402 LOOP6 C RWORK3,WPELASCB REQUEST HAS POSTEL? Y02714 19948802 BNE COMPNXT NEXT EL Y02714 19949202 ST SIZEREG,SAVEAREA+8 SAVE SIZE Y02714 19961002 L RWORK15,FRRPARMS Y02703 19963002 LA RRETURN,DEQRET RETURN FROM DEQUE RTN Y02714 19971002 LA RWORK5,VRPOSTQ DEQUEUE FROM VRPOSTQ Y02714 19972502 B DEQUEUE BRANCH TO DEQUEUE EL Y02714 19983902 COMPNXT CLC WPNEXTEL(FLWD),ZEROES IS THERE ANOTHER SPEC? Y02714 19995302 BE WAITON2 NO MORE ELS ON POSTQ Y02714 20006702 L ELBASE,WPNEXTEL GET NEXT EL Y02714 20016702 B LOOP6 CONTINUE SEARCH Y02714 20018702 DEQRET LA REG14,CFAPWKAR WORKAREA BASE Y02714 20028702 L SIZEREG,SAVEAREA+8 RESTORE SIZE Y02714 20029102 ST RADDR,SAVEAREA+8 20029302 BAL RADDR,FMAIN 20029502 L RADDR,SAVEAREA+8 20029902 OI GPSW,PSPEC INDICATE THE REQUEST IS Y02714 20060702 * AN ATTEMPT TO HONOR A Y02714 20063202 * POSTED SPEC REQUEST Y02714 20065202 B GETSPEC BRANCH TO SPEC PROCESSINGY02714 20065602 WAITON TM GPSW,GPSSW IS THIS SPEC? Y02714 20066402 BZ ELBUILD NO-REQUEST MUST WAIT Y02714 20066502 STM RBASE,REG14,CFAPWKAR SAVE REGS ACROSS SETLK Y02714 20070602 OBT2 SETLOCK OBTAIN,TYPE=SALLOC,MODE=UNCOND,RELATED=(VRQS,IEAVPRT0*20072602 (REL1,REL2,REL4,REL8)) SET SALLOC Y02714 20072702 LM RBASE,REG14,CFAPWKAR RESTORE REGS Y02714 20091102 L ELBASE,VRPFEL BASE FOR POSTQ ELS Y02714 20093702 LTR ELBASE,ELBASE ANY ELS ON Q? Y02714 20096302 BZ COMPADDS BRANCH IF NOT Y02714 20098902 L RWORK3,PASCBSV ASCB OF THIS REQUEST Y02714 20101502 B LOOP6 SEARCH POST Q Y02714 20102502 WAITON2 TM GVSMFLAG,WAITQUE 20104102 BZ GETSPEC THIS EL IS NOT ON POSTQ - GO 20114502 * ALLOCATE REQUEST Y02714 20124902 * CHECK TO SEE IF THIS SPECIFIC REQUEST CAN BE HONORED WITHOUT Y02714 20130102 * INTERFERING WITH FIRST SPECIFIC REQUEST WAITING FOR REGION Y02714 20132702 COMPADDS L ELBASE,VRWFEL BASE OF 1ST SPEC ON WAITQY02714 20135302 USING VRWPQEL,ELBASE Y02714 20137902 C RADDR,WPSPADDR REQUEST START > EL START?Y02714 20140502 BH TEST3 BRANCH IF HIGHER Y02714 20143102 LR RWORK2,RADDR REQUEST START Y02714 20145702 AR RWORK2,SIZEREG END @ OF REQUEST Y02714 20148302 C RWORK2,WPSPADDR REQUEST END >= EL START? Y02714 20150902 BH OVRLAP BRANCH IF YES YM05423 20153502 B NOTHRESH NO OVERLAP-HONOR REQUEST Y02714 20156102 TEST3 C RADDR,WPELSIZE REQUEST START > EL END? Y02714 20158702 DROP ELBASE Y02714 20161302 BH NOTHRESH IF YES, NO OVERLAP Y02714 20163902 * THIS REGION REQUEST WOULD INTERFERE WITH THE FIRST SPECIFIC Y02714 20166502 * REQUEST ON THE VRWAITQ IF HONORED. IF THE REQUEST IS VALID, Y02714 20169102 * ENQUEUE IT ON THE VRWAITQ. Y02714 20171702 OVRLAP STM RBASE,REG14,CFAPWKAR SAVE REGS ACROSS SETLK Y02714 20174302 REL1 SETLOCK RELEASE,TYPE=SALLOC,RELATED=(VRQS,IEAVPRT0(OBT2)) 20174702 L RBASE,CFAPWKAR RESTORE BASE REG Y02714 20178702 LA RRETREG,RC8 VALUE TO COMPARE Y02714 20180702 CR RRETREG,RWORK3 R.C.= 8? Y02714 20182702 BE O82ABEND GO TO FRR TO RECORD Y02714 20183102 LM RWORK2,REG14,CFAPWKAR+FLWD RESTORE REGS Y02714 20185202 C RADDR,PQEREGN REQUEST START < V=R AREA Y02714 20191102 * START? Y02714 20193202 BL RTN08 INVALID REQUEST Y02714 20195302 L RWORK3,PQESIZE V=R AREA END Y02714 20197402 A RWORK3,PQEREGN V=R AREA END Y02714 20199502 CR RADDR,RWORK3 REQST START>V=R AREA END?Y02714 20201602 BNL RTN08 INVALID REQUEST Y02714 20203702 LR RWORK2,SIZEREG REQUEST SIZE IN A REG Y02714 20205802 AR RWORK2,RADDR REQUEST END Y02714 20207902 CR RWORK2,RWORK3 REQUST END>V=R AREA END? Y02714 20210002 BH RTN08 INVALID REQUEST Y02714 20212102 B ELBUILD VALID REQUEST-MUST WAIT Y02714 20214202 VVEND L RTCB,LDATCB TCB BASE Y02714 20216302 USING TCB,RTCB 20218402 L RTCT,TCBTCT TCT BASE Y02714 20220502 LTR RTCT,RTCT YM00850 20222502 BZ STLDA BRANCH IF NO TCT YM00850 20225502 USING SMFTCT,RTCT 20228802 L RWORK3,PQESIZE SIZE OF REG. Y02714 20230402 SRL RWORK3,ELEVEN SIZE IN 2K BLOCKS Y02714 20232002 STH RWORK3,TCTRSZ SIZE IN TCT Y02714 20233602 STPASTRT MVC TCTRBA(FLWD),PQEREGN REGION START IN TCT Y02714 20241602 DROP RTCT 20243202 STLDA ST RLDA,TCBPQE @A.S. DPQE - 8 IN TCB Y02714 20244802 ST RTCB,PQETCB TCB @ IN PQE Y02714 20246402 NI VMMFLGS,X'FF'-VVVRFLG INDICATE VIRTUAL IN PQE Y02714 20248002 L PQEREG,FSTWORD(PQEREG) GET 1ST FBQE Y02714 20248402 MVC CURRGNTP(FLWD),FBQAREA-FBQESECT(PQEREG) READJUST Y02714 20248802 * CURRGNTP VALUE Y02714 20249202 NI TCBFLGS6,X'FF'-TCBRV INDICATE VIRTUAL IN TCB Y02714 20249902 LA RRETREG,RC0 SUCCESSFUL RETURN Y02714 20252002 B RETURN RETURN TO CALLER Y02714 20254102 CKONEDN TM GPSW,ASQFLAG WAS THIS A BRANCH FROM Y02714 20256202 * A.S.QUEUE PROCESSING? Y02714 20258302 BO ENDASQS IF YES, BRANCH BACK Y02714 20260402 L RWORK4,FRRPARMS BASE FOR FRR PARM AREA Y02703 20260802 USING RECOVERY,RWORK4 20261202 OI FRRFLGS2,VEQRDONE V=R ALLOCATION DONE Y02714 20262402 STM RBASE,REG14,CFAPWKAR SAVE REGS ACROSS SETLK Y02714 20265902 REL2 SETLOCK RELEASE,TYPE=SALLOC,RELATED=(VRQS,IEAVPRT0(OBT1,OBT2)) 20266202 L RBASE,CFAPWKAR RESTORE BASE REG Y02714 20267002 LA RRETREG,RC8 VALUE TO COMPARE Y02714 20268702 CR RRETREG,RWORK3 R.C.= 8? Y02714 20269102 BE O82ABEND GO TO FRR TO RECORD Y02714 20269502 LM RWORK2,REG14,CFAPWKAR+FLWD RESTORE REGS Y02714 20270202 TM GPSW,VERREQ TEST FOR V=R REQUEST Y02714 20286802 BZ VVEND BRANCH IF VIRTUAL Y02714 20300002 * OBTAIN CORE FOR DPQE AND PQE @Z30ENYG 21140003 CBGETS OI FRRFLAGS,CBGFLG FRR FOOTPRINT Y02703 21190002 L RIN1,QELNTH PQE,DPQE SIZE IN REG 1 @Z30ENYG 21210003 L GMBASE2,RINSAV15 RESTORE GETMAIN BASE 2 21280002 L GMBASE,REGSAVE4 GM BASE Y02714 21330002 L RBRANCH,GETMNB OBTAIN ADDRESS OF GETMAING 21350002 BALR RRETURN,RBRANCH BRANCH TO GETMAING 21420002 LA RWORK1,24(RIN1) @ OF DPQE-8 @Z30ENYG 21770003 L RTCB,LDATCB TCB BASE Y02714 21820002 ST RWORK1,TCBPQE STORE ADDRESS IN TCB @Z30ENYG 21840003 * INITIALIZE PQE AND DPQE FIELDS @Z30ENYG 22120003 DROP PQEREG Y02714 22590002 USING PQESECT,RIN1 ADDRESSABILITY FOR PQE 22610001 ST RTCB,PQETCB ADDR TCB IN PQE 22820001 ST SIZEREG,PQESIZE REGION SIZE IN PQE 22890001 ST SEGREG,PQEREGN REGION ADDRESS IN PQE 22960001 ST SEGREG,CURRGNTP ADJUST PTR FOR VGM00 YM01960 22990002 ST RIN1,VRPQE(RWORK1) ADDRESS OF PQE IN DPQE 23100001 ST RIN1,VVPQE(RWORK1) ADDRESS OF PQE IN DPQE 23170001 LR RWORK1,RIN1 SAVE ADDR PQE BUILT @Z30ENYG 23173003 ST PQEREG,CFAPWKAR SAVE ADDR V=R PQE @Z30ENYG 23176003 * OBTAIN CORE FOR FBQE @Z30ENYG 23179003 L PQEREG,PASCBSV ASCB ADDR FOR CELL GM @Z30ENYG 23200003 GETMAIN P,BRANCH=YES,SP=SP255 GET CELL FOR FBQE @Z30ENYG 23203003 L PQEREG,CFAPWKAR RESTORE V=R PQE ADDR @Z30ENYG 23215003 XR RWORK1,RIN1 SWAP REGS: RIN1=PQE @ @Z30ENYG 23315003 XR RIN1,RWORK1 RWORK1=FBQE @ @Z30ENYG 23415003 XR RWORK1,RIN1 23515003 ST RWORK1,PQEFFBQE FIRST FBQE @ IN PQE @Z30ENYG 23620003 ST RWORK1,PQEBFBQE LAST FBQE @ IN PQE @Z30ENYG 23820003 USING FBQESECT,RWORK1 ADDRESSABILITY FOR FBQE 24020003 ST RIN1,FWDPTR FBQE FORWARD POINTER 24220003 ST RIN1,BCKPTR FBQE BACKWARD POINTER 24420003 ST SIZEREG,SIZE REGION SIZE IN FBQE 24620003 ST SEGREG,FBQAREA REGION ADDRESS IN FBQE 24820003 ST RWORK1,RW1SAVE FRR FOOTPRINT 25020003 DROP RWORK4 25120003 DROP RWORK1 25220003 LA REG14,CFAPWKAR GP/FP WORKAREA BASE Y02714 25420003 OI VMMFLGS,VVVRFLG INDICATE REAL IN PQE 26180001 DROP RIN1 26250001 OI TCBFLGS6,TCBRV INDICATE REAL IN TCB 26320001 L RTCT,TCBTCT TCT BASE Y02714 26370002 LTR RTCT,RTCT YM00850 26374002 BZ NOTCT BRANCH IF NO TCT YM00850 26377002 USING SMFTCT,RTCT Y02714 26380002 ST SEGREG,TCTRBA REGION START IN TCT Y02714 26430002 LR RWORK3,SIZEREG SIZE OF REGION Y02714 26450002 SRL RWORK3,ELEVEN SIZE IN 2K BLOCKS Y02714 26460002 STH RWORK3,TCTRSZ REGION SIZE IN TCT Y02714 26470002 DROP RTCT Y02714 26480002 NOTCT LA REG14,CFAPWKAR WORKAREA BASE Y02714 26530002 LH RRETREG,RCSAVE RESTORE RETURN CODE Y02714 26580002 TM GPSW,PSPEC IS THIS REQUEST ONE THAT Y02714 26630002 * WAS POSTED FROM VRWAITQ? Y02714 26640002 BZ RETURN RETURN IF NOT Y02714 26650002 NI GPSW,X'FF'-PSPEC TURN FLAG OFF Y02714 26660002 B FPCHK CHECK TO SEE IF OTHER Y02714 26662002 * ELS ON THE VRWAITQ CAN Y02714 26664002 * NOW BE HONORED Y02714 26666002 * ALLOCATE THE V=R REGION 26670001 SPECREAL ST RADDR,VRPARMS1 REGION ADDRESS IN PARM LIST 26740002 LR RWORK2,SIZEREG SIZE IN PARM LIST Y02714 26802002 SRL RWORK2,TWELVE GET # OF 4K BLOCKS Y02714 26804002 ST RWORK2,VRPARMS2 # 4K BLOCKS IN PARM LIST Y02714 26806002 OI VRPARMS2,LASTENT FLAG HIGH BYTE Y02714 26856002 L RTCB,LDATCB TCB BASE Y02714 27000002 L RWORK1,TCBJSCB ACCESS JSCB ADDRESS 27020002 LA RWORK1,0(RWORK1) ZERO HIGH BYTE 27050002 USING IEZJSCB,RWORK1 ADDRESSABILITY FOR JSCB 27090001 LA RWORK1,JSCBSECB ACCESS ECB ADDRESS 27160001 DROP RWORK1 DROP JSCB ADDRESSABILITY 27230001 ST RWORK1,VRPARMS3 ADDR OF GPI ECB IN PARM LIST 27300002 LA RIN1,VRPARMS ADDR OF PARM LIST IN REG 1 27370001 LA RWORK3,SAVEAREA SAVE AREA @ Y02714 27420002 L RBRANCH,ALLOCVR OBTAIN ADDRESS OF ALLOCATE V=R 27440001 BALR RRETURN,RBRANCH BRANCH TO ALLOCATE V=R 27510001 LA REG14,CFAPWKAR GP/FP WORKAREA BASE Y02714 27560002 LA RWORK1,RC16 PUT 16 IN A REG 27580001 CR RRETREG,RWORK1 IS RETURN CODE 16 27650001 BE RTN16 IF SO, UNSUCCESSFUL ALLOCATION 27720002 L RWORK1,FRRPARMS BASE FOR FRR PARM AREA Y02714 27730002 USING RECOVERY,RWORK1 27740002 OI FRRFLAGS,RSMDONE FRR FOOTPRINT Y02714 27750002 DROP RWORK1 27760002 OI GPSW,ALOCPASS ALLOCATION DONE Y02714 27770002 SRC STH RRETREG,RCSAVE SAVE RETURN CODE 27790001 LA RWORK1,RC4 COMPARE VALUE Y02714 27840002 CR RRETREG,RWORK1 WAS RSM RC=4? Y02714 27850002 BNE SUCVR IF NO, SUCCESS Y02714 27852002 LA RWORK1,RC12 IF YES, CHANGE TO 12 Y02714 27854002 STH RWORK1,RCSAVE SAVE RC Y02714 27856002 B SUCVR BRANCH TO V=R PROCESSING Y02714 27858002 EJECT 28140001 * PERFORM THE FBQE SEARCH AND V=R SCAN FOR 28210002 * V=R REGION ALLOCATION 28280002 REALREG LR RWORK2,SIZEREG SIZE IN PARM LIST Y02714 28400002 SRL RWORK2,TWELVE GET # OF 4K BLOCKS Y02714 28410002 ST RWORK2,VRPARMS2 # 4K BLOCKS IN PARM LIST Y02714 28412002 L RTCB,LDATCB TCB BASE Y02714 28610002 L RWORK1,TCBJSCB ACCESS JSCB ADDRESS 28630002 LA RWORK1,0(RWORK1) CLEAR HIGH BYTE 28660002 USING IEZJSCB,RWORK1 ADDRESSABILITY FOR JSCB 28700001 LA RWORK1,JSCBSECB ACCESS ECB ADDRESS 28770001 DROP RWORK1 DROP JSCB ADDRESSABILITY 28840001 ST RWORK1,VRPARMS3 ECB ADDRESS IN THIRD PARAMETER 28910002 LA RIN1,VRPARMS ADDR PARAMETER LIST IN REG 1 28980001 USING PQESECT,PQEREG ADDRESSABILITY FOR PQE 29050001 C SIZEREG,PQESIZE REQUEST > V=R AREA? @ZA15799 29070040 BH RET8 YES, INVALID REQUEST @ZA15799 29080040 L RWORK1,PQEFFBQE ACCESS FIRST FBQE ON PQE CHAIN 29120001 USING FBQESECT,RWORK1 ADDRESSABILITY FOR FBQE 29260001 VRLOOP CR RWORK1,PQEREG CHECK FOR END OF FBQE CHAIN 29330001 BE RET4 REQUEST MUST WAIT Y02714 29400002 C SIZEREG,SIZE CHECK FOR SIZE LARGE ENOUGH 29470001 BH FBQLOOP CHECK NEXT FBQE IF TOO SMALL 29540001 MVC VRPARMS1(FLWD),FBQAREA FBQE START IN PARAMETER LIST 29680002 RSMBR LA RWORK3,SAVEAREA SAVE AREA ADDRESS Y02714 29750002 L RBRANCH,ALLOCVR ACCESS ADDRESS OF IEAVEQRY02714 29800002 BALR RRETURN,RBRANCH BRANCH TO IEAVEQR 29820002 LA REG14,CFAPWKAR GP/FP WORKAREA BASE Y02714 29870002 STH RRETREG,RCSAVE SAVE RETURN CODE FROM IEAVEQR 29890002 LA RWORK2,RC16 ACCESS RC 16 FOR COMPARE 29960001 CR RRETREG,RWORK2 CHECK FOR RC 16 30030001 BE FOUND16 BRANCH IF RC=16 Y02714 30080002 LA RWORK2,RC8 ACCESS RC 8 FOR COMPARE Y02714 30090002 CR RRETREG,RWORK2 CHECK FOR RC=8 Y02714 30092002 BE FOUND8 NO-SUCCESSFUL ALLOCATION Y02714 30094002 L RWORK1,FRRPARMS BASE FOR FRR PARM AREA Y02703 30094402 USING RECOVERY,RWORK1 30094802 OI FRRFLAGS,RSMDONE FRR FOOTPRINT Y02703 30095202 DROP RWORK1 30095602 LA RWORK2,RC4 COMPARE VALUE Y02714 30096002 CR RRETREG,RWORK2 RSM RC = 4? Y02714 30098002 BNE SUCVR SUCCESSFUL ALLOCATION IF NOT 30100001 LA RWORK2,RC12 CHANGE RC TO 12 Y02714 30150002 STH RWORK2,RCSAVE SAVE RC Y02714 30160002 B SUCVR BRANCH TO PROCESS V=R Y02714 30162002 FOUND8 OI BIGPSW,UNCSCAN INDICATE AN RC 8 FROM RSMY02714 30170002 L PQEREG,ASDPQE PQE ADDRESS Y02714 30220002 L FBQEREG,PQEFFBQE FBQE ADDRESSABILITY Y02714 30230002 USING FBQESECT,FBQEREG Y02714 30232002 FREEADDR CR FBQEREG,PQEREG ANY MORE FBQE'S? Y02714 30232402 BE FOUND16 BRANCH IF NOT Y02714 30232802 L RWORK3,FBQAREA ADDRESS OF FREE AREA Y02714 30234002 C RWORK3,VRPARMS1 IS RSM STOP ADDRESS LOW? Y02714 30236002 BNH NEXTFREE NO--GET NEXT FREE AREA Y02714 30238002 ST RWORK3,VRPARMS1 PASS RSM THIS ADDRESS Y02714 30238402 LA RIN1,VRPARMS ADDRESS OF PARM LIST Y02714 30238802 B RSMBR TRY TO ALLOCATE AGAIN Y02714 30239202 NEXTFREE L FBQEREG,FWDPTR NEXT FREE AREA ADDRESS Y02714 30239602 B FREEADDR TRY NEXT FREE AREA Y02714 30239702 FOUND16 TM BIGPSW,UNCSCAN ANY RC=8 FROM RSM? Y02714 30239802 BZ UNLK RETURN IF NOT Y02714 30239902 LA RRETREG,RC20 IF YES, SYS. SPACE Y02714 30286602 * FRAGMENTS V=R AREA Y02714 30296602 UNLK STM RBASE,REG14,CFAPWKAR SAVE REGS ACROSS SETLK Y02714 30310602 REL3 SETLOCK RELEASE,TYPE=SALLOC,RELATED=(VRQS,IEAVPRT0(OBT1)) 30312602 L RBASE,CFAPWKAR RESTORE BASE REG Y02714 30315002 LA RWORK2,RC8 VALUE TO COMPARE Y02714 30315402 CR RWORK2,RWORK3 R.C.= 8? Y02714 30315802 BE O82ABEND GO TO FRR TO RECORD Y02714 30315902 LM RWORK2,REG14,CFAPWKAR+FLWD RESTORE REGS Y02714 30316002 MVC VVREGSZ(FLWD),ZEROES ZERO REGION SIZE Y02714 30316302 B RETURN RETURN TO CALLER Y02714 30316602 FBQLOOP L RWORK1,FWDPTR ACCESS NEXT FBQE 30333302 B VRLOOP BRANCH TO CHECK NEXT FBQE 30380001 * SUBTRACT SAME SPACE FROM ADDRESS SPACE PQE Y02714 30710002 SUCVR L RWORK15,FRRPARMS FRR PARM BASE 30712002 USING RECOVERY,RWORK15 30714002 MVC REGADD(FLWD),VRPARMS1 REG ADDRESS FOR FRR USE Y02714 30716002 L REGSTART,VRPARMS1 @ FROM RSM TO START Y02714 30720002 * VIRTUAL REGION Y02714 30722002 LA REGSTART,0(REGSTART) ZERO HIGH BYTE Y02714 30722402 LR REGEND,REGSTART REGION START ADDRESS Y02714 30724002 AR REGEND,SIZEREG REGION END ADDRESS Y02714 30726002 L PQEREG,ASDPQE A.S.PQE ADDRESS Y02714 30728002 USING PQESECT,PQEREG Y02714 30728402 L FBQEREG,PQEFFBQE GET FIRST FBQE Y02714 30728802 USING FBQESECT,FBQEREG Y02714 30729202 NXTFBQE L RWORK3,FBQAREA START OF FREE AREA Y02714 30729602 A RWORK3,SIZE END OF FREE AREA Y02714 30729702 CR REGSTART,RWORK3 REG STARTSTART 1? Y02714 46770402 BH TEST2 BRANCH IF YES Y02714 46775402 CLC WPELSIZE,SPADDR(FIRSTSAV) END 2>=START 1? Y02714 46780402 BNL LOOP1 OVERLAPS-TRY NEXT EL Y02714 46785402 B CHKSPEC CAN THIS REQUEST BE HON 46790402 TEST2 CLC WPSPADDR(FLWD),ELSIZE(FIRSTSAV) START 2>END 1? Y02714 46795402 BNH LOOP1 IF NOT, OVERLAPS Y02714 46800402 B CHKSPEC YES-ATTEMPT TO HONOR IT Y02714 46805402 * ENQUEUE AN ELEMENT ON THE VRPOSTQ Y02714 46810402 PENQ MVC WPPREVEL(FLWD),ZEROES ENQUEUE AT HEAD OF QUEUE Y02714 46815402 MVC WPNEXTEL(FLWD),VRPFEL NEW FORWARD PTR Y02714 46820402 CLC VRPFEL(FLWD),ZEROES WERE THERE ELS ON Q? Y02714 46825402 BE STBASE BRANCH IF NOT Y02714 46830402 L RWORK4,VRPFEL @ PREVIOUS FIRST EL Y02714 46835402 ST ELBASE,SNDWORD(RWORK4) OLD ELS BACK PTR Y02714 46840402 STBASE ST ELBASE,VRPFEL NEW 1ST EL @ Y02714 46845402 CLC VRPLEL(FLWD),ZEROES WERE THERE ELS ON Q Y02714 46850402 BNE UNLOCK BRANCH IF SO Y02714 46855402 ST ELBASE,VRPLEL NEW LAST EL @ Y02714 46860402 B UNLOCK GO RELEASE LOCK 46865402 * DEQUEUE AN ELEMENT FROM VRWAITQ OR VRPOSTQ Y02714 46896002 USING RECOVERY,RWORK15 46916002 DEQUEUE OI FRRFLGS2,DEQFLG FRR FOOTPRINT Y02703 46926002 CLC WPNEXTEL(FLWD),ZEROES IS THIS THE LAST EL Y02714 46942802 BNE NOTLAST BRANCH IF NOT LAST Y02714 46989602 CLC WPPREVEL(FLWD),ZEROES IS THIS THE FIRST EL Y02714 47036402 BNE NOTONLY BRANCH IF NOT Y02714 47083202 SR RWORK4,RWORK4 ZERO REG Y02714 47130002 ST RWORK4,FSTWORD(RWORK5) ZERO 1ST EL PTR Y02714 47176802 ST RWORK4,SNDWORD(RWORK5) ZERO LAST EL PTR Y02714 47223602 NI FRRFLGS2,X'FF'-DEQFLG TURN OFF FLAG Y02714 47233602 BR RRETURN BRANCH TO POST REQUESTER Y02714 47270402 NOTONLY L RWORK4,WPPREVEL PREVIOUS EL @ Y02714 47317202 MVC FSTWORD(FLWD,RWORK4),WPNEXTEL NEW NEXT PTR Y02714 47364002 * IN PREVIOUS EL 47410802 MVC SNDWORD(FLWD,RWORK5),WPPREVEL NEW LAST PTR IN Y02714 47457602 * ANCHOR BLOCK 47504402 NI FRRFLGS2,X'FF'-DEQFLG TURN OFF FLAG Y02703 47514402 BR RRETURN BRANCH TO POST REQUESTER Y02714 47551202 NOTLAST CLC WPPREVEL(FLWD),ZEROES IS THIS THE FIRST EL Y02714 47598002 BNE MIDDLE NO-DEQUEUE FROM MIDDLE Y02714 47644802 L RWORK4,WPNEXTEL @ OF NEXT EL Y02714 47691602 MVC SNDWORD(FLWD,RWORK4),WPPREVEL NEW PREV PTR IN Y02714 47738402 * OLD NEXT 47785202 MVC FSTWORD(FLWD,RWORK5),WPNEXTEL NEW 1ST PTR IN Y02714 47832002 * ANCHOR BLOCK 47878802 NI FRRFLGS2,X'FF'-DEQFLG TURN OFF FLAG Y02703 47888802 BR RRETURN BRANCH TO POST REQUESTER Y02714 47925602 MIDDLE L RWORK4,WPNEXTEL NEXT EL @ Y02714 47972402 MVC SNDWORD(FLWD,RWORK4),WPPREVEL NEW PREV PTR IN Y02714 48019202 * NEXT EL 48066002 L RWORK4,WPPREVEL PREV EL @ Y02714 48112802 MVC FSTWORD(FLWD,RWORK4),WPNEXTEL NEW NEXT PTR IN Y02714 48159602 * PREVIOUS EL 48206402 NI FRRFLGS2,X'FF'-DEQFLG TURN OFF FLAG Y02703 48216402 BR RRETURN RETURN Y02714 48253202 EJECT 48300002 *********************************************************************** 48370001 * STATUS * 48440001 * CHANGE LEVEL 000 * 48510001 * FUNCTION * 48580001 * THIS SECTION OF GETPART, THAT IS GETPART SPECIFIC, OBTAINS CORE * 48650001 * AT AN ACTUAL ADDRESS. THE FOLLOWING TYPE OF GETPART SPECIFIC IS * 48720001 * SUPPORTED: ECB MODE SINGLE REGION LIST REQUEST(SVC 4). * 48790001 * ENTRY POINTS * 48860001 * GETSPEC * 48930001 * THIS IS THE INTERNAL BRANCH ENTRY POINT. THIS FUNCTION OF GETPART* 49000001 * IS ENTERED WHEN THE ROUTINE RECOGNIZES THAT THE REGION ADDRESS * 49070001 * REQUESTED FIELD IN THE GETPART WORK AREA IS NON-ZERO. * 49140002 * THIS ROUTINE IS ALSO ENTERED AFTER A V=R REGION HAS BEEN * 49280002 * ALLOCATED, AND THE V=V REGION MUST BE ALLOCATED AT THE SAME * 49350002 * ADDRESS. * 49420002 * INPUT * 49490001 * AT THE TIME THIS LOGIC IS ENTERED, DETERMINATION HAS BEEN MADE AS* 49560001 * TO WHETHER THE REQUEST IS FOR A V=V OR V=R REGION. THE ADDRESS OF* 49630001 * THE V=R OR V=V PQE IS PASSED IN PQEREG, AND THE ROUNDED REGION * 49700001 * SIZE IS PASSED IN SIZEREG. THE SPECIFIC ADDRESS OF THE REGION IS * 49770001 * PASSED IN RADDR. IF ENTRY IS FROM V=R ALLOCATION THEN RWORK2 * 49840002 * MUST CONTAIN THE END ADDRESS OF THE SPECIFIC REGION. * 49910001 * OUTPUT * 49980001 * THE ADDRESS OF THE V=V OR V=R PQE IS PASSED IN PQEREG; THE * 50050001 * ROUNDED REGION SIZE IS IN SIZEREG, AND IF THE GETPART IS SUCCESS-* 50120001 * FUL, THE SPECIFIC ADDRESS OF THE REGION IS IN SEGREG. * 50190001 * EXTERNAL REFERENCES * 50260001 * GETMAING * 50330002 * TO ALLOCATE SPACE IN SQA FOR AN ADDITIONAL FBQE. * 50400001 * RMBRANCH * 50470001 * TO FREE SPACE IN SQA FOR AN FBQE NO LONGER NEEDED * 50540001 * EXITS,NORMAL * 50820001 * TO RTN04 IN THE GETPART LOGIC WHEN THE FREE SPACE AVAILABLE AT * 50890001 * THE CURRENT TIME CANNOT CONTAIN THE SPECIFIC REGION REQUESTED. TO* 50960001 * CKONEDN OF THE GETPART LOGIC WHEN THE REGION HAS BEEN SUCCESS- * 51030001 * FULLY ALLOCATED. * 51100001 * EXITS,ERROR * 51170001 * TO RTN08 IN THE GETPART LOGIC WHEN THE REQUEST IS OUTSIDE THE * 51240001 * BOUNDS OF THE DYNAMIC AREA. TO RET20 IN GETPART LOGIC WHEN THE * 51310002 * requested SPACE IS FRAGMENTED WITH SYSTEM SPACE LSQA/SWA/SP229,230 51360002 * TABLES AND WORK AREAS * 51380001 * THE CHAIN OF FBQES FOR THE DYNAMIC AREA WHICH IS ANCHORED BY THE * 51450001 * PQEFFBQE FIELD OF THE PQE. * 51520001 * ATTRIBUTES * 51590001 * REENTRANT, REFRESHABLE * 51660002 * CHARACTER CODE DEPENDENCY * 51730001 * SAME AS GETPART * 51800001 * NOTES * 51870001 * NONE * 51940001 *********************************************************************** 52010001 USING PQESECT,PQEREG 52080001 GETSPEC C RADDR,PQEREGN COMPARE REGION START @ TO DY- 52150001 BL RET8 NAMIC START @. BRANCH IF LOW 52220002 L RWORK3,PQEREGN ACCESS DYNAMIC START @ 52290001 A RWORK3,PQESIZE ADD DYNAMIC AREA SIZE 52360001 CR RADDR,RWORK3 COMPARE REGION START @ TO DY- 52430001 BNL RET8 NAMIC END @. BRANCH IF NOT LOW 52500002 LR RWORK2,SIZEREG ACCESS REGION SIZE 52570001 AR RWORK2,RADDR ADD REGION START @ 52640001 CR RWORK2,RWORK3 COMPARE REGION END @ TO DYNAMIC 52710001 BH RET8 END @. BRANCH IF HIGH 52780002 COMONCHK L RWORK1,PQEFFBQE ACCESS FIRST FBQE 52850002 USING FBQESECT,RWORK1 ADDRESSABILITY FOR FBQE 52920001 LOOP CR RWORK1,PQEREG IS THERE ANOTHER FBQE? 52990001 BE RET20 BRANCH IF NOT 53060002 C RADDR,FBQAREA COMPARE REGION START @ TO FREE 53130001 BL RET4 START @. BRANCH IF LOW. 53200002 L RWORK3,SIZE ACCESS FREE AREA SIZE 53270001 A RWORK3,FBQAREA ADD FREE AREA START @ 53340001 CR RWORK3,RADDR COMPARE FREE END @ TO REGION 53410001 BL FBQELOOP START @. BRANCH IF LOW 53480001 CR RWORK2,RWORK3 COMPARE REGION END @ TO FREE 53550001 BH RET20 END @. BRANCH IF HIGH. 53620002 TM GPSW,POSTCHK IS POSTCHK FLAG ON? Y02714 53670002 BZ VRSTEST IF NOT, V=R SPEC? Y02714 53680002 NI GPSW,X'FF'-POSTCHK TURN OFF POSTCHK FLAG Y02714 53682002 LA REG0,RC0 RC = 0 IN REG 0 Y02714 53684002 B PSTCHK BRANCH TO POSTING ATTEMPTY02714 53686002 VRSTEST TM GPSW,VERREQ V=R REQUEST? Y02714 53688002 BZ NOTVRSPC BRANCH IF NOT Y02714 53688402 TM GPSW,GPSSW V=R SPECIFIC? Y02714 53688502 BZ NOTVRSPC BRANCH IF NOT Y02714 53688602 TM GPSW,ALOCPASS HAS ALLOCATION BEEN DONE Y02714 53688802 BZ SPECREAL BRANCH TO ALLOCATE V=R Y02714 53689202 NI GPSW,X'FF'-ALOCPASS TURN FLAG OFF Y02714 53689602 NOTVRSPC L RWORK15,FRRPARMS FRR PARM BASE Y02703 53739602 ST RWORK1,RW1SAVE FRR INFO Y02703 53789602 DROP RWORK15 53839602 LR RSIZE,RADDR ACCESS REGION START @ 54390002 S RSIZE,FBQAREA SUBTRACT FREE START @ 54460001 BZ SET1 BRANCH IF ADDRESSES EQUAL 54600001 NI BIGPSW,X'FF'-STADDRE TURN OFF SWITCH Y02714 54610002 TM GPSW,VERREQ Y02714 54650002 BZ VIRTSPEC BRANCH IF V=V Y02714 54660002 ST RSIZE,SIZE STORE DIFFERENCE IN FBQE 54670001 OTHREND SR RWORK3,RWORK2 DIFFERENCE IN END ADDRESSES 54740001 LR SEGREG,RADDR PUT REGION START @ IN SEGREG 54810001 LTR RWORK3,RWORK3 CHECK FOR END ADDRESSES EQUAL 54880001 BZ CKSWX BRANCH IF EQUAL 54950001 TM BIGPSW,STADDRE CHECK FOR START ADDRESSES EQUAL 55020001 BO USEOLD BRANCH IF EQUAL 55090001 * CONDITION 2: REGION START ADDRESS>FREE AREA START ADDRESS AND 55160001 * REGION END ADDRESSFREE AREA START ADDRESS AND 56980001 * REGION END ADDRESS=FREE AREA END ADDRESS 57050001 BZ CKONEDN BRANCH TO MAINLINE GETPART 57120001 * CONDITION 4: REGION START ADDRESS=FREE AREA START ADDRESS AND 57190001 * REGION END ADDRESS=FREE AREA END ADDRESS 57260001 L RWORK2,BCKPTR ADDR OF PREVIOUS FBQE 57330001 L RWORK3,FWDPTR ADDR OF NEXT FBQE 57400001 ST RWORK3,FWDPTR-FBQESECT(RWORK2) PREVIOUS POINTS TO NEXT 57470001 ST RWORK2,BCKPTR-FBQESECT(RWORK3) NEXT POINTS TO PREVIOUS 57540001 ST PQEREG,SAVEAREA SAVE PQE ADDR @Z30ENYG 57545003 L PQEREG,PASCBSV ASCB ADDR FOR CELL FM @Z30ENYG 57585003 FREEMAIN P,BRANCH=YES,A=(RWORK1) FREE FBQE CELL @Z30ENYG 57590003 LA REG14,CFAPWKAR WORKAREA BASE Y02714 57620003 L PQEREG,SAVEAREA RESTORE PQE ADDRESS @Z30ENYG 57720003 B CKONEDN BRANCH TO MAINLINE GETPART 57960001 FBQELOOP L RWORK1,FWDPTR ACCESS ADDR OF NEXT FBQE 58030001 B LOOP BRANCH TO CHECK FOR ADDR OF PQE 58100001 SET1 OI BIGPSW,STADDRE SET BIT FOR START ADDRS EQUAL 58170001 TM GPSW,VERREQ V=R SPEC? Y02714 58220002 BZ VVEND BRANCH IF VIRTUAL Y02714 58230002 B OTHREND BRANCH TO CHECK END ADDRS 58232002 VIRTSPEC L RWORK3,SIZE FREE AREA SIZE Y02714 58234002 SR RWORK3,RSIZE SUBTRACT SIZE BELOW Y02714 58236002 * REG START Y02714 58236402 ST RWORK3,SIZE REMAINING FREE AREA Y02714 58238002 ST RADDR,FBQAREA START @ OF FREE AREA IN Y02714 58238402 * PRIVATE AREA Y02714 58238502 ST RADDR,PQEREGN START @ OF VIRTUAL REGIONY02714 58238802 L RWORK3,PQESIZE SIZE OF PRIVATE AREA Y02714 58238902 SR RWORK3,RSIZE SIZE-SIZE BELOW REG.STARTY02714 58239002 ST RWORK3,PQESIZE EFFECTIVE VIRT. REG SIZE Y02714 58239202 B VVEND BRANCH TO FINISH ALLOC. Y02714 58239602 DROP RWORK1 58239902 DROP PQEREG 58240002 EJECT 58260002 *********************************************************************** 58280002 * IEALIMIT * 58300002 * THIS IS THE USER EXIT ROUTINE TO LIMIT THE SIZE OF REGION REQUESTS. * 58320002 * the routine PROVIDED HERE WILL RETURN ZERO IN REGISTER 1 IF INPUT * 58324002 * register 1 iS ZERO (NO REGION SPECIFIED). IF A REGION SIZE WAS * 58328002 * specified 64K WILL BE ADDER TO IT AND THIS VALUE WILL BECOME THE * 58332002 * upper limit OF THE SPACE AVAILABLE IN SUBPOOLS 0-127, 251 AND 252. * 58336002 * 58339002 * INPUT: 58342002 * 58345002 * R1 V=V JOBS 58348002 * REGION PARM FROM JCL 58351002 * OR 58354002 * DEFAULT FROM READER PROC 58357002 * V=R JOBS 58360002 * REGION PARM FROM JCL 58363002 * OR 58366002 * DEFAULT FROM GLOBAL DATA AREA (IHAGDA) 58369002 * R13 ADDRESS OF 18 WORD SAVE AREA 58372002 * R14 RETURN ADDRESS 58380002 * R15 ENTRY POINT ADDRESS 58385002 * 58390002 *********************************************************************** 58395002 IEALIMIT CSECT 58400002 ST REG15,C16(REG13) SAVE REGISTER TO USE AS BASE 58420002 BALR REG15,0 GET BASE REGISTER 58426002 USING *,REG15 58432002 LTR REG1,REG1 WAS A REGION SIZE SPECIFIED 58438002 BZ LIMITRET BR IF NONE SPECIFIED 58444002 A REG1,C64K ADD 64K TO REGION SIZE 58450002 LIMITRET L REG15,C16(REG13) RESTORE DESTROYED REGISTER 58460002 BR RRETURN RETURN TO IEAVPRT0 58470002 C64K DC F'65536' 64K 58490002 EJECT 58520001 IEAVPRT0 CSECT 59520002 ZEROES DC F'0' TO ZERO OUT GPSW 79800001 BQELNTH DC X'FF000010' SUBPOOL NUMBER,LENGTH FBQE/SPQE 79940002 QELNTH DC X'FF000028' SUBPOOL NUMBER, LENGTH PQE,DPQE 80010002 MQELNTH DC X'FF000038' SPID,LENGTH DPQE,PQE,FBQEY02714 80080002 SBQELNTH DC X'F5000010' SUBPOOL NUMBER AND LENGTH FBQE 80150001 DS 0F 80171002 DEFAULT DC X'80000000' DEFAULT REGION SIZE Y02714 80180002 LIMIT DC V(IEALIMIT) ADDRESS OF USER EXIT 80560002 GETMNB DC V(GETMAING) GETMAING ROUTINE 80780002 RELEASE DC V(MRELEASF) MRELEASF ROUTINE 80920002 REGMAIN DC V(RMBRANCH) RMBRANCH 81060001 ERRADD DC V(PRT0ERTN) @ ASYNC ERROR EXIT RTN Y02714 81930002 FRRTN DC V(IEAVGPRR) @ IEAVPRT0 FRR Y02714 81932002 EJECT 81970001 IKJTCB TCB 82040001 EJECT 82110001 CVT SYS=AOS2,OPTIONS=(TSLICE),TSO=YES,DSECT=YES,PREFIX=NO 82180001 EJECT 82250001 IHAGDA Y02714 82300002 IHALDA Y02714 82350002 EJECT 82390001 IHAFBQE FBQE 82600001 IHAPQE PQE 82670001 IHASPQE SPQE Y02714 82740002 IHADQE DQE 82810001 IHAFQE FQE 82860001 IHAWPQEL Y02714 82910002 IEFTCT Y02714 82960002 EJECT 83334302 IEZJSCB JOB STEP CONTROL BLOCK 83339402 EJECT 83354702 IHAPVT PVT Y02714 83364702 EJECT 83366702 IHAPSA FIXED LOW CORE AND PSA Y02714 83370002 EJECT 83440001 IHAFRRS FUNCTIONAL RECOVERY RTNS Y02714 83470002 EJECT 83480002 WORKAREA DSECT MAPPING OF CFAPWKAR Y02714 83490002 SAVEAREA DS 18F STANDARD SAVE AREA Y02714 83500002 VEQRWORK DS 4F WORK AREA FOR IEAVEQR Y02714 83500402 RINSAVE DS 16F INPUT SAVE AREA Y02714 83502002 DRINSAV EQU CFAPWKAR+88 RINSAV DISPLACEMENT FROM LDA Y02714 83502402 DRINSV15 EQU CFAPWKAR+148 DISPLACEMENT FROM LDA Y02714 83502802 REGSAVE DS 6F REGISTER SAVE AREA Y02714 83504002 RCSAVE DS H RETURN CODE SAVE AREA Y02714 83506002 VRPARMS DS 3F V=R PARAMETER LIST Y02714 83508002 FRRPARMS DS F @ OF PARM AREA FOR FRR Y02714 83508102 GPSW DS F SWITCHES BYTE Y02714 83508402 * SWITCHES BY BIT BYTE 0 83508802 * BIT0 = ADDRESS SPCE BIT BIT 4 = GETPART SPECIFIC REQUEST 83509202 * Q PROCESSING 83509602 * BIT 1 = POSTED- BIT 5 = FREEPART REQUEST 83509740 * SPECIFIC REQUEST 83523240 * BIT 2 = BYPASS V=R BIT 6 = V=R REQUEST 83526240 * ALLOCATION 83533202 * BIT 3 = CHECKING BIT 7 = SVC 4 REQUEST 83543202 * OF POST Q 83553202 * SWITCHES BY BIT BYTE 1 83555202 * BIT 0 = UNSUCCESSFUL V=R SCAN BIT 4 = UNUSED 83555602 * BIT 1 = UNUSED BIT 5 = UNUSED 83556002 * BIT 2 = START @S EQUAL IN GPS BIT 6 = UNUSED 83556402 * BIT 3 = UNUSED BIT 7 = UNUSED 83556502 FRPRT EQU X'04' FREEPART REQUEST @ZA08170 83561540 DGPSW EQU CFAPWKAR+196 DISPLACEMENT FROM LDA Y02714 83568102 SRREG DS F SYSTEM REGION SIZE Y02714 83570102 ALLOCVR DS F RSM V=R ALLOCATION E.P. Y02714 83572102 RSMFREE DS F RSM FREE REAL ROUTINE E.P. Y02714 83574102 SAVE1FRR DS F SAVE REG FOR FRR YM07262 83575102 ****THESE 2 ELEMENTS MUST ALWAYS BE LAST IN THE WORKAREA DSECT TO **** 83578102 ****ALLOW FOR EXPANSION OF THE SIZES TABLE. **** 83580102 SAVEFBQE DS F SAVE AREA FOR FBQE ADDRESSY02714 83580402 SIZES EQU SAVEFBQE+4 FBQE SIZES TO COMPARE FOR Y02714 83592002 * ALLOCATION OF V=R NON- 83602002 * SPECIFIC REQUESTS 83602402 EJECT 83603602 * * 83605602 * THIS DSECT MAPS THE SIX WORD FRR PARM AREA SUPPLIED BY THE SETFRR * 83607602 * * 83609602 RECOVERY DSECT Y02714 83613602 FRRFLAGS DS BL1 FOOTPRINTS FOR RECOVERY Y02714 83614002 RSMDONE EQU X'80' RSM ALLOCATION DONE FOR V=R Y02714 83614402 ASDONE EQU X'40' V=R REGION SUBTRACTED FROM Y02714 83614802 * ADDRESS SPACE QUEUES 83614902 CBGFLG EQU X'20' V=R CONTROL BLOCKS PROCESSING Y02714 83615002 FPFLG EQU X'04' FPCHK ENTERED Y02714 83621002 ZPFLG EQU X'02' ZEROPTRS ENTERED Y02714 83621402 GPFPFLG EQU X'01' ON-GETPART,OFF-FREEPART Y02714 83621502 FRRFLGS2 DS BL1 83621602 DEQFLG EQU X'80' DEQUEUE IN PROCESS Y02714 83621702 WENQFLG EQU X'40' WAIT EL ENQUEUE IN PROCESS Y02714 83625002 PENQFLG EQU X'20' POST EL ENQUEUE IN PROCESS Y02714 83627002 VEQRDONE EQU X'10' V=R REGION SUBTRACTED FROM Y02714 83627102 * V=R QUEUES 83627202 DS BL2 83627402 REGSIZE DS F REGION SIZE REQUESTED Y02714 83627802 REGADD DS F REGION START ADDRESS Y02714 83628202 LDAADD DS F LDA ADDRESS Y02714 83628302 RW1SAVE DS F SAVE AREA FOR REG 10 Y02714 83628402 PRT0BASE DS F FIRST PRT0 BASE REGISTER YM07262 83628502 EJECT 83635102 IEAVPRT0 CSECT 83638402 * REGISTER EQUATES 83641402 RIN0 EQU 0 INPUT REGISTER 0 83644402 SEGNDX EQU 0 SEGMENT INDEX REGISTER 83650001 RLENGTH EQU 0 REGISTER CONTAINING LENGTH 83720001 REG0 EQU 0 REGISTER 0 83790001 RIN1 EQU 1 INPUT REGISTER 1 83860001 REG1 EQU 1 WORK REGISTER 1 83930002 RDQE EQU 1 DQE REGISTER 84000001 ELBASE EQU 1 BASE FOR WAIT/POST ELS Y02714 84120002 LIM EQU 1 PARM FOR USER EXIT 84125002 CTR EQU 2 COUNTER Y02714 84130002 REGSTART EQU 2 START OF REGION Y02714 84132002 RADDR EQU 2 ADDRESS REGISTER 84140001 RCVT EQU 3 CVT REGISTER 84210001 RGDA EQU 3 GDA BASE Y02714 84260002 RLDA EQU 4 LDA BASE Y02714 84270002 RSPID EQU 5 SUBPOOL ID REGISTER 84350001 RWORK4 EQU 5 WORK REGISTER 4 84420001 SIZEREG EQU 6 SIZE REGISTER 84490001 RWORK5 EQU 6 WORK REGISTER Y02714 84540002 NEXT EQU 6 NEXT EL ON QUEUE Y02714 84550002 FIRSTSAV EQU 6 @ 1ST EL ON WAIT QUEUE Y02714 84552002 PQEREG EQU 7 BASE FOR PQE 84604002 GMBASE EQU 8 GETMAIN BASE 84700001 RTCB EQU 8 TCB BASE Y02714 84750002 SEGREG EQU 9 SEGMENT ADDRESS REGISTER 84980001 RBASE2 EQU 9 TEMPORARY BASE REG Y02714 85030002 RWORK1 EQU 10 WORK REGISTER 1 85190001 FBQEREG EQU 10 FBQE BASE Y02714 85240002 RBASE EQU 11 GETPART BASE 85400001 RWORK2 EQU 12 WORK REGISTER 2 85470001 REGEND EQU 12 REGION END Y02714 85590002 REG12 EQU 12 REGISTER 12 Y06736 85596002 REG13 EQU 13 REGISTER 13 Y06736 85602002 RWORK3 EQU 13 WORK REGISTER 3 85610001 RSPQE EQU 13 SPQE REGISTER 85750001 GMBASE2 EQU 13 GETMAIN BASE 2 85890001 RRETURN EQU 14 RETURN REGISTER 85960001 REG14 EQU 14 CFAPWKAR BASE Y02714 86010002 REG15 EQU 15 REGISTER 15 Y06736 86015002 RTCT EQU 15 TCT BASE Y02714 86020002 RWORK15 EQU 15 WORK REGISTER Y02714 86022002 RBRANCH EQU 15 BRANCH REGISTER 86030001 RRETREG EQU 15 RETURN REGISTER 86100001 RSIZE EQU 15 SIZE REGISTER 86170001 * GENERAL EQUATES 86240001 CVTNRMBR EQU CVTCRMN 86290002 GPRETURN EQU UNLOCK LABEL FOR FRR USE Y02714 86300002 REGSAVE2 EQU REGSAVE+4 SECOND WORD OF REGISTER SAVE 86310001 REGSAVE3 EQU REGSAVE+8 THIRD WORD OF REGISTER SAVE 86380001 REGSAVE4 EQU REGSAVE+12 FOURTH WORD OF INPUT SAVE 86450001 REGSAVE5 EQU REGSAVE+16 FIFTH WORD OF REGISTER SAVE 86520001 REGSAVE6 EQU REGSAVE+20 SIXTH WORD OR REGISTER SAVE 86590001 RINSAVE3 EQU RINSAVE+8 THIRD WORD OF INPUT SAVE 86660001 RINSAVE4 EQU RINSAVE+12 SAVE AREA FOR REG 1 86730001 RINSAV14 EQU RINSAVE+56 86850002 RINSAV15 EQU RINSAVE+60 86860002 HIBITON EQU DEFAULT FLAG HIGH BIT FOR POST PARM. 86865002 RC0 EQU 0 RETURN CODE OF 0 86870001 RC4 EQU 4 RETURN CODE OF 4 86940001 RC8 EQU 8 RETURN CODE OF 8 87010001 RC12 EQU 12 RETURN CODE OF 12 Y02714 87060002 RC16 EQU 16 RETURN CODE OF 16 87080001 RC20 EQU 20 RETURN CODE OF 20 87150001 SPADDR EQU 24 SPECIFIC ADDRESS Y02714 87200002 RC24 EQU 24 REG REQUEST TOO BIG 87205002 ELSIZE EQU 20 SIZE OF REQUEST Y02714 87210002 FLWD EQU 4 LENGTH OF FULLWORD 87220001 BRENTRY EQU 6 DISP FOR BRANCH ENTRY OF POST 87290001 VVSPID EQU 247 V=V SUBPOOL ID 87360001 SP255 EQU X'FF' LSQA SUBPOOL Y02714 87400002 SP245 EQU X'F5' SQA SPID Y02714 87440002 VVPQE EQU 12 DISPLACEMENT FOR V=V PQE 87500001 C16 EQU 16 DISPLACEMENT CONSTANT Y06736 87530002 VRPQE EQU 8 DISPLACEMENT FOR V=R PQE 87570001 FSTBYTE EQU 0 FIRST BYTE OF A WORD 87640001 BYTES3 EQU 3 THREE BYTES Y02714 87690002 SNDBYTE EQU 1 SECOND BYTE OF A WORD Y02714 87692002 HIGHBYTE EQU 24 FOR SHIFT Y02714 87700002 PARMS EQU 24 SIZE OF FRR PARMS Y02714 87700402 ELEVEN EQU 11 FOR 2K SHIFT Y02714 87702002 TWELVE EQU 12 FOR 4K SHIFT Y02714 87704002 FSTWORD EQU 0 FIRST WORD AT AN ADDRESS 87710001 SNDWORD EQU 4 SECOND WORD AT AN ADDRESS 87780001 SVCFOUR EQU 4 SVC 4 87850001 PAGERND EQU 4095 PAGE ROUNDING FACTOR 87990001 VRPARMS1 EQU VRPARMS FIRST V=R PARAMETER 88550001 VRPARMS2 EQU VRPARMS+4 SECOND V=R PARAMETER 88620001 VRPARMS3 EQU VRPARMS+8 THIRD V=R PARAMETER 88690001 BIGPSW EQU GPSW+1 SECOND BYTE OF GPSW 88970001 VERREQ EQU X'02' V=R INDICATOR 89180001 SVC4SW EQU X'01' SVC 4 INDICATOR 89250001 LASTENT EQU X'80' LAST ENTRY INDICATOR 89530002 GPSSW EQU X'08' GETPART SPECIFIC SWITCH 89670001 PSPEC EQU X'40' POSTED SPECIFIC REQUEST Y02714 90070002 POSTCHK EQU X'10' CHECK TO POST REQUESTS Y02714 90080002 UNCSCAN EQU X'80' UNSUCCESSFUL SCAN 90160001 BRBIT EQU X'04' BRANCH ENTRY INDICATOR 90230001 STADDRE EQU X'20' START @'S EQUAL INDICATOR 90300001 ALOCPASS EQU X'20' BYPASS ALLOCATION Y02714 90350002 BRFLG EQU X'80' INDICATE BRANCH ENTRY IN LIST 90370001 ASQFLAG EQU X'80' A.S. QUEUE PROCESSING Y02714 90492002 VRORAS EQU X'82' V=R & AS PROCESSING Y02714 90501002 FIXDPAGE EQU X'A0A' COMPLETION CODE FOR MEMTERM 90505002 CVTADDR EQU CVTPTR LOCATION OF CVT ADDRESS 90510001 POSTCD4 EQU 4 POST CODE 90790001 MASK8 EQU 8 MASK FOR HIGH BYTE OF A REG 91070001 MASK7 EQU 7 MASK FOR LAST THREE BYTES 91140001 D20 EQU 20 DISPLACEMENT INTO WKAR @Z30ENYG 91240003 END 91350001