* %GOTO PCBPLS; /* 00050002 MACRO 00100002 IHAPCB &DSECT=YES 00150002 IEZBITS 00200002 AGO .PCBARND 00250002 *********************************************************************** 00300002 * * 00350002 * STATUS - * 00400002 * CHANGE LEVEL 1 - VS2 RELEASE 2 VERSION * 00450002 * FUNCTION - * 00500002 * MAPPING MACRO FOR PAGE CONTROL BLOCK * 00550002 * ENTRY POINTS - * 00600002 * IHAPCB MACRO CALL * 00650002 * INPUT - * 00700002 * SEE IHAPCB MACRO DEFINITION * 00750002 * OUTPUT - * 00800002 * PCB MAPPING MACRO * 00850002 * EXTERNAL REFERENCES - * 00900002 * N/A * 00950002 * EXITS, NORMAL - * 01000002 * N/A * 01050002 * EXITS, ERROR - * 01100002 * N/A * 01150002 * TABLES/WORK AREAS - * 01200002 * N/A * 01250002 * ATTRIBUTES - * 01300002 * BILINGUAL MACRO * 01350002 * CHARACTER CODE DEPENDENCY - * 01400002 * NONE * 01450002 * NOTES - * 01500002 * NONE * 01550002 * * 01600002 *********************************************************************** 01650002 .PCBARND ANOP 01700002 *********************************************************************** 01750002 ** PAGE CONTROL BLOCK 4/11/75 * 01800040 ** * 01850002 ** ONE PCB EXISTS FOR EACH VIRTUAL PAGE FOR WHICH A PAGING I/O * 01900002 ** OPERATION MAY BE REQUIRED. PCB'S ARE ON QUEUES ANCHORED * 01950002 ** IN THE PVT AND RSMHD. * 02000002 *********************************************************************** 02050002 AIF ('&DSECT' EQ 'NO').PCB001 02100002 PCB DSECT , PCBPTR 02150002 AGO .PCB002 02200002 .PCB001 ANOP 02250002 PCB DS 0F 02300002 .PCB002 ANOP 02350002 PCBFQP DS 0F - FULLWORD REFERENCE FOR FORWARD POINTER 02400002 PCBCQN DS CL1 - CURRENT QUEUE NUMBER 02450002 PCBFREQN EQU X'10' - PCB ON FREE QUEUE 02500002 PCBDEFRN EQU X'18' - PCB ON GFA DEFER QUEUE 02550002 PCBCIOQN EQU X'20' - PCB ON COMMON I/O ACTIVE QUEUE 02600002 PCBLIOQN EQU X'88' - PCB ON LOCAL I/O ACTIVE QUEUE @Z40WPYD 02650040 PCBDEQN EQU X'FF' - NOT CURRENTLY QUEUED 02700002 PCBFQPA DS AL3 - FORWARD QUEUE POINTER 02750002 PCBBQP DS 0F - FULLWORD REFERENCE FOR BACKWARD PTR 02800002 PCBBQPA DS A - BACKWARD QUEUE POINTER 02900002 PCBRTP DS 0F - FULLWORD REFERENCE FOR ROOT PCB PTR 02950002 PCBFL1 DS BL1 - FIRST FLAG FIELD 03000002 * EQU BIT0 - RESERVED. @Z40WPYD 03020040 PCBPEX EQU BIT1 - PAGE EXCEPTION FLAG, WHEN 1 = THIS PCB 03200002 * IS FOR A PAGE FAULT INTERUPTION 03250002 PCBSRBMD EQU BIT2 - SRB MODE FLAG 03300002 * WHEN = 1 PCB IS FOR SRB PAGE FAULT 03350002 * PROCESSING. PCBSRB CONTAINS AN 03400002 * SRB ADDRESS. 03450002 PCBLLHLD EQU BIT3 - THE LOCAL LOCK HELD FLAG. 03500002 * WHEN = 1 LOCAL LOCK WAS HELD WHEN 03550002 * PAGE FAULT OCCURRED. 03600002 PCBLFR EQU BIT4 - LONG FIX REQUEST FLAG 03650002 PCBROOT EQU BIT5 - WHEN 1 INDICATES THAT PCBRTPA IS A 03700002 * ROOT PCB POINTER, WHEN 0 INDICATES 03750002 * THAT PCBRTPA IS A TCB POINTER 03800002 PCBIOI EQU BIT6 - INPUT-OUTPUT FLAG. WHEN 1 = 03850002 * PAGE OUT, WHEN 0 = PAGE IN 03900002 PCBIOCMP EQU BIT7 - WHEN 1 = PAGING I/O COMPLETE FOR THIS 03950002 * PCB. 04000002 PCBRTPA DS AL3 - ROOT PCB POINTER/TCB POINTER 04050002 * CONTENTS DETERMINED BY PCBROOT FLAG 04100002 PCBRLP DS 0F - FULLWORD REFERENCE FOR RELATED 04150002 * PCB POINTER 04200002 PCBFXC DS FL1 - FIX COUNT 04250002 PCBRLPA DS AL3 - RELATED PCB POINTER 04300002 PCBXPT DS 0F - FULLWORD REFERENCE FOR XPTE PTR 04350002 PCBFL2 DS BL1 - SECOND FLAG FIELD 04400002 PCBFREAL EQU BIT0 - FREE REAL FLAG. WHEN 1, THIS FLAG 04450002 * INDICATES THAT THE REAL FRAME 04500002 * ASSOCIATED WITH THE PCB SHOULD BE 04550002 * BE FREED AT I/O COMPLETION. 04650002 PCBGFAD EQU BIT1 - GFA DEFER PRCESSOR SCHEDULED FLAG 04750002 * WHEN 1, GFA DEFER PROCESSOR HAS BEEN 04800002 * SCHEDULED FOR THIS PCB. 04850002 PCBIOERR EQU BIT2 - PERMANENT I/O ERROR FLAG. 04900002 * WHEN 1 A PAGING I/O OPERATION HAS 04950002 * FAILED BECAUSE OF A PERMANENT I/O 05000002 * ERROR 05050002 PCBRESET EQU BIT3 - RESET FLAG. WHEN 1, CALL RESET FOR PCB. 05100002 PCBSUPRS EQU BIT4 - SUPPRESS FRAME PROCESSING. IGNORE 05150002 * PCBFREAL,PCBRBN AND ASSOCIATED PFTE. 05160002 PCBVIO EQU BIT5 - THIS PCB IS FOR A VIO MOVE-OUT. 05200040 * @Z40WPYD 05210040 * EQU BIT6 - RESERVED 05250002 * EQU BIT7 - RESERVED 05300002 PCBXPTA DS AL3 - VIRTUAL MEMORY ADDRESS OF 05350002 * EXTERNAL PAGE TABLE ENTRY 05400002 PCBPGT DS 0F FULL WORD REFERENCE FOR PAGE TABLE ADDR 05450002 PCBFL3 DS BL1 - THIRD FLAG FIELD 05500002 PCBSWPOT EQU BIT0 - SWAP-OUT FLAG 05550002 PCBSWPIN EQU BIT1 - SWAP-IN PRIVATE AREA PAGE FLAG 05600002 PCBSWPS1 EQU BIT2 - STAGE 1 SWAP-IN FLAG 05650002 PCBSWPLS EQU BIT3 - SWAP-IN LSQA PAGE FLAG 05700002 PCBDFRLS EQU BIT4 - SWAP-IN DEFERRED RELEASE FLAG. THE 05710002 * SWIN ROOT EXIT MUST SET PFTDFRLS TO 1. 05720002 PCBNOREC EQU BIT5 - NO RECLAIM FLAG, VALID ONLY IF 05720540 * PCBIOI=1. WHEN 1, PAGE-OUT IS NOT TO 05721040 * BE RECLAIMED. WHEN 0, RECLAIM IS ALLOW- 05721540 * ED. @Z40WPYD 05722040 * EQU BIT6 - RESERVED @Z40WPYD 05722540 PCBSWPS2 EQU BIT7 - WHEN 1, PCB IS FOR A STAGE 2 SWAP-IN. 05746040 * @Z40WPYD 05748040 PCBPGTA DS AL3 - VIRTUAL MEMORY ADDRESS OF 05750002 * PAGE TABLE ENTRY 05800002 PCBRBN DS AL2 - REAL CORE BLOCK NUMBER (LEFT 05850002 * ADJUSTED WITH 4 LOW ORDER ZEROES.) 05900002 PCBVBN DS AL2 - VIRTUAL MEMORY BLOCK NUMBER (LEFT 05950002 * ADJUSTED WITH 4 LOW ORDER ZEROES.) 06000002 * IF THIS VALUE IS ZERO, NO PGTE 06050002 * VALIDATION WILL BE PERFORMED. 06100002 PCBBLOCK DS 0F - MULTI USE FIELD, SEE BELOW. @Z40WPYD 06104040 PCBSRB DS 0F - IF PCBSWPOT=1 AND PCBSRBMD=1 THEN FIELD 06108040 * CONTAINS ADDRESS OF PAGE FAULTING SRB. 06112040 * @Z40WPYD 06116040 PCBRB DS 0F - IF PCBPEX=1 AND PCBSRBMD=0 THEN FIELD 06120040 * CONTAINS ADDRESS OF PAGE FAULTING RB. 06124040 * @Z40WPYD 06128040 PCBSPCTE DS AL4 - IF PCBSWPOT=1 OR PCBSWPS1=1 AND VBN IN 06132040 * PRIVATE AREA,THEN FIELD CONTAINS ADDRESS 06136040 * OF A SPCTSWPE. @Z40WPYD 06140040 PCBASCB DS AL4 - THE ADDRESS OF THE ADDRESS SPACE CONTROL 06500002 * BLOCK (ASCB) OF THE REQUESTOR WHO CAUSED 06550002 * THE PCB TO BE BUILT. 06600002 PCBAIA DS CL28 - THE ASM I/O REQUEST AREA (AIA) 06700040 * WHICH IS ALWAYS PART OF THE PCB. THE 06750002 * AREA IS MAPPED BY THE ILRAIA MACRO. 06800002 PCBEND EQU * - END OF PCB. @Z40WPYD 06820040 PCBLEN EQU *-PCB LENGTH OF PAGE CONTROL BLOCK 06850002 MEND , */ 06900002 *%PCBPLS : ; 06950002 * /*******************************************************************/ 07000002 * /* PAGE CONTROL BLOCK 4/11/75 */ 07050040 * /* */ 07100002 * /* ONE PCB EXISTS FOR EACH VIRTUAL PAGE FOR WHICH A PAGING I/O */ 07150002 * /* OPERATION MAY BE REQUIRED. PCB'S ARE ON QUEUES ANCHORED */ 07200002 * /* IN THE PVT AND RSMHD. */ 07250002 * /*******************************************************************/ 07300002 *DCL /* DEFINE VALUES OF PCBCQN FIELD */ 07310002 * PCBFREQN BIT(8) CONSTANT('10'X), /* PCB ON FREE QUEUE */ 07320002 * PCBDEFRN BIT(8) CONSTANT('18'X), /* PCB ON GFA DEFER QUEUE */ 07330002 * PCBCIOQN BIT(8) CONSTANT('20'X), /* PCB ON COMMON I/O QUEUE */ 07340002 * PCBLIOQN BIT(8) CONSTANT('88'X), /* PCB ON LOCAL I/O QUEUE 07342040 * @Z40WPYD */ 07342640 * PCBDEQN BIT(8) CONSTANT('FF'X); /* PCB IS NOT CURRENTLY QUEUED */ 07344002 * %IF PCB9999 ^= ',' /* IF THIS IS LAST BLOCK */ 07350002 * %THEN %PCB9999 = ';'; /* THEN CLOSE DCL STATEMENT */ 07400002 * %IF PCBLEVEL ^= '' /* IF THIS IS CONCATENATED */ 07450002 * %THEN %GOTO PCBPLS1; /* THEN SKIP DCL */ 07500002 *%PCBPLS0:; 07505002 * /*******************************************************************/ 07510002 * /* PCB MAPPING */ 07520002 * /*******************************************************************/ 07530002 *DCL 1 PCB BASED (PCBPTR) /* DECLARE PCB LEVEL 1 */ 07550002 * %GO TO PCBPLS2; /* AND SKIP LEVEL TWO DCL */ 07600002 *%PCBPLS1: PCBDUM=PCBLEVEL||' PCB'; /* SET LEVEL FOR MINOR STRUCTURE */ 07650002 * PCBDUM /* MINOR STRUCTURE NAME PARM */ 07700002 *%PCBPLS2:; 07750002 * BDY(WORD), 07800002 * 4 PCBFQP PTR(31), /* FULLWORD REFERENCE FOR 07850002 * FORWARD POINTER */ 07900002 * 8 PCBCQN PTR(8), /* CURRENT QUEUE NUMBER */ 07950002 * 8 PCBFQPA PTR(24), /* FORWARD QUEUE POINTER */ 08500002 * 4 PCBBQP PTR(31), /* BACKWARD QUEUE POINTER */ 08550002 * 8 PCBBQPA PTR(31), /* BACKWARD QUEUE POINTER */ 08700002 * 4 PCBRTP PTR(31), /* FULLWORD REFERENCE FOR 08750002 * ROOT PCB PTR */ 08800002 * 8 PCBFL1 BIT(8), /* FIRST FLAG FIELD */ 08850002 * 12 * BIT(1), /* RESERVED @Z40WPYD */ 08870040 * 12 PCBPEX BIT(1), /* PAGE EXCEPTION FLAG, WHEN 1, 09000002 * THIS PCB IS FOR A PAGE FAULT 09050002 * INTERUPTION. */ 09150002 * 12 PCBSRBMD BIT(1), /* SRB MODE FLAG 09200002 * WHEN 1, PCB IS FOR SRB PAGE 09250002 * FAULT PROCESSING. PCBSRB 09300002 * CONTAINS SRB ADDRESS. */ 09350002 * 12 PCBLLHLD BIT(1), /* THE LOCAL LOCK HELD FLAG. 09400002 * WHEN = 1 LOCAL LOCK WAS HELD 09410002 * WHEN PAGE FAULT OCCURRED. */ 09420002 * 12 PCBLFR BIT(1), /* LONG FIX REQUEST FLAG */ 09450002 * 12 PCBROOT BIT(1), /* WHEN 1, INDICATES THAT PCBRTPA 09500002 * IS A ROOT PCB POINTER, WHEN 0 09550002 * INDICATES THAT PCBRTPA IS A TCB 09600002 * POINTER OR 0. */ 09650002 * 12 PCBIOI BIT(1), /* INPUT-OUTPUT FLAG. 09700002 * WHEN 1 = PAGE OUT, WHEN 09750002 * 0 = PAGE IN */ 09800002 * 12 PCBIOCMP BIT(1), /* WHEN 1 = PAGING I/O COMPLETE 09850002 * FOR THIS PCB */ 09900002 * 8 PCBRTPA PTR(24), /* ROOT PCB POINTER/TCB POINTER 09950002 * CONTENTS DETERMINED BY PCBROOT 10000002 * FLAG. */ 10050002 * 4 PCBRLP PTR(31), /* FULLWORD REFERENCE FOR 10100002 * RELATED PCB POINTER */ 10150002 * 8 PCBFXC FIXED(8), /* FIX COUNT */ 10200002 * 8 PCBRLPA PTR(24), /* RELATED PCB POINTER */ 10250002 * 4 PCBXPT PTR(31), /* FULLWORD REFERENCE FOR 10300002 * XPTE PTR */ 10350002 * 8 PCBFL2 BIT(8), /* SECOND FLAG FIELD */ 10400002 * 12 PCBFREAL BIT(1), /* FREE REAL FLAG, THIS FLAG TELLS 10450002 * WHETHER OR NOT THE REAL FRAME 10500002 * ASSOCIATED WITH A COMPLETED 10550002 * I/O OPERATION SHOULD BE FREED. 10600002 * WHEN 1, FREE REAL FRAME */ 10800002 * 12 PCBGFAD BIT(1), /* GFA DEFER PROCESSOR FLAG. 10850002 * WHEN 1, GFA DEFER PROCESSOR HAS 10900002 * BEEN SCHEDULED FOR THIS PCB. */ 10950002 * 12 PCBIOERR BIT(1), /* PERMANENT I/O ERROR FLAG. 11000002 * WHEN 1 A PAGING I/O OPERATION 11050002 * HAS FAILED BECAUSE OF A 11100002 * PERMANENT I/O ERROR */ 11150002 * 12 PCBRESET BIT(1), /* RESET MUST BE CALLED FLAG. */ 11200002 * 12 PCBSUPRS BIT(1), /* SUPPRESS FRAME PROCESSING. 11250002 * IGNORE PCBFREAL, PCBRBN, AND 11260002 * ASSOCIATED PFTE. */ 11270002 * 12 PCBVIO BIT(1), /* PCB IS FOR A VIO MOVE-OUT. 11280040 * @Z40WPYD */ 11290040 * 12 * BIT(1), /* RESERVED */ 11350002 * 12 * BIT(1), /* RESERVED */ 11400002 * 8 PCBXPTA PTR(24), /* VIRTUAL MEMORY ADDRESS OF 11450002 * EXTERNAL PAGE TABLE ENTRY */ 11500002 * 4 PCBPGT FIXED(31), /* FULLWORD REFERENCE FOR 11550002 * PAGE TABLE ENTRY */ 11600002 * 8 PCBFL3 BIT(8), /* THIRD FLAG FIELD */ 11650002 * 12 PCBSWPOT BIT(1), /* SWAP OUT FLAG */ 11700002 * 12 PCBSWPIN BIT(1), /* SWAP IN PRIVATE AREA PAGE FLAG*/ 11750002 * 12 PCBSWPS1 BIT(1), /* STAGE 1 SWAP-IN FLAG */ 11800002 * 12 PCBSWPLS BIT(1), /* SWAP-IN LSQA PAGE FLAG. */ 11850002 * 12 PCBDFRLS BIT(1), /* SWAP-IN DEFERRED RELEASE FLAG. 11900002 * THE SWIN ROOT EXIT MUST SET 11910002 * PFTDFRLS TO 1. */ 11920002 * 12 PCBNOREC BIT(1), /* NO RECLAIM FLAG, VALID ONLY IF 11920540 * PCBIOI=1. WHEN 1, PAGE-OUT IS 11921040 * NOT TO BE RECLAIMED. WHEN 0, 11921540 * RECLAIM IS ALLOWED. @Z40WPYD */ 11922040 * 12 * BIT(1), /* RESERVED. @Z40WPYD */ 11922540 * 12 PCBSWPS2 BIT(1), /* WHEN 1, PCB IS FOR A STAGE 2 11967040 * SWAP IN. @Z40WPYD */ 11987040 * 8 PCBPGTA PTR(24), /* VIRTUAL MEMORY ADDRESS 12100002 * OF PAGE TABLE ENTRY */ 12150002 * 4 PCBRBN BIT(16), /* REAL STORAGE BLOCK NUMBER 12200002 * (LEFT ADJUSTED WITH 4 12250002 * LOW ORDER ZEROES.) */ 12300002 * 4 PCBVBN BIT(16), /* VIRTUAL MEMORY BLOCK 12350002 * NUMBER (LEFT ADJUSTED 12400002 * WITH 4 LOW ORDER 12450002 * ZEROES.) IF THIS VALUE IS ZERO, 12500002 * NO PGTE VALIDATION WILL BE 12550002 * PERFORMED. */ 12600002 * 4 PCBBLOCK PTR(31), /* MULTI USE FIELD, SEE BELOW 12603040 * @Z40WPYD */ 12606040 * 8 PCBSRB PTR(31), /* IF PCBPEX=1 AND PCBSRBMD=1, THEN 12609040 * FIELD CONTAINS ADDRESS OF PAGE 12612040 * FAULTING SRB. @Z40WPYD */ 12615040 * 12 PCBRB PTR(31), /* IF PCBPEX=1 AND PCBSRBMD=0, THEN 12618040 * FIELD CONTAINS ADDRESS OF PAGE 12621040 * FAULTING RB. @Z40WPYD */ 12624040 * 16 PCBSPCTE PTR(31), /* IF PCBSWPOT=1 OR PCBSWPS1=1 AND 12627040 * VBN IS IN PRIVATE AREA, THEN 12630040 * FIELD CONTAINS ADDRESS OF A 12633040 * SPCTSWPE. @Z40WPYD */ 12636040 * 4 PCBASCB PTR(31), /* ADDRESS OF THE ADDRESS SPACE 12900002 * CONTROL BLOCK(ASCB) */ 12950002 * 4 PCBAIA CHAR(28)BDY(WORD) , /* AN ASM I/O REQUEST 13000040 * AREA (AIA) WHICH IS ALWAYS PART 13050002 * OF THE PCB. THE AREA IS MAPPED 13100002 * BY THE ILRAIA MACRO. */ 13150002 * 4 PCBEND CHAR(0) PCB9999 /* END OF PCB @Z40WPYD */ 13155040 * %PCBLEN = 'LENGTH(PCB)'; /* OBTAIN LENGTH OF PCB. */ 13200002