* %GOTO PFTEPLS; /* 00050002 MACRO 00100002 IHAPFTE &DSECT=YES 00150002 AGO .PFTBIT DO NOT GENERATE PROLOGUE 00200002 *********************************************************************** 00250002 * * 00300002 * STATUS - * 00350002 * CHANGE LEVEL 1 * 00400003 * FUNCTION - * 00450002 * MAPPING MACRO FOR PFTE * 00500002 * ENTRY POINTS - * 00550002 * IHAPFTE MACRO CALL * 00600002 * INPUT - * 00650002 * SEE IHAPFTE MACRO DEFINITION * 00700002 * OUTPUT - * 00750002 * PFTE MAPPING MACRO * 00800002 * EXTERNAL REFERENCES - * 00850002 * N/A * 00900002 * EXITS, NORMAL - * 00950002 * N/A * 01000002 * EXITS, ERROR - * 01050002 * N/A * 01100002 * TABLES/WORK AREAS - * 01150002 * N/A * 01200002 * ATTRIBUTES - * 01250002 * BILINGUAL MACRO * 01300002 * CHARACTER CODE DEPENDENCY - * 01350002 * NONE * 01400002 * CHANGE-ACTIVITY - * 01410043 * OZ31128 @ZA31128* 01420043 * NOTES - * 01450002 * NONE * 01500002 * * 01550002 *********************************************************************** 01600002 .PFTBIT ANOP 01650002 IEZBITS , - DEFINE BITS 01700002 *********************************************************************** 01750002 ** PAGE FRAME TABLE ENTRY 4/6/78 * 01770043 ** * 01790043 ** THIS MACRO SUPPORTS: SU33 @ZA31128* 01810043 ** * 01850002 ** * 01900002 ** ALL PFTES ARE CONTIGUOUS AND ARE LOCATED VIA DIRECT INDEX * 01950002 ** ON THE HIGH ORDER 12 BITS OF ANY REAL ADDRESS. (THESE 12 * 02000002 ** BITS = PAGE FRAME NUMBER.) THE PAGE FRAME TABLE ENTRY * 02050002 ** INDEX = PAGE FRAME NUMBER TIMES 16 (4 LOW ORDER BINARY ZEROS). * 02100002 *********************************************************************** 02150002 AIF ('&DSECT' EQ 'YES').PFT001 IS DSECT WANTED 02200002 PFTE DS 0F 02250002 AGO .PFT002 BRANCH AROUND DSECT 02300002 .PFT001 ANOP GEN THE DESECT 02350002 PFTE DSECT , PFTEPTR 02400002 .PFT002 ANOP 02450002 PFTPGID DS 0F AN IDENTIFIER OF THE VIRTUAL PAGE 02500002 * CURRENTLY OCCUPYING THIS FRAME. 02550002 * IF PFTIRRG IS 0, THIS FIELD IS 02600002 * SUBDIVIDED INTO PFTASID AND PFTVBN. 02650002 PFTASID DS XL2 - THE ASID OF THE PAGE CURRENTLY 02700002 * OWNING THE FRAME 02750002 PFTVBN DS XL2 - VIRTUAL BLOCK NUMBER (HIGH 02800002 * ORDER 12 BITS OF 24 BIT VIRTUAL 02850002 * ADDRESS, LEFT ADJUSTED AND PADDED WITH 02900002 * 4 LOW ORDER BINARY ZEROS) CURRENTLY 02950002 * OWNING THE REAL FRAME. 03000002 PFTQPTRS DS 0F WORD CONTAINING PFTFQPTR AND PFTBQPTR 03050002 PFTFQPTR DS H - FORWARD PAGE FRAME QUEUE POINTER 03100002 * - THE PFTE INDEX OF THE NEXT ENTRY 03150002 * ON THIS PFQ 03200002 PFTBQPTR DS H - BACKWARD PAGE FRAME QUEUE POINTER 03250002 * - THE PFTE INDEX OF THE PREVIOUS 03300002 * ENTRY ON THIS PFQ 03350002 PFTFXCT DS H - FIX COUNT OF THIS FRAME 03400002 PFTRSV1 DS XL2 - RESERVED 03450002 PFTFLAGS DS 0CL2 - TWO PFTE FLAGS @G33VPOD 03460043 PFTFLAG1 DS BL1 - FIRST FLAG FIELD 03500002 PFTONAVQ EQU BIT0 - AVAILABLE FRAME QUEUE FLAG. WHEN 1, 03550002 * THIS PFTE IS ON AVAILABLE PFQ 03600002 PFTVRINT EQU BIT1 - WHEN 1, PFTE INTERCEPTED FOR V=R 03650002 PFTLSQA EQU BIT2 - SQA/LSQA FLAG, WHEN 1, PAGE FRAME 03700002 * CONTAINS AN LSQA OR SQA PAGE. IF 03750002 * PFTASID=X'FFFF' THE FRAME CONTAINS A 03800002 * SQA PAGE. 03850002 PFTVRPLT EQU BIT3 - V=R AREA POLLUTED FLAG, WHEN 1, A 03900043 * REQUEST FOR A PREFERRED AREA FRAME WAS 03920043 * SATISFIED WITH THIS V=R FRAME. @ZA31128 03940043 PFTPCBSI EQU BIT4 - PCB DEFINED FOR THIS PAGE FLAG, WHEN 04000002 * 1, A PCB EXISTS FOR THIS PAGE. 04050002 PFTBADPG EQU BIT5 - BAD PAGE FRAME FLAG, WHEN 1, THIS PAGE 04100002 * FRAME MAY NOT BE ALLOCATED. 04150002 PFTVRALC EQU BIT6 - V = R ALLOCATED FLAG, WHEN 1, PFTE 04200002 * HAS BEEN ALLOCATED FOR A V=R REGION 04250002 PFTOFINT EQU BIT7 - WHEN 1, FRAME IS INTERCEPTED TO 04300002 * GO OFFLINE 04350002 PFTFLAG2 DS BL1 - SECOND FLAG FIELD 04400002 PFTDFRLS EQU BIT0 - DEFERRED RELEASE FLAG, WHEN 1, RELEASE 04450002 * HAS BEEN DEFERRED UNTIL THIS PAGE HAS 04500002 * BEEN FREED (PFTFXCT=0). 04550002 PFTOFFLN EQU BIT1 - FRAME ONLINE/OFFLINE FLAG, WHEN 1, 04600002 * FRAME IS OFFLINE 04650002 PFTVR EQU BIT2 - V=R CANDIDATE, WHEN 1, FRAME MAY BE 04700002 * ALLOCATED TO A V=R REGION 04750002 PFTIRRG EQU BIT3 - WHEN 1, INDICATES A VIO FRAME 04800002 PFTSTEAL EQU BIT4 - WHEN 1, INDICATES THIS PFTE SELECTED 04810002 * FOR STEALING, BUT HAS NOT BEEN STOLEN 04820002 * YET. 04830002 PFTPREF EQU BIT5 - WHEN 1, INDICATES PFTE IN THE PREFERRED 04836003 * AREA @YD03005 04842003 PFTQNDX DS CL1 - PFT QUEUE INDEX 04850002 PFTAFQN EQU X'00' - PFTE ON AVAILABLE QUEUE 04900002 PFTSRQN EQU X'04' - PFTE ON SQA RESERVED QUEUE 04950002 PFTCFQN EQU X'08' - PFTE ON COMMON FRAME QUEUE 05000002 PFTSQAN EQU X'0C' - PFTE ON SQA FRAME QUEUE 05050002 PFTRSBQN EQU X'10' - PFTE ON REAL STORAGE BUFFER (RSB) 05060043 * FRAME QUEUE @G33VPOD 05070043 PFTLFQN EQU X'80' - PFTE ON LOCAL FRAME QUEUE 05100002 PFTLSQAN EQU X'84' - PFTE ON LSQA FRAME QUEUE 05150002 PFTNQN EQU X'FF' - PFTE NOT QUEUED 05250002 PFTUIC DS FL1 - NUMBER OF STEAL INTERVALS DURING WHICH 05300002 * THIS FRAME WAS NOT REFERENCED 05350002 PFTEND DS 0C - END OF PAGE FRAME TABLE ENTRY 05400002 PFTLEN EQU PFTEND-PFTE - LENGTH OF PAGE TABLE ENTRY 05450002 MEND , */ 05500002 *%PFTEPLS : ; 05550002 * /*******************************************************************/ 05600002 * /* PAGE FRAME TABLE ENTRY 4/6/78 */ 05620043 * /* */ 05640043 * /* THIS MACRO SUPPORTS: SU33 @ZA31128*/ 05660043 * /* */ 05700002 * /* */ 05750002 * /* ALL PFTES ARE CONTIGUOUS AND ARE LOCATED VIA DIRECT INDEX */ 05800002 * /* ON THE HIGH ORDER 12 BITS OF ANY REAL ADDRESS. (THESE 12 */ 05850002 * /* BITS = PAGE FRAME NUMBER.) THE PAGE FRAME TABLE ENTRY */ 05900002 * /* INDEX = PAGE FRAME NUMBER TIMES 16 (4 LOW ORDER BINARY ZEROS). */ 05950002 * /*******************************************************************/ 06000002 *DCL 06005002 * PFTAFQN BIT(8) CONSTANT('00'X), /* PFTE ON AVAILABLE QUEUE */ 06010002 * PFTSRQN BIT(8) CONSTANT('04'X), /* PFTE ON SQA RESERVE QUEUE */ 06015002 * PFTCFQN BIT(8) CONSTANT('08'X), /* PFTE ON COMMON FRAME QUEUE */ 06020002 * PFTSQAN BIT(8) CONSTANT('0C'X), /* PFTE ON SQA FRAME QUEUE */ 06025002 * PFTRSBQN BIT(8) CONSTANT('10'X), /* PFTE ON REAL STORAGE BUFFER 06026043 * (RSB) FRAME QUEUE @G33VPOD*/ 06027043 * PFTLFQN BIT(8) CONSTANT('80'X), /* PFTE ON LOCAL FRAME QUEUE */ 06030002 * PFTLSQAN BIT(8) CONSTANT('84'X), /* PFTE ON LSQA FRAME QUEUE */ 06035002 * PFTNQN BIT(8) CONSTANT('FF'X); /* PFTE NOT QUEUED. */ 06040002 * %IF PFT9999^=',' /* IS BLOCK PART OF STRUCTURE */ 06050002 * %THEN %PFT9999=';'; /* NO, END BLOCK NORMALLY */ 06100002 * %IF PFTLEVEL^='' /* INITIAL LEVEL NUMBER GIVEN */ 06150002 * %THEN %GOTO PFTPLS1; /* YES THEN DO NOT GEN 1 LEVEL */ 06200002 *%PFTPLS0: ; 06206002 * /*******************************************************************/ 06212002 * /* PFTE MAPPING */ 06220002 * /*******************************************************************/ 06230002 *DECLARE 06250002 * 1 PFTE BASED(PFTEPTR) 06300002 * %GOTO PFTPLS2; /*SKIP USER-GIVEN LEVEL */ 06350002 *%PFTPLS1: PFTDUM=PFTLEVEL||' PFTE'; 06400002 * PFTDUM 06450002 *%PFTPLS2:; 06500002 * BDY (WORD), 06550002 * 4 PFTPGID FIXED(32), /* AN IDENTIFIER OF THE VIRTUAL 06600002 * PAGE CURRENTLY OCCUPYING THIS 06650002 * FRAME. IF PFTIRRG IS 0, THIS 06700002 * FIELD IS SUBDIVIDED INTO 06750002 * PFTASID AND PFTVBN. */ 06800002 * 8 PFTASID FIXED(16), /* THE ASID OF THE PAGE CURRENTLY 06850002 * OWNING THIS FRAME */ 06900002 * 8 PFTVBN BIT(16), /* VIRTUAL BLOCK NUMBER (HIGH 06950002 * ORDER 12 BITS OF 24 BIT VIRTUAL 07000002 * ADDRESS, LEFT ADJUSTED AND 07050002 * PADDED WITH 4 LOW-ORDER BINARY 07100002 * ZEROES) CURRENTLY OWNING THE 07150002 * FRAME. */ 07200002 * 4 PFTQPTRS BIT(32), /* WORD CONTAINING PFTFQPTR AND 07250002 * PFTBQPTR */ 07270002 * 8 PFTFQPTR BIT(16), /* FORWARD PAGE FRAME QUEUE 07300002 * POINTER - THE PFTE INDEX OF 07350002 * THE NEXT ENTRY ON THIS PFQ */ 07400002 * 8 PFTBQPTR BIT(16), /* BACKWARD PAGE FRAME QUEUE 07450002 * POINTER - THE PFTE INDEX OF 07500002 * THE PREVIOUS FRAME */ 07550002 * 4 PFTFXCT FIXED(15), /* FIX COUNT OF THIS FRAME */ 07600002 * 4 PFTRSV1 CHAR(2), /* RESERVED */ 07650002 * 4 PFTFLAGS CHAR(2), /* TWO FLAG FIELDS @G33VPOD*/ 07655043 * 8 PFTFLAG1 BIT(8), /* FIRST FLAG FIELD */ 07670043 * 12 PFTONAVQ BIT(1), /* AVAILABLE FRAME QUEUE FLAG. 07700043 * WHEN 1, THIS PFTE IS ON 07800002 * AVAILABLE PFQ */ 07850002 * 12 PFTVRINT BIT(1), /* WHEN 1, PFTE INTERCEPTED FOR 07870043 * USE IN A V=R REGION */ 07950002 * 12 PFTLSQA BIT(1), /* SQA/LSQA FLAG, WHEN 1, PAGE 07970043 * FRAME CONTAINS AN LSQA OR SQA 08050002 * PAGE. IF PFTASID=X'FFFF' THE 08100002 * FRAME CONTAINS A SQA PAGE. */ 08150002 * 12 PFTVRPLT BIT(1), /* V=R AREA POLLUTED FLAG, WHEN 1, 08170043 * A REQUEST FOR A PREFERRED AREA 08190043 * FRAME WAS SATISFIED WITH THIS 08210043 * V=R FRAME. @ZA31128*/ 08230043 * 12 PFTPCBSI BIT(1), /* PCB DEFINED FOR THIS PAGE 08270043 * FLAG, WHEN 1, A PCB EXISTS 08350002 * FOR THIS PAGE */ 08400002 * 12 PFTBADPG BIT(1), /* BAD PAGE FRAME FLAG. WHEN 1, 08420043 * THIS PAGE FRAME MAY NOT BE 08500002 * ALLOCATED. */ 08550002 * 12 PFTVRALC BIT(1), /* V = R ALLOCATED FLAG, WHEN 1, 08570043 * FRAME IS ALLOCATED TO A 08650002 * V=R REGION */ 08700002 * 12 PFTOFINT BIT(1), /* OFFLINE INTERCEPT FLAG. WHEN 08720043 * 1, THE FRAME IS INTERCEPTED 08800002 * TO GO OFFLINE */ 08850002 * 8 PFTFLAG2 BIT(8), /* SECOND FLAG FIELD */ 08870043 * 12 PFTDFRLS BIT(1), /* DEFERRED RELEASE FLAG, WHEN 1, 08900043 * RELEASE HAS BEEN DEFERRED 09000002 * UNTIL THIS PAGE HAS BEEN FREED 09050002 * (PFTFXCT=0). */ 09100002 * 12 PFTOFFLN BIT(1), /* FRAME ONLINE/OFFLINE FLAG, WHEN 09120043 * 1, FRAME IS OFFLINE */ 09200002 * 12 PFTVR BIT(1), /* V=R CANDIDATE, WHEN 1, FRAME 09220043 * MAY BE ALLOCATED TO A V=R 09300002 * REGION */ 09350002 * 12 PFTIRRG BIT(1), /* WHEN 1, INDICATES A VIO FRAME */ 09370043 * 12 PFTSTEAL BIT(1), /* WHEN 1, THIS PFTE SELECTED FOR 09400043 * STEALING, BUT HAS NOT BEEN 09460002 * STOLEN YET. */ 09470002 * 12 PFTPREF BIT(1), /* WHEN 1, PFTE IS IN THE PREFERRED 09480043 * AREA @YD03005*/ 09520003 * 12 * BIT(1), /* RESERVED */ 09530043 * 12 * BIT(1), /* RESERVED */ 09550043 * 4 PFTQNDX CHAR(1), /* PFT QUEUE INDEX */ 09650002 * 4 PFTUIC FIXED(8) PFT9999 /* NUMBER OF STEAL INTERVALS 10550002 * DURING WHICH THIS FRAME WAS 10600002 * NOT REFERENCED */ 10650002 * %PFTLEN='LENGTH(PFTE)'; /* LENGTH OF PFTE */ 10700002