Table of Contents

DMKATS Source

References

Source Listing

DMKATS.ASSEMBLE.txt
  1. ATS TITLE 'DMKATS (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKATS 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * 00010000
  11. * ATTRIBUTES - 00011000
  12. * REENTRANT, PAGEABLE, CALLED VIA SVC 00012000
  13. * 00013000
  14. * ENTRY POINTS - 00014000
  15. * 00015000
  16. * DMKATSCF - CALLED VIA SVC IF A SHARED PAGE IS GOING TO BE 00016000
  17. * CHANGED. 00017000
  18. * CALLED BY DMKTRC FOR (TRACE) COMMAND. 00018000
  19. * CALLED BY DMKCDS FOR VIRTUAL (STORE) COMMAND. 00019000
  20. * CALLED BY DMKCDS FOR (STCP) COMMAND. 00020000
  21. * CALLED BY DMKCFD FOR (ADSTOP) COMMAND. 00021000
  22. * 00022000
  23. * ENTRY CONDITIONS - 00023000
  24. * 00024000
  25. * DMKATSCF 00025000
  26. * GPR 2 = VITURAL PAGE ADDRESS @VA12533 00026500
  27. * GPR 11 = ADDRESS OF USER'S VMBLOK 00027000
  28. * GPR 12 = ENTRY POINT 00028000
  29. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00029000
  30. * 00030000
  31. * EXIT CONDITIONS - 00031000
  32. * NORMAL - 00032000
  33. * CONDITION CODE IT SET TO ZERO 00033000
  34. * ERROR - 00034000
  35. * CONDITION CODE IS SET TO NON-ZERO. 00035000
  36. * 00036000
  37. * THE CURRENT RUNUSER 00037000
  38. * IS SENT AN ERROR MESSAGE AND THE SHARED NAMED SYSTEM 00038000
  39. * THAT HE CHANGED IS RELEASE FOR RUNUSER. ALL OTHER 00039000
  40. * USER'S ARE UNAFFECTED BY THE ALTERATION OF THE SHARED 00040000
  41. * SYSTEM. 00041000
  42. * 00042000
  43. * CALLS TO OTHER ROUTINES - 00043000
  44. * DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL. 00044000
  45. * DMKFREE - TO OBTAIN FREE STORAGE 00045000
  46. * DMKFRET - TO RETURN STORAGE GOTTEN BY CALL TO DMKFREE 00046000
  47. * DMKPTRAN - TO BRING IN A USERS VIRTUAL PAGE 00047000
  48. * DMKSTKCP - STACK A CPEXBLOK 00048000
  49. * DMKCVTBH - CONVERT BINARY TO HEX 00049000
  50. * DMKCFMBK - TO PUT USER IN CONSOLE FUNCTION MODE 00050000
  51. * DMKDSPCH - DISPATCHER 00051000
  52. * DMKPTRLK - TO LOCK A PAGE IN STORAGE 00052000
  53. * DMKPTRUL - TO UNLOCK A PAGE IN STORAGE 00053000
  54. * DMKPTRFT - RELEASE A REAL STORAGE FRAME 00054000
  55. * DMKSCNVS - LOCATE A RDEVBLOK FOR VOLSER 00055000
  56. * DMKCVTAB - ABEND SYSTEM AFTER CLOCK FAILURE 00056000
  57. * DMKPGTPR - RELEASE A DASDI SLOT 00057000
  58. * DMKPTRPW - WAIT FOR PAGING ACTIVITY TO END 00058000
  59. * DMKVMASH - CHECK FOR CHANGED SHARED PAGES 00059000
  60. * 00060000
  61. * TABLES/WORKAREAS - 00061000
  62. * CORTABLE 00062000
  63. * VMABLOK 00063000
  64. * SHRTABLE 00064000
  65. * VMBLOK 00065000
  66. * PAGTABLE 00066000
  67. * SEGTABLE 00067000
  68. * SWPTABLE 00068000
  69. * DMKSYSOW 00069000
  70. * DMKPTRUC 00070000
  71. * DMKSNTBL 00071000
  72. * DMKPTRSC 00072000
  73. * DMKPTRRC 00073000
  74. * DMKDSPNP 00074000
  75. * 00075000
  76. * REGISTER USAGE - 00076000
  77. * GPR0 - PREFIX STORAGE AREA 00077000
  78. * GPR5 - ADDRESS OF SWPTABLE 00078000
  79. * GPR6 - ADDRESS OF PAGCORE 00079000
  80. * GPR7 - ADDRESS OF CORTABLE 00080000
  81. * GPR8 - ADDRESS OF SEGTABLE 00081000
  82. * GPR9 - ADDRESS OF VMABLOK 00082000
  83. * GPR10- ADDRESS OF SHRTABLE 00083000
  84. * GPR11- ADDRESS OF VMBLOK 00084000
  85. * GPR12- BASE REGISTER FOR THIS MODULE 00085000
  86. * GPR13- ADDRESS OF STANDARD SAVE AREA 00086000
  87. * GPR14- LINKAGE REGISTER 00087000
  88. * GPR15- LINKAGE REGISTER 00088000
  89. * 00089000
  90. * NOTES - 00090000
  91. * NONE 00091000
  92. * 00092000
  93. * OPERATION - 00093000
  94. * 00094000
  95. * DMKATSCF IS CALLED BY THE COMMAND PROCESSORS WHEN IT IS 00095000
  96. * DETERMINED THAT THE EXECUTION OF THE COMMAND IS GOING TO 00096000
  97. * CHANGE A SHARED PAGE. THE VIRTUAL MACHINE ISSUING THE COMMAND 00097000
  98. * IS NOTIFIED THAT THE COMMAND HAS CAUSED THE RELEASE OF THE 00098000
  99. * SHARED SYSTEM. THE USER WILL CONTINUE TO RUN WITHOUT A SHARED 00099000
  100. * COPY OF THE NAMED SYSTEM. 00100000
  101. * 00101000
  102. *. 00102000
  103. EJECT 00103000
  104. COPY OPTIONS @V60BC11 00104000
  105. COPY LOCAL @V60BC11 00105000
  106. DMKATS CSECT @V60BC11 00106000
  107. EXTRN DMKPTRSC @V60BC11 00107000
  108. EXTRN DMKPTRRC @V60BC11 00108000
  109. EXTRN DMKDSPNP @V60BC11 00109000
  110. EXTRN DMKCVTAB @V60BC11 00110000
  111. EXTRN DMKCVTBH @V60BC11 00111000
  112. EXTRN DMKCFMBK @V60BC11 00112000
  113. EXTRN DMKSTKCP @V60BC11 00113000
  114. EXTRN DMKERMSG @V60BC11 00114000
  115. EXTRN DMKSCHDL @V60BC11 00115000
  116. EXTRN DMKSYSOW @V60BC11 00116000
  117. EXTRN DMKSNTBL,DMKSCNVS,DMKPTRUL,DMKPGTPR,DMKPTRFT @V60BC11 00117000
  118. EXTRN DMKPTRPW @V60BC11 00118000
  119. EXTRN DMKPTRAN @V60BC11 00119000
  120. EXTRN DMKPTRUC @V60BC11 00120000
  121. EXTRN DMKVMASH @V60BC11 00121000
  122. EXTRN DMKSYSAP @VMI0016 00122000
  123. SPACE 00123000
  124. USING PSA,R0 @V60BC11 00124000
  125. USING SWPTABLE,R5 @V60BC11 00125000
  126. USING PAGCORE,R6 @V60BC11 00126000
  127. USING CORTABLE,R7 @V60BC11 00127000
  128. USING SEGTABLE,R8 @V60BC11 00128000
  129. USING VMABLOK,R9 @V60BC11 00129000
  130. USING SHRTABLE,R10 @V60BC11 00130000
  131. USING VMBLOK,R11 @V60BC11 00131000
  132. USING DMKATS,R12 @V60BC11 00132000
  133. USING SAVEAREA,R13 @V60BC11 00133000
  134. EJECT 00134000
  135. DC C'DMKATS ' MODULE IDENTIFIER 00135000
  136. DMKATSCF RELOC HANDLE (TRACE,STORE,ADSTOP) COMMAND @V60BC11 00136000
  137. XC SAVEWRK1,SAVEWRK1 CLEAR FLAG BYTE & WORKAREA @V60BC11 00137000
  138. XC SAVEWRK2(SAVEWRK9-SAVEWRK2+4),SAVEWRK2 CLEAR @V60BC11 00138000
  139. CL R11,LASTUSER IS LASTUSER THE SAME AS THIS USER@V60BC11 00139000
  140. BNE NOCHG NO, OK TO UNSHARE THIS USER @V60BC11 00140000
  141. CALL DMKVMASH YES, CHECK FOR CHANGED PAGES @V60BC11 00141000
  142. BZ NOCHG NO CHANGES, OK TO UNSHARE @V60BC11 00142000
  143. MVI SAVEWRK1,HEXFF SET FIELD FOR NON-ZERO CC @V60BC11 00143000
  144. CFEXIT DS 0H @V60BC11 00144000
  145. SLR R0,R0 ZIP REG @V60BC11 00145000
  146. C R0,SAVEWRK6 WAS DMKSNT BROUGHT IN @V60BC11 00146000
  147. BE CFEXIT1 NO, SKIP RELEASING FRAME @V60BC11 00147000
  148. L R2,SAVEWRK6 GET ADDRESS OF FRAME @V60BC11 00148000
  149. CALL DMKPTRUL UNLOCK THE FRAME @V60BC11 00149000
  150. CFEXIT1 DS 0H @V60BC11 00150000
  151. TM SAVEWRK1,HEX00 SET THE CONDITION CODE @V60BC11 00151000
  152. EXIT RETURN TO CALLER @V60BC11 00152000
  153. SPACE 2 00153000
  154. NOCHG DS 0H @V60BC11 00154000
  155. CALL DMKPTRPW,AFFINITY WAIT FOR PAGING TO COMPLETE @V60BC11 00155000
  156. LR R1,R2 SET R1 FOR TRANS @VA12533 00155500
  157. TRANS 2,1,OPT=(BRING,DEFER) @VA12533 00155600
  158. BAL R3,GETSHRNM GET PTRS TO (SHRTABLE/VMABLOK) @V60BC11 00156000
  159. MVC SAVEWRK2(L'SHRNAME),SHRNAME SAVE THE NAME OF @V60BC11 00157000
  160. * THE SHARED SYSTEM 00158000
  161. LA R0,CPEXSIZE GET SIZE OF CPEXBLOK @VA12771 00159500
  162. CALL DMKFREE GET A CPEXBLOK @VA12771 00160000
  163. USING CPEXBLOK,R1 @VA12771 00160500
  164. LM R2,R3,SAVEWRK2 SAVE THE SHARED SYS NAME @VA12771 00161000
  165. STM R0,R15,CPEXREGS SAVE ALL THE REGISTERS @VA12771 00161500
  166. LA R15,ERR181 GET ADDRESS OF MESSAGE ROUTINE @VA12771 00162000
  167. ST R15,CPEXADD STORE RETURN ADDRESS @VA12771 00162500
  168. CALL DMKSTKCP STACK THE CPEXBLOK @VA12771 00163000
  169. DROP R1 @VA12771 00163500
  170. XC SAVEWRK2(SAVEWRK3-SAVEWRK2+4),SAVEWRK2 ZERO NAME@V60BC11 00165000
  171. BAL R14,UNSHARE UNSHARE USER FROM THIS SYSTEM @V60BC11 00166000
  172. OI APSTAT2,CPPTLBR INDICATE PTLB NEEDED @V60BC11 00167000
  173. CFSETCC DS 0H @V60BC11 00168000
  174. MVI SAVEWRK1,HEX00 SET FIELD FOR ZERO CC @V60BC11 00169000
  175. B CFEXIT RETURN @V60BC11 00170000
  176. ERR181 DS 0H @VA12771 00170050
  177. USING EMSGBLOK,R1 @VA12771 00170100
  178. LA R0,EMSGSIZE GET SIZE OF AREA FOR MESSAGE @VA12771 00170150
  179. CALL DMKFREE GET ADDRESS OF AREA FOR MESSAGE @VA12771 00170200
  180. XC EMSGAREA,EMSGAREA CLEAR MESSAGE AREA @VA12771 00170250
  181. STM R2,R3,EMSGNAME MOVE IN SHARED SYS NAME @VA12771 00170300
  182. DROP R1 @VA12771 00170350
  183. LA R0,L'SHRNAME LENGTH OF THE NAME FOR MESSAGE @VA12771 00170400
  184. ICM R0,B'1110',=C'ATS' MODULE IDENT. @VA12771 00170450
  185. LA R2,EMSG181 LOAD ERROR CODE @VA12771 00170500
  186. ICM R2,B'1000',=X'80' FLAGS TO RETURN TO CALLER @VA12771 00170550
  187. CALL DMKERMSG CALL THE MESSAGE WRITTER @VA12771 00170600
  188. LA R0,EMSGSIZE SIZE OF EMSGBLOK IN DW'S @VA12771 00170650
  189. CALL DMKFRET FRET THE EMSGBLOK @VA12771 00170700
  190. GOTO DMKDSPCH GO TO THE DISPATCHER @VA12771 00170750
  191. EJECT 00171000
  192. * 00172000
  193. * THIS SECTION OF CODE WILL UNSHARE THE USER FROM THE NAMED 00173000
  194. * SYSTEM. INPUT TO THIS ROUTINE IS THE ADDRESS 00174000
  195. * OF THE VMABLOK IN R10. 00175000
  196. * 00176000
  197. UNSHARE DS 0H @V60BC11 00177000
  198. ST R14,SAVEWRK8 SAVE RETURN ADDRESS @V60BC11 00178000
  199. CLC SHRUSECT,F1+2 IS THIS THE LAST USER? @V60BC11 00179000
  200. BE LSTSUSER YES, GO USE SHARED PAGTABLES @V60BC11 00180000
  201. L R2,SHRSEGCT LOAD NUMBER OF SHARED SEGMENTS @V60BC11 00181000
  202. BCTR R2,0 DECREMENT FOR INDEXING @V60BC11 00182000
  203. NAMELOOP DS 0H @V60BC11 00183000
  204. SLR R8,R8 ZERO REG @V60BC11 00184000
  205. IC R8,SHRSEGNM(R2) GET SHARED SEGMENT NUMBER @V60BC11 00185000
  206. SLL R8,2 TIMES FOUR FOR INDEXING @V60BC11 00186000
  207. AL R8,VMSEG LOAD ADDRESS OF SEGTABLE ENTRY @V60BC11 00187000
  208. L R6,SEGPAGE LOAD ADDRESS OF PTO @V60BC11 00188000
  209. TM SEGPAGE+3,SEGINV SEGMENT VALID @V60BC11 00189000
  210. BZ B1 YES, SKIP SETTING OF FLAG @V60BC11 00190000
  211. OI SAVEWRK1,INVLSEG SET FLAG FOR UPDATING COUNTERS @V60BC11 00191000
  212. B1 N R6,CLCNTINV CLEAR UNWANTED BITS @V60BC11 00192000
  213. LR R0,R6 LOAD R0 WITH ADDRESS OF PTO @V60BC11 00193000
  214. SL R0,F16 BACKUP TO PAGTABLE @V60BC11 00194000
  215. ST R0,SAVEWRK2 SAVE FOR LATER USE @V60BC11 00195000
  216. L R3,SEGPAGE LOAD R3 WITH STE @V60BC11 00196000
  217. SRL R3,28 SHIFT TO OBTAIN NUMBER OF PTES @V60BC11 00197000
  218. LA R3,1(R3) PLUS ONE FOR LOOP CONTROL @V60BC11 00198000
  219. B OBTABLES GO GET NEW PAGTABLE @V60BC11 00199000
  220. DECOUNT DS 0H @V60BC11 00200000
  221. NI SAVEWRK1,X'FF'-(INVLSEG+PTOBTAIN) RESET INVALID @V60BC11 00201000
  222. * SEGMENT & PAGTABLE OBTAINED FLAGS@V60BC11 00202000
  223. S R2,F1 ANYMORE SEGMENTS @V60BC11 00203000
  224. BNM NAMELOOP YES, GO PROCESS THEM @V60BC11 00204000
  225. ICM R4,7,SAVEWRK1+1 LOAD ADDR PREVIOUS VMABLOK @V60BC11 00205000
  226. TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00206000
  227. BO SKRST2 YES, SKIP VMABLOK FRET'ING @V60BC11 00207000
  228. LR R1,R9 LOAD ADDR VMABLOK FOR FRET @V60BC11 00208000
  229. L R9,VMAFPNT LOAD ADDR NEXT VMABLOK @V60BC11 00209000
  230. ST R9,VMAFPNT-VMABLOK(,R4) DEQUEUE CURRENT VMABLOK @V60BC11 00210000
  231. LA R0,VMASIZE GET NUMBER DOUBLEWORDS @V60BC11 00211000
  232. CALL DMKFRET RETURN THE VMABLOK @V60BC11 00212000
  233. SKRST2 DS 0H @V60BC11 00213000
  234. LH R1,VMSHRSYS LOAD USERS SHARED SYSTEM COUNT @V60BC11 00214000
  235. BCT R1,SKRST1 DECREMENT FOR ONE UNSHARED @V60BC11 00215000
  236. NI VMOSTAT,X'FF'-VMSHR GONE TO ZERO,RESET SHARE BIT@V60BC11 00216000
  237. SKRST1 DS 0H @V60BC11 00217000
  238. STH R1,VMSHRSYS STORE UPDATED COUNT @V60BC11 00218000
  239. LH R1,SHRUSECT LOAD SHARED SYSTEM USER COUNT @V60BC11 00219000
  240. BCTR R1,0 DECREMENT FOR USER UNSHARED @V60BC11 00220000
  241. STH R1,SHRUSECT STORE UPDATED COUNT @V60BC11 00221000
  242. MVC SAVEWRK2(L'SHRNAME),SHRNAME SAVE NAME OF SYSTEM @V60BC11 00222000
  243. * ACROSS TRANS @V60BC11 00223000
  244. EJECT 00224000
  245. * 00225000
  246. * THIS SECTION OF CODE WILL RECONSTRUCT THE SWAP 00226000
  247. * TABLE ENTRIES. IT WILL BRING IN DMKSNTBL AND FILL IN ALL THE 00227000
  248. * SWPTABLE ENTRIES FOR THE UNSHARED SEGMENTS WITH THE ORIGINAL 00228000
  249. * CCPD OF THE SYSOWNED VOLUME CONTAINING THE SHARED SYSTEM. 00229000
  250. * 00230000
  251. SLR R0,R0 ZERO REG @V60BC11 00231000
  252. C R0,SAVEWRK6 NAME TABLE ALREADY IN @V60BC11 00232000
  253. BNE SKIPTRAN YES, SKIP TRANS @V60BC11 00233000
  254. L R1,=A(DMKSNTBL) LOAD ADDRESS OF NAME TABLE @V60BC11 00234000
  255. TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM),AFFINITY @V60BC11 00235000
  256. ST R2,SAVEWRK6 SAVE ADDRESS FOR FUTURE USE @V60BC11 00236000
  257. SKIPTRAN L R4,SAVEWRK6 LOAD ADDR OF DMKSNTBL @V60BC11 00237000
  258. CKNAME DS 0H @V60BC11 00238000
  259. USING SYSTBL,R4 @V60BC11 00239000
  260. CLC SYSNAME,SAVEWRK2 COMPARE NAMES @V60BC11 00240000
  261. BE FOUNDNAM BRANCH WHEN FOUND @V60BC11 00241000
  262. L R3,SYSPNT LOAD DISPLACEMENT TO NEXT ENTRY @V60BC11 00242000
  263. AR R4,R3 BUMP TO NEXT ENTRY @V60BC11 00243000
  264. LTR R3,R3 REACHED END OF TABLE @V60BC11 00244000
  265. BNZ CKNAME NO, CONTINUE SEARCHING @V60BC11 00245000
  266. B ERROR3 YES, SOMTHINGS REALLY WRONG @V60BC11 00246000
  267. FOUNDNAM DS 0H @V60BC11 00247000
  268. LA R1,SYSVOL LOAD ADDR OF VOLSER FOR SYSVOL @V60BC11 00248000
  269. LA R0,L'SYSVOL SERIAL LENGTH @V60BC11 00249000
  270. CALL DMKSCNVS LOCATE RDEVBLOK FOR SYSVOL @V60BC11 00250000
  271. BNZ ERROR4 COUDN'T FIND SYSVOL @V60BC11 00251000
  272. L R5,SYSSTART GET STARTING CCPD @V60BC11 00252000
  273. USING RDEVBLOK,R1 @V60BC11 00253000
  274. IC R5,RDEVCODE+1 INSERT INDEX INTO OWNED LIST @V60BC11 00254000
  275. LA R0,PAGE3330 MAXIMUM PAGES/CYL ON 3330 @V60BC11 00255000
  276. TM RDEVTYPE,TYP3330 IS THIS A 3330 @V60BC11 00256000
  277. BO SAVMAXPG YES ----- @V60BC11 00257000
  278. LA R0,PAGE2314 MAXIMUM PAGES/CYL ON 2314 @V60BC11 00258000
  279. TM RDEVTYPE,TYP2314 IS THIS A 2314 @V60BC11 00259000
  280. BO SAVMAXPG YES ----- @V60BC11 00260000
  281. LA R0,PAGE3350 MAXIMUM PAGES/CYL ON 3350 @V60BC11 00261000
  282. TM RDEVTYPE,TYP3350 IS THIS A 3350 @V60BC11 00262000
  283. BO SAVMAXPG YES ----- @V60BC11 00263000
  284. LA R0,PAGE3375 Maximum pages/cyl on 3375 HRC106DK 00263100
  285. TM RDEVTYPE,TYP3375 Is this a 3375 HRC106DK 00263200
  286. BO SAVMAXPG Yes ----- HRC106DK 00263300
  287. LA R0,PAGE3380 Maximum pages/cyl on 3380 HRC106DK 00263400
  288. TM RDEVTYPE,TYP3380 Is this a 3380 HRC106DK 00263500
  289. BO SAVMAXPG Yes ----- HRC106DK 00263600
  290. LA R0,PAGE2305 PAGES/CYL FOR 2305 AND 3340 @V60BC11 00264000
  291. DROP R1 @V60BC11 00265000
  292. SAVMAXPG DS 0H @V60BC11 00266000
  293. SLL R0,8 SETUP FOR LATER COMPARE @V60BC11 00267000
  294. ST R0,SAVEWRK2 STORE IT AWAY FOR LATER USE @V60BC11 00268000
  295. SLR R3,R3 ZERO REG FOR INDEXING @V60BC11 00269000
  296. L R6,F256 INCREMENT CONSTANT FOR CCPD'S @V60BC11 00270000
  297. LH R7,SYSPAGLN NUMBER OF ENTRIES IN SYSPAGNM @V60BC11 00271000
  298. ST R9,SAVEWRK3 SAVE ADDR VMABLOK @V60BC11 00272000
  299. NXTRANGE DS 0H @V60BC11 00273000
  300. L R8,SYSPAGNM(R3) LOAD RANGE OF PAGES @V60BC11 00274000
  301. SRDL R8,16 START PAGE TO LOW ORDER OF R8 @V60BC11 00275000
  302. SRL R9,16 END PAGE TO LOW ORDER OF R9 @V60BC11 00276000
  303. SLL R8,12 FORM START PAGE ADDRESS @V60BC11 00277000
  304. SLL R9,12 FORM END PAGE ADDRESS @V60BC11 00278000
  305. NXTSLOT DS 0H @V60BC11 00279000
  306. AR R5,R6 BUMP TO NEXT CCPD @V60BC11 00280000
  307. LR R1,R5 CCPD TO R1 @V60BC11 00281000
  308. N R1,CLRSEGNM SAVE ONLY PAGE NUMBER @V60BC11 00282000
  309. CL R1,SAVEWRK2 NEED TO BUMP TO NEXT CYLINDER @V60BC11 00283000
  310. BNH SWAPCONT NOT YET @V60BC11 00284000
  311. A R5,BUMPLOW ADD ONE TO CYLINDER NUMBER @V60BC11 00285000
  312. ICM R5,B'0010',F1+3 RESET PAGE NUMBER TO ONE @V60BC11 00286000
  313. SWAPCONT DS 0H @V60BC11 00287000
  314. LR R2,R8 START ADDRESS TO R2 @V60BC11 00288000
  315. SRL R2,16 SEGMENT NO. ONLY @V60BC11 00289000
  316. SLL R2,2 SEGMENT NO. * 4 FOR INDEX @V60BC11 00290000
  317. AL R2,VMSEG LOAD ADDR OF SEGTABLE ENTRY @V60BC11 00291000
  318. L R2,0(R2) LOAD ADDR OF PTO @V60BC11 00292000
  319. N R2,CLCNTINV CLEAR UNWANTED BITS @V60BC11 00293000
  320. S R2,F16 BACKUP TO HEADER @V60BC11 00294000
  321. LA R2,PAGTSWP+8(,R2) LOAD ADDR 1ST SWPTABLE ENTRY @V60BC11 00295000
  322. LR R1,R8 VIRTUAL ADDRESS @V60BC11 00296000
  323. SRL R1,12 PAGE NUMBER @V60BC11 00297000
  324. N R1,F15 PAGE NO. WITHIN SEGMENT @V60BC11 00298000
  325. SLL R1,3 PAGE NO. *8 FOR SWPTABLE @V60BC11 00299000
  326. * ENTRY INDEX @V60BC11 00300000
  327. AR R2,R1 GET ADDR SWPTABLE ENTRY @V60BC11 00301000
  328. USING SWPFLAG,R2 @V60BC11 00302000
  329. TM SWPFLAG,SWPALLOC UNCHANGED PAGE @VMI0064 00303000
  330. BZ NXTRPAGE NO, SKIP RESETTING CCPD @VMI0064 00304000
  331. ST R5,SWPCYL STORE ORIGINAL CCPD @V60BC11 00305000
  332. NI SWPFLAG,X'FF'-SWPALLOC RESET ALLOCATE BIT @VMI0064 00306000
  333. NXTRPAGE A R8,F4096 BUMP TO NEXT VIRTUAL PAGE ADDR @V60BC11 00307000
  334. CR R8,R9 REACHED END OF RANGE @V60BC11 00308000
  335. BNH NXTSLOT NO, CONTINUE UPDATES @V60BC11 00309000
  336. A R3,F4 BUMP SYSPAGNM INDEX @V60BC11 00310000
  337. BCT R7,NXTRANGE IF MORE ENTRIES, KEEP LOOPING @V60BC11 00311000
  338. * THIS NEXT SECTION WILL LOOP THROUGH THE RANGES AGAIN TO ENSURE 00312000
  339. * WE RESET ALL THE PAGES WITHIN THE SEGMENT(S). THIS WILL RESET 00313000
  340. * THE ENTRIES SKIPPED BY THE RANGE OF PAGE NUMBERS IN DMKSNT. 00314000
  341. * 00315000
  342. SLR R3,R3 ZIP REGISTER @VMI0064 00316000
  343. ST R3,TEMPR0 INITIALIZE RANGE FIELD @VMI0064 00317000
  344. LH R7,SYSPAGLN GET NUMBER ENTRIES IN SYSPAGNM @VMI0064 00318000
  345. REBRANGE DS 0H @VMI0064 00319000
  346. L R8,SYSPAGNM(R3) LOAD RANGE OF PAGES @VMI0064 00320000
  347. SRDL R8,16 START PAGE TO LOW ORDER OF R8 @VMI0064 00321000
  348. SRL R9,16 END PAGE TO LOW ORDER OF R9 @VMI0064 00322000
  349. SLL R8,12 FORM START PAGE ADDRESS @VMI0064 00323000
  350. SLL R9,12 FORM END PAGE ADDRESS @VMI0064 00324000
  351. CL R8,TEMPR0 START WITH RANGE ALREADY DONE @VMI0064 00325000
  352. BH REBPAGE NO, PROCESS RANGE @VMI0064 00326000
  353. CL R9,TEMPR0 END WITHIN RANGE ALREADY DONE @VMI0064 00327000
  354. BL REBTEST YES, GET NEXT RANGE @VMI0064 00328000
  355. REBPAGE DS 0H @VMI0064 00329000
  356. N R8,FORCEPG0 FORCE START TO PAGE 0 OF SEGMENT @VMI0064 00330000
  357. O R9,FORCEPGF FORCE END TO END OF SEGMENT @VMI0064 00331000
  358. ST R9,TEMPR0 SAVE END ADDRESS IN RANGE @VMI0064 00332000
  359. REBSWAP DS 0H @VMI0064 00333000
  360. LR R2,R8 START ADDRESS TO R2 @VMI0064 00334000
  361. SRL R2,16 SEGMENT NUMBER ONLY @VMI0064 00335000
  362. SLL R2,2 SEGMENT NO. * 4 FOR INDEXING @VMI0064 00336000
  363. AL R2,VMSEG LOAD ADDR OF SEGMENT ENTRY @VMI0064 00337000
  364. L R2,0(,R2) LOAD ADDR OF PTO @VMI0064 00338000
  365. N R2,CLCNTINV CLEAR UNWANTED BITS @VMI0064 00339000
  366. S R2,F16 BACKUP TO HEADER @VMI0064 00340000
  367. LA R2,PAGTSWP+8(,R2) LOAD ADDR 1ST SWPTABLE ENTRY @VMI0064 00341000
  368. LR R1,R8 VIRTUAL ADDRESS TO R1 @VMI0064 00342000
  369. N R1,FORCEPGF GET PAGE NUMBER @VMI0064 00343000
  370. SRL R1,9 PAGE NUMBER * 8 @VMI0064 00344000
  371. AR R2,R1 GET ADDR SWPTABLE ENTRY @VMI0064 00345000
  372. TM SWPFLAG,SWPALLOC UNCHANGED PAGE @VMI0064 00346000
  373. BZ REBTEST NO, SKIP RESETTING @VMI0064 00347000
  374. NI SWPFLAG,X'FF'-SWPALLOC YES, RESET ALLOCATE BIT @VMI0064 00348000
  375. REBTEST DS 0H @VMI0064 00349000
  376. A R8,F4096 BUMP TO NEXT VIRTUAL PAGE ADDR @VMI0064 00350000
  377. CR R8,R9 REACHED END OF RANGE @VMI0064 00351000
  378. BNH REBSWAP NO, KEEP PROCESSING @VMI0064 00352000
  379. A R3,F4 YES, BUMP TO NEXT SYSPAGNM ENTRY @VMI0064 00353000
  380. BCT R7,REBRANGE BRANCH IF MORE ENTRIES TO PROCESS@VMI0064 00354000
  381. UNSHEXIT DS 0H @V60BC11 00355000
  382. L R14,SAVEWRK8 RESTORE RETURN ADDRESS @V60BC11 00356000
  383. BR R14 RETURN TO CALLER @V60BC11 00357000
  384. DROP R2 @V60BC11 00358000
  385. EJECT 00359000
  386. * 00360000
  387. * THIS SECTION OF CODE WILL OBTAIN THE NEW PAGE AND SWAP TABLES. 00361000
  388. * 00362000
  389. OBTABLES DS 0H @V60BC11 00363000
  390. L R6,SAVEWRK2 LOAD ADDRESS PAGTABLE HEADER @V60BC11 00364000
  391. BAL R14,BLPAGSWP BUILD PAGE AND SWAP TABLES @V60BC11 00365000
  392. ST R5,SAVEWRK3 SAVE ADDR OF NEW PAGTABLE @V60BC11 00366000
  393. OI SAVEWRK1,PTOBTAIN INDICATE PAGTABLE BUILT @V60BC11 00367000
  394. USING PAGTABLE,R6 00368000
  395. SPACE 2 00369000
  396. L R6,SAVEWRK2 LOAD PAGTABLE HEADER ADDRESS @V60BC11 00370000
  397. TM SAVEWRK1,INVLSEG WAS THE SEGMENT INVALID @V60BC11 00371000
  398. BZ UPDTBTH2 NO, UPDATE BOTH PAGACT + PAGTOT @V60BC11 00372000
  399. LH R0,PAGTOT LOAD TOTAL USER COUNT @V60BC11 00373000
  400. BCTR R0,0 DECREMENT FOR THIS USER @V60BC11 00374000
  401. STH R0,PAGTOT STORE UPDATED COUNTER @V60BC11 00375000
  402. TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V60BC11 00376000
  403. BZ BLUNCHNG NO,CONTINUE PROCESSING @V60BC11 00377000
  404. TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00378000
  405. BO BLUNCHNG YES, ONLY SINGLE COPY @V60BC11 00379000
  406. TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 00380100
  407. BZ B2 NO, ADJUST FOR ATTACHED PAGTABLE @V60BC11 00381000
  408. STH R0,PAGBMP+PAGTOT UPDATE THE ATTACHED TOTAL COUNT@V60BC11 00382000
  409. B BLUNCHNG GO BUILD PAGTABLE @V60BC11 00383000
  410. B2 LA R14,PAGBMP LOAD INCREMENT VALUE @V60BC11 00384000
  411. SLR R6,R14 BACKUP TO MAIN PAGTABLE @V60BC11 00385000
  412. STH R0,PAGTOT UPDATE THE MAIN TOTAL COUNT @V60BC11 00386000
  413. ALR R6,R14 RESET PAGTABLE POINTER @V60BC11 00387000
  414. B BLUNCHNG BUILD PAGTABLE BECAUSE PREVCHNG @V60BC11 00388000
  415. UPDTBTH2 DS 0H @V60BC11 00389000
  416. L R0,PAGACT LOAD PAGACT + PAGTOT COUNTERS @V60BC11 00390000
  417. TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V60BC11 00391000
  418. BO CSLOOP2 YES, USE COMPARE & SWAP LOGIC @V60BC11 00392000
  419. S R0,ACTTOT DECREMENT BOTH COUNTERS @V60BC11 00393000
  420. ST R0,PAGACT STORE UPDATED COUNTERS @V60BC11 00394000
  421. B BLUNCHNG BRANCH AROUND ATTACHED CODE @V60BC11 00395000
  422. CSLOOP2 DS 0H @V60BC11 00396000
  423. LR R14,R0 COUNTERS TO REG 14 @V60BC11 00397000
  424. SL R14,ACTTOT DECREMENT BOTH COUNTERS @V60BC11 00398000
  425. CS R0,R14,PAGACT UPDATE COUNTERS @V60BC11 00399000
  426. BNZ CSLOOP2 TRY AGAIN, SOMEBODY CHANGED ONE @V60BC11 00400000
  427. TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00401000
  428. BO BLUNCHNG YES, ONLY SINGLE SET @V60BC11 00402000
  429. TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 00403100
  430. BZ B2A NO, ADJUST TO MAIN PAGTABLE @V60BC11 00404000
  431. L R0,PAGBMP+PAGACT LOAD ATTACHED ACTIVE COUNT @V60BC11 00405000
  432. LA R6,PAGBMP(,R6) BUMP TO ATTACHED PAGTABLE @V60BC11 00406000
  433. B CSLOOP3 GO UPDATE ATTACHED ACTIVE COUNT @V60BC11 00407000
  434. B2A LA R14,PAGBMP LOAD INCREMENT VALUE @V60BC11 00408000
  435. SLR R6,R14 BACKUP TO MAIN PAGTABLE @V60BC11 00409000
  436. L R0,PAGACT LOAD MAIN ACTIVE COUNT @V60BC11 00410000
  437. CSLOOP3 DS 0H @V60BC11 00411000
  438. LR R14,R0 LOAD REG FOR COMPARE @V60BC11 00412000
  439. SL R14,ACTTOT DECREMENT COUNTERS BY ONE @V60BC11 00413000
  440. CS R0,R14,PAGACT UPDATED ACTIVE & TOTAL COUNTERS @V60BC11 00414000
  441. BNZ CSLOOP3 TRY AGAIN @V60BC11 00415000
  442. LA R14,PAGBMP LOAD INCREMENT VALUE @V60BC11 00416000
  443. TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 00417100
  444. BZ B2B NO, RESET FOR ATTACHED PROCESSOR @V60BC11 00418000
  445. SLR R6,R14 RESET TO MAIN PROCESSOR @V60BC11 00419000
  446. B BLUNCHNG GO BUILD PAGTABLE @V60BC11 00420000
  447. B2B ALR R6,R14 RESET TO ATTACHED PROCESSOR @V60BC11 00421000
  448. BLUNCHNG DS 0H @V60BC11 00422000
  449. TM SAVEWRK1,PTOBTAIN PAGTABLE ALREADY OBTAINED @V60BC11 00423000
  450. BZ B2C NO, GO OBTAIN TABLES @V60BC11 00424000
  451. NI SAVEWRK1,X'FF'-PTOBTAIN RESET OBTAINED FLAG @V60BC11 00425000
  452. B DECOUNT GO DECREMENT SEGMENT COUNT @V60BC11 00426000
  453. B2C DS 0H @V60BC11 00427000
  454. BAL R14,BLPAGSWP BUILD PAG-&SWPTABLE FOR CHG SYS @V60BC11 00428000
  455. B DECOUNT GO DECREMENT SEG COUNT @V60BC11 00429000
  456. DROP R6 @V60BC11 00430000
  457. USING PAGCORE,R6 @V60BC11 00431000
  458. EJECT 00432000
  459. * 00433000
  460. * THIS SECTION OF CODE PROCESSES THE USER WHEN HE IS THE LAST 00434000
  461. * USER OF A SHARED SYSTEM. IT WILL RESET THE CORSHARE BIT IN ALL 00435000
  462. * CORTABLE ENTRIES AND IF WE ARE RUNNING IN ATTACHED PROCESSOR 00436000
  463. * MODE, RELEASE ALL BACKING STORAGE SLOTS, CORTABLE ENTRIES AND 00437000
  464. * FREE STORAGE ASSOCIATED WITH THE PAGE AND SWAP TABLES OF THE 00438000
  465. * OTHER PROCESSOR. 00439000
  466. * 00440000
  467. LSTSUSER DS 0H @V60BC11 00441000
  468. L R15,=A(DMKSYSAP) @VMI0016 00442000
  469. CLI 0(R15),YES SYSTEM GENERATED FOR AP? @VMI0016 00443000
  470. BNE LSTAPU NO, ONLY ONE SET OF PAGTABLES @VMI0016 00444000
  471. TM APSTAT1,MPFEAT SYSTEM HAS MP FEATURE? @VMI0016 00445000
  472. BZ LSTAPU NO, ONLY ONE SET OF PAGTABLES @V60BC11 00446000
  473. CLC VMSHRPRC,LPUADDR+1 LAST SERVICED ON THIS PROC @V60BC11 00447000
  474. BNE LSTOTHER NO, UNSHARING FOR OTHER PROCESSOR@V60BC11 00448000
  475. TM APSTAT1,PROCIPL IS THIS THE MAIN (IPL) PROC? @V60B7AA 00449100
  476. BO LSTCPU YES, SETUP FOR CPU @V60BC11 00450000
  477. LA R4,0 NO, LOAD CPU FRET INDEX @V60BC11 00451000
  478. B SAVEVMA JOIN COMMON CODE @V60BC11 00452000
  479. LSTCPU DS 0H @V60BC11 00453000
  480. LA R4,PAGBMP LOAD APU FRET INDEX @V60BC11 00454000
  481. B SAVEVMA JOIN COMMON CODE @V60BC11 00455000
  482. LSTOTHER DS 0H @V60BC11 00456000
  483. TM APSTAT1,PROCIPL IS THIS THE MAIN (IPL) PROC? @V60B7AA 00457100
  484. BO LSTAPU YES, SET UP FOR CPU @VMI0016 00458000
  485. LA R4,PAGBMP YES, LOAD APU FRET INDEX @V60BC11 00459000
  486. B SAVEVMA JOIN COMMON CODE @V60BC11 00460000
  487. LSTAPU DS 0H @V60BC11 00461000
  488. LA R4,0 LOAD CPU FRET INDEX @V60BC11 00462000
  489. SAVEVMA DS 0H @V60BC11 00463000
  490. ST R4,SAVEWRK4 SAVE INDEX FOR FRETSHR @V60BC11 00464000
  491. TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00465000
  492. BO SAVEVMA1 YES, NO VMABLOK TO FRET @V60BC11 00466000
  493. ICM R15,B'0111',SAVEWRK1+1 LOAD ADDR PREV VMABLOK @V60BC11 00467000
  494. LR R1,R9 LOAD ADDR VMABLOK FOR FRET @V60BC11 00468000
  495. L R9,VMAFPNT LOAD ADDR NEXT VMABLOK @V60BC11 00469000
  496. ST R9,VMAFPNT-VMABLOK(,R15) DEQUEUE CURRENT VMABLOK@V60BC11 00470000
  497. LA R0,VMASIZE LOAD NUMBER DOUBLEWORDS @V60BC11 00471000
  498. CALL DMKFRET RETURN THE VMABLOK @V60BC11 00472000
  499. SAVEVMA1 DS 0H @V60BC11 00473000
  500. LH R0,VMSHRSYS LOAD SHARED SYSTEM COUNT @V60BC11 00474000
  501. BCT R0,SAVEVMA2 DECREMENT COUNTER @V60BC11 00475000
  502. NI VMOSTAT,X'FF'-VMSHR GONE TO ZERO,RESET SHARE BIT@V60BC11 00476000
  503. SAVEVMA2 DS 0H @V60BC11 00477000
  504. STH R0,VMSHRSYS STORE UPDATED COUNTER @V60BC11 00478000
  505. LM R1,R2,SHRFPNT UNCHAIN THE SHRTABLE@V60BC11 00479000
  506. STCM R1,B'0111',SHRFPNT+1-SHRTABLE(R2) FROM SHARED @VMI0085 00480000
  507. ST R2,SHRBPNT-SHRTABLE(,R1) SYSTEM QUEUE @V60BC11 00481000
  508. L R15,=A(DMKSYSAP) @VMI0016 00482000
  509. CLI 0(R15),YES SYSTEM GENERATED FOR AP? @VMI0016 00483000
  510. BNE MAKEPRVT NO, JUST MAKE TABLES PRIVATE @VMI0016 00484000
  511. TM APSTAT1,MPFEAT SYSTEM HAS MP FEATURE? @VMI0016 00485000
  512. BZ MAKEPRVT NO, JUST MAKE TABLES PRIVATE @V60BC11 00486000
  513. TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00487000
  514. BO MAKEPRVT YES, ONLY SINGLE SET @V60BC11 00488000
  515. BAL R14,FRETSHR YES, RETURN OTHER PAGTABLE @V60BC11 00489000
  516. MAKEPRVT DS 0H @V60BC11 00490000
  517. L R2,SHRSEGCT LOAD SHARED SEGMENT COUNT @V60BC11 00491000
  518. BCTR R2,0 DECREMENT FOR INDEXING @V60BC11 00492000
  519. LASTLOOP DS 0H @V60BC11 00493000
  520. SLR R8,R8 ZIP REG @V60BC11 00494000
  521. IC R8,SHRSEGNM(R2) INSERT SEGMENT NUMBER @V60BC11 00495000
  522. SLL R8,2 TIMES 4 FOR INDEXING @V60BC11 00496000
  523. AL R8,VMSEG LOAD ADDR SEGTABLE ENTRY @V60BC11 00497000
  524. L R6,SEGPAGE LOAD ADDR PTO @V60BC11 00498000
  525. N R6,CLCNTINV CLEAR UNWANTED BITS @V60BC11 00499000
  526. S R6,F16 BACKUP TO HEADER @V60BC11 00500000
  527. LA R5,PAGTSWP(,R6) LOAD ADDR SWPTABLE HEADER @V60BC11 00501000
  528. L R15,SWPVM-SWPTABLE(,R5) SAVE OLD OWNER @V60BC11 00502000
  529. ST R11,SWPVM-SWPTABLE(,R5) REASSIGN SLOT OWNER @V60BC11 00503000
  530. NI SWPFLAG2-SWPTABLE(R5),X'FF'-SWPAPP SET FOR MAIN @V60BC11 00504000
  531. LA R5,SWPFLAG-SWPTABLE(,R5) LOAD ADDR 1ST SWAP @V60BC11 00505000
  532. * TABLE ENTRY @V60BC11 00506000
  533. SLR R0,R0 ZIP REG @V60BC11 00507000
  534. ST R0,PAGSHR-PAGTABLE(,R6) ZERO POINTER TO SHRTABLE@V60BC11 00508000
  535. USING SWPFLAG,R5 @V60BC11 00509000
  536. A R6,F16 RESET TO PTO @V60BC11 00510000
  537. L R3,SEGPAGE LOAD STE @V60BC11 00511000
  538. SRL R3,28 SHIFT FOR NUMBER OF PTES @V60BC11 00512000
  539. LA R3,1(R3) PLUS ONE FOR LOOP CONTROL @V60BC11 00513000
  540. LSTCKPTE DS 0H @V60BC11 00514000
  541. LH R1,PAGCORE USE CORTABLE ENTRY FOR TEST @VA13426 00515000
  542. N R1,REFMASK FORCE OFF REFERENCE BIT @VA13426 00515300
  543. CH R1,INVLPTE FRAME BEEN ASSIGNED @VA13426 00515600
  544. BE LSTNXPTE NO, SKIP TO NEXT PTE @V60BC11 00516000
  545. LH R7,PAGCORE LOAD CORTABLE INDEX @V60BC11 00517000
  546. N R7,RESMASK CLEAR UNWANTED BITS @V60BC11 00518000
  547. A R7,ACORETBL LOAD ADDR CORTABLE ENTRY @V60BC11 00519000
  548. TM PAGCORE+1,PAGINVAL CHANGED PAGE @V60BC11 00520000
  549. BZ RSTSHARE NO, JUST RESET FROM SHARE @V60BC11 00521000
  550. TM CORFLAG,CORFREE+CORFLUSH FREE/FLUSH LIST PAGE @V60BC11 00522000
  551. BNZ LSTNXPTE YES, CHECK NEXT PTE @V60BC11 00523000
  552. RSTSHARE DS 0H @V60BC11 00524000
  553. NI CORFLAG,X'FF'-CORSHARE RESET SHARED FRAME BIT @V60BC11 00525000
  554. L R14,=A(DMKPTRSC) LOAD ADDR OF SHARED FRAME CTR @V60BC11 00526000
  555. L R1,0(R14) LOAD SHARED FRAME COUNT @V60BC11 00527000
  556. BCTR R1,0 DECREMENT COUNT @V60BC11 00528000
  557. ST R1,0(R14) STORE UPDATED COUNT @V60BC11 00529000
  558. TM CORFLAG,CORCFLCK FRAME LOCKED ?? @V60BC11 00530000
  559. BO RSTSHAR1 YES, SKIP UPDATE OF FRAME COUNT @V60BC11 00531000
  560. L R14,CORVM ADDR OWNER'S VMBLOK @V60BC11 00532000
  561. LH R1,VMPAGES-VMBLOK(,R14) LOAD OWNER'S FRAME COUNT@V60BC11 00533000
  562. BCTR R1,0 DECREMENT FOR THIS FRAME @V60BC11 00534000
  563. LTR R1,R1 WILL COUNT GO NEGATIVE ? @V60BC11 00535000
  564. BM ERROR6 YES - ABEND @V60BC11 00536000
  565. STH R1,VMPAGES-VMBLOK(,R14) STORE UPDATED COUNTER @V60BC11 00537000
  566. RSTSHAR1 DS 0H @V60BC11 00538000
  567. LH R1,VMPAGES LOAD USER'S FRAME COUNT @V60BC11 00539000
  568. LA R1,1(R1) INCREMENT FOR THIS FRAME @V60BC11 00540000
  569. STH R1,VMPAGES STORE UPDATED COUTNER @V60BC11 00541000
  570. ST R11,CORVM UPDATE FRAME OWNERSHIP @V60BC11 00542000
  571. LSTNXPTE DS 0H @V60BC11 00543000
  572. TM SWPFLAG,SWPRECMP BACKING STORE ALLOCATED? @V60BC11 00544000
  573. BO NOTALLO NO, SKIP UPDATING COUNTERS @V60BC11 00545000
  574. SR R1,R1 CLEAR @V60BC11 00546000
  575. IC R1,SWPCODE GET VOLUME INDEX CODE @V60BC11 00547000
  576. SLL R1,3 CALCULATE OWNED ENTRY DISP @V60BC11 00548000
  577. AL R1,=A(DMKSYSOW) OWNED LIST ENTRY @V60BC11 00549000
  578. LH R1,OWNDRDEV-OWNDLIST(,R1) RDEVBLOK INDEX @V60BC11 00550000
  579. SLL R1,3 RDEVBLOK DISPLACEMENT @V60BC11 00551000
  580. AL R1,ARIODV RDEVBLOK POINTER @V60BC11 00552000
  581. LA R14,VMPDRUM-VMBLOK ASSUME DRUM ALLOCATION @V60BC11 00553000
  582. USING RDEVBLOK,R1 @V60BC11 00554000
  583. CLI RDEVTYPE,TYP2305 IS IT A DRUM? @V60BC11 00555000
  584. BE *+8 YES @V60BC11 00556000
  585. DROP R1 @V60BC11 00557000
  586. LA R14,VMPDISK-VMBLOK NO, RESET TO DISK COUNTER @V60BC11 00558000
  587. LH R1,0(R14,R15) GET OLD OWNERS COUNT @V60BC11 00559000
  588. BCTR R1,0 DECREMENT COUNT BY ONE @V60BC11 00560000
  589. STH R1,0(R14,R15) STORE UPDATED COUNTER @V60BC11 00561000
  590. LH R1,0(R14,R11) GET NEW OWNERS COUNT @V60BC11 00562000
  591. LA R1,1(,R1) INCREMENT COUNT BY ONE @V60BC11 00563000
  592. STH R1,0(R14,R11) STORE UPDATED COUNTER @V60BC11 00564000
  593. NOTALLO DS 0H @V60BC11 00565000
  594. LA R6,PAGCORE+2 BUMP TO NEXT PTE @V60BC11 00566000
  595. NI SWPFLAG,X'FF'-SWPSHR RESET SHARED BIT @V60BC11 00567000
  596. LA R5,8(R5) BUMP TO NEXT SWPTABLE ENTRY @V60BC11 00568000
  597. BCT R3,LSTCKPTE IF MORE ENTRIES PROCESS THEM @V60BC11 00569000
  598. S R2,F1 DECREMENT SEGMENT COUNT @V60BC11 00570000
  599. BNM LASTLOOP MORE SEGMENT TO PROCESS @V60BC11 00571000
  600. LH R0,SHRTSIZE LOAD NUMBER DOUBLEWORDS @V60BC11 00572000
  601. LR R1,R10 LOAD ADDR SHARED SHRTABLE @V60BC11 00573000
  602. CALL DMKFRET RETURN SHARED SEGMENT SHRTABLE @V60BC11 00574000
  603. NI SAVEWRK1,X'FF'-INVLSEG RESET INVALID SEGMENT BIT@V60BC11 00575000
  604. B UNSHEXIT EXIT @V60BC11 00576000
  605. DROP R5 @V60BC11 00577000
  606. USING SWPTABLE,R5 @V60BC11 00578000
  607. EJECT @V60BC11 00579000
  608. * 00580000
  609. * THIS SUBROUTINE WILL OBTAIN A SINGLE SET OF PAGE AND SWAP TABLES 00581000
  610. * FROM FREE STORAGE. INITIALIZE THEIR HEADERS, FLAG ALL PTES 00582000
  611. * AS INVALID AND TURN ON THE SWPCHG1 AND SWPRECMP BITS 00583000
  612. * IN EACH SWPTABLE ENTRY. IT WILL ALSO UPDATE THE USERS SEGMENT 00584000
  613. * TABLE ENTRY TO POINT TO THIS NEW PAGE TABLE ORIGIN. THIS ROUTINE 00585000
  614. * WILL ALSO SEARCH THE OLD PAGE TABLE(S) FOR ALL FRAMES 00586000
  615. * ASSIGNED TO THIS USER, AND REASSIGN THEM TO ASYSVM. 00587000
  616. * 00588000
  617. BLPAGSWP DS 0H BUILD PAGE + SWAP TABLES @V60BC11 00589000
  618. ST R14,SAVEWRK9 SAVE THE RETURN ADDRESS @V60BC11 00590000
  619. LA R0,FULLPAGE LOAD NUMBER DOUBLEWORDS @V60BC11 00591000
  620. L R15,=A(DMKSYSAP) -> DMKSYS AP setting HRC066DK 00591100
  621. CLI 0(R15),C'Y' Is AP enabled? HRC066DK 00591200
  622. BNE *+6 No HRC066DK 00591300
  623. AR R0,R0 Double table size for APHRC066DK 00591400
  624. CALL DMKFREE OBTAIN NEW PAGE + SWAP TABLES @V60BC11 00592000
  625. XC 0(FULLPAGE*8,R1),0(R1) ZERO THE TABLES @V60BC11 00593000
  626. LR R5,R1 SAVE ADDR IN REG @V60BC11 00594000
  627. DROP R6 @V60BC11 00595000
  628. USING PAGTABLE,R1 @V60BC11 00596000
  629. STCK PAGSTMP TIMESTAMP NEW PAGTABLE @V60BC11 00597000
  630. BC 12,CLOCKOK IS CLOCK FUNCTIONING @V60BC11 00598000
  631. DOWNWEGO DS 0H CLOCK DAMAGED ABEND CVT001 @V60BC11 00599000
  632. GOTO DMKCVTAB @V60BC11 00600000
  633. CLOCKOK DS 0H @V60BC11 00601000
  634. LA R0,1 @V60BC11 00602000
  635. ST R0,PAGACT SET PAGACT = 0 PAGTOT = 1 @V60BC11 00603000
  636. LA R14,PAGTSWP+8(,R1) LOAD ADDR 1ST SWPTABLE ENTRY @V60BC11 00604000
  637. ST R14,PAGSWP STORE PTR SWPTABLE IN PAGTABLE @V60BC11 00605000
  638. SL R14,F8 BACKUP TO SWPTABLE HEADER @V60BC11 00606000
  639. DROP R5 @V60BC11 00607000
  640. USING SWPTABLE,R14 @V60BC11 00608000
  641. ST R11,SWPVM STORE PTR VMBLOK IN SWPTABLE @V60BC11 00609000
  642. L R0,SEGPAGE LOAD STE @V60BC11 00610000
  643. SRL R0,28 SHIFT FOR NUMBER PTE'S @V60BC11 00611000
  644. A R0,F1 PLUS ONE FOR LOOP CONTROL @V60BC11 00612000
  645. A R1,F16 LOAD ADDR PTO @V60BC11 00613000
  646. STCM R1,B'0111',SEGPAGE+1 UPDATE SEGTABLE ENTRY @V60BC11 00614000
  647. OI SEGPAGE+3,SEGINV MARK ENTRY AS INVALID @V60BC11 00615000
  648. ST R1,SWPPAG STORE PTR PTO IN SWPTABLE @V60BC11 00616000
  649. LA R14,SWPFLAG LOAD ADDR 1ST SWPTABLE ENTRY @V60BC11 00617000
  650. LA R6,PAGTSWP(,R6) LOAD ADDR SHARED SWPTABLE HEADER@V60BC11 00618000
  651. LA R6,SWPFLAG-SWPTABLE(,R6) LOAD ADDR 1ST @V60BC11 00619000
  652. * SWPTABLE ENTRY @V60BC11 00620000
  653. SLR R15,R15 ZIP REG FOR PAGE NUMBER COUNTER @V60BC11 00621000
  654. DROP R1,R14 @V60BC11 00622000
  655. USING PAGCORE,R1 @V60BC11 00623000
  656. USING SWPFLAG,R14 @V60BC11 00624000
  657. STM R2,R5,TEMPR2 SAVE REGISTERS FOR MAINLINE @V60BC11 00625000
  658. L R2,SAVEWRK2 GET ADDR OF OLD PAGTABLE @V60BC11 00626000
  659. AL R2,F16 BUMP TO PTO @V60BC11 00627000
  660. NXTENTRY DS 0H @V60BC11 00628000
  661. MVC PAGCORE,INVLPTE INVALIDATE PTE @V60BC11 00629000
  662. TM PAGCORE+1-PAGCORE(R2),PAGINVAL OLD PTE VALID @V60BC11 00630000
  663. BO NXTENT1 NO, CONTINUE CHECKING @V60BC11 00631000
  664. BAL R5,CKOLDPTE YES, CHECK FRAME STATUS @V60BC11 00632000
  665. NXTENT1 TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V60BC11 00633000
  666. BZ NXTENT5 NO, CONTINUE BUILDING @V60BC11 00634000
  667. TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00635000
  668. BO NXTENT5 YES, ONLY SINGLE SET @V60BC11 00636000
  669. LR R4,R2 SAVE CURRENT OLD PTE ADDR @V60BC11 00637000
  670. TM APSTAT1,PROCIPL RUNNING ON THE MAIN (IPL) PROC? @V60B7AA 00638100
  671. BZ NXTENT2 NO, GET MAIN PAGTABLE @V60BC11 00639000
  672. AL R2,SWLENGTH GET ADDR ATTACHED PTE @V60BC11 00640000
  673. B NXTENT3 CONTINUE CHECKING @V60BC11 00641000
  674. NXTENT2 SL R2,SWLENGTH GET ADDR MAIN PTE @V60BC11 00642000
  675. NXTENT3 TM PAGCORE+1-PAGCORE(R2),PAGINVAL PTE VALID @V60BC11 00643000
  676. BO NXTENT4 NO, RESET POINTER @V60BC11 00644000
  677. BAL R5,CKOLDPTE CHECK ON THIS FRAMES STATUS @V60BC11 00645000
  678. NXTENT4 LR R2,R4 RESTORE ADDR OLD PTE @V60BC11 00646000
  679. NXTENT5 DS 0H @V60BC11 00647000
  680. STC R15,SWPFLAG+1 STORE PAGE NUMBER IN ENTRY @V60BC11 00648000
  681. OI SWPFLAG,SWPALLOC+SWPCHG1+SWPRECMP FLAG NEW @VMI0064 00649000
  682. * SWAP TABLE ENTRY @V60BC11 00650000
  683. MVC SWPKEY1(4),SWPKEY1-SWPFLAG(R6) COPY KEYS @V60BC11 00651000
  684. LA R1,PAGCORE+2 BUMP TO NEXT NEW PTE @V60BC11 00652000
  685. LA R6,8(,R6) BUMP TO NEXT OLD SWPTABLE ENTRY @V60BC11 00653000
  686. LA R14,8(,R14) BUMP TO NEXT NEW SWPTABLE ENTRY @V60BC11 00654000
  687. LA R15,1(,R15) INCREMENT PAGE NUMBER @V60BC11 00655000
  688. LA R2,2(,R2) BUMP TO NEXT OLD PTE @V60BC11 00656000
  689. BCT R0,NXTENTRY IF MORE ENTRIES, PROCESS THEM @V60BC11 00657000
  690. * INCREMENT TTSEGCNT 00658000
  691. LA R2,1 INCREMENT VALUE @VMI0051 00659000
  692. L R3,PREFIXA ADDRESS OF PSA @VMI0051 00660000
  693. AL R2,TTSEGCNT-PSA(,R3) COUNT OF TOTAL PG/SWAP @VMI0051 00661000
  694. * TABLES IN SYSTEM +1 00662000
  695. ST R2,TTSEGCNT-PSA(,R3) SAVE UPDATED COUNT @VMI0051 00663000
  696. LM R2,R5,TEMPR2 RESTORE MAINLINE REGISTERS @V60BC11 00664000
  697. L R14,SAVEWRK9 RESTORE RETURN ADDRESS @V60BC11 00665000
  698. BR R14 RETURN TO CALLER @V60BC11 00666000
  699. DROP R1,R14 @V60BC11 00667000
  700. USING PAGCORE,R6 @V60BC11 00668000
  701. USING SWPTABLE,R5 @V60BC11 00669000
  702. SPACE 2 @V60BC11 00670000
  703. CKOLDPTE DS 0H @V60BC11 00671000
  704. LH R3,PAGCORE-PAGCORE(,R2) GET CORTABLE INDEX @V60BC11 00672000
  705. N R3,RESMASK CLEAR UNWANTED BITS @V60BC11 00673000
  706. AL R3,ACORETBL GET ADDR OF CORTABLE ENTRY @V60BC11 00674000
  707. CL R11,CORVM-CORTABLE(,R3) IS USER FRAME OWNER @V60BC11 00675000
  708. BNE CKOLDEXT NO, RETURN TO CALLER @V60BC11 00676000
  709. MVC CORVM-CORTABLE(4,R3),ASYSVM REASSIGN FRAME @V60BC11 00677000
  710. TM CORFLAG-CORTABLE(R3),CORCFLCK FRAME LOCKED ?? @V60BC11 00678000
  711. BO CKOLDPT1 YES, SKIP UPDATE OF FRAME COUNT @V60BC11 00679000
  712. LH R3,VMPAGES GET USER'S FRAME COUNT @V60BC11 00680000
  713. BCTR R3,0 DECREMENT USER'S FRAME COUNTER @V60BC11 00681000
  714. LTR R3,R3 COUNT GONE NEGATIVE @V60BC11 00682000
  715. BM ERROR6 YES, ABEND THE SYSTEM @V60BC11 00683000
  716. STH R3,VMPAGES NO, STORE UPDATED COUNTER @V60BC11 00684000
  717. CKOLDPT1 DS 0H @V60BC11 00685000
  718. ST R11,TEMPR11 SAVE CURRENT USER @V60BC11 00686000
  719. L R11,ASYSVM GET ADDR OF SYSTEM VMBLOK @V60BC11 00687000
  720. LH R3,VMPAGES GET SYSTEM'S FRAME COUNTER @V60BC11 00688000
  721. AL R3,F1 INCREMENT IT @V60BC11 00689000
  722. STH R3,VMPAGES STORE UPDATED COUNTER @V60BC11 00690000
  723. L R11,TEMPR11 RESTORE ADDR OF CURRENT USER @V60BC11 00691000
  724. CKOLDEXT DS 0H @V60BC11 00692000
  725. BR R5 RETURN TO CALLER @V60BC11 00693000
  726. EJECT @V60BC11 00694000
  727. * 00695000
  728. * THIS SUBROUTINE IS CALLED TO ACTUALLY PERFORM THE RELEASE OF 00696000
  729. * ALL BACKING STORAGE SLOTS, REAL FRAMES AND THE FREE STORAGE 00697000
  730. * ASSOCIATED WITH A SHARED PAGE AND SWAP TABLE SET. 00698000
  731. * 00699000
  732. FRETSHR DS 0H RETURN A SHARED PAGE + SWPTABLE @V60BC11 00700000
  733. ST R14,SAVEWRK9 SAVE THE RETURN ADDRESS @V60BC11 00701000
  734. L R4,SHRSEGCT LOAD NUMBER OF SHARED SEGEMENTS @V60BC11 00702000
  735. SLR R8,R8 ZIP REG FOR INDEXING @V60BC11 00703000
  736. LR R3,R4 COUNT TO R3 @V60BC11 00704000
  737. LA R3,3(,R3) BUMP TO FULLWORD @V60BC11 00705000
  738. SRL R3,2 ADDRESS @V60BC11 00706000
  739. SLL R3,2 ... @V60BC11 00707000
  740. LA R3,SHRPAGE-4(R3) LOAD ADDR1ST SHRPAGE ENTRY @V60BC11 00708000
  741. USING SHRPAGE,R3 @V60BC11 00709000
  742. FSHRLOOP DS 0H @V60BC11 00710000
  743. L R6,SHRPAGE(R8) LOAD ADDR PTO @V60BC11 00711000
  744. LR R0,R6 STE TO REG 0 @V60BC11 00712000
  745. LA R6,0(,R6) CLEAR PTE COUNTER @V60BC11 00713000
  746. SRL R0,28 SHIFT TO OBTAIN NUMBER PTES @V60BC11 00714000
  747. A R0,F1 PLUS 1 FOR LOOP CONTROL @V60BC11 00715000
  748. A R6,SAVEWRK4 ADJUST TO PROPER SET @V60BC11 00716000
  749. FSHRCFLP DS 0H @V60BC11 00717000
  750. LR R5,R6 PTO ADDR TO R5 @V60BC11 00718000
  751. S R5,F16 BACKUP TO PAGTABLE HEADER @V60BC11 00719000
  752. ST R5,SAVEWRK5 SAVE ADDR OF PAGTABLE HEADER @V60BC11 00720000
  753. LA R5,PAGTSWP(,R5) LOAD ADDRESS OF SWPTABLE @V60BC11 00721000
  754. LA R5,SWPFLAG-SWPTABLE(,R5) LOAD ADDR 1ST SWPTABLE @V60BC11 00722000
  755. * ENTRY @V60BC11 00723000
  756. FSHPTELP DS 0H @V60BC11 00724000
  757. USING SWPFLAG,R5 @V60BC11 00725000
  758. TM SWPFLAG,SWPRECMP SLOT ASSIGNED @V60BC11 00726000
  759. BO FCKINV NO, CHECK VALIDITY OF PTE @V60BC11 00727000
  760. ST R11,SAVEWRK2 SAVE ADDR USER'S VMBLOK @V60BC11 00728000
  761. L R1,SAVEWRK5 LOAD ADDR SWPTABLE HEADER @V60BC11 00729000
  762. LA R1,PAGTSWP(,R1) LOAD ADDR OF SWPTABLE @V60BC11 00730000
  763. L R11,SWPVM-SWPTABLE(,R1) LOAD VMBLOK ADDR OF OWNR@V60BC11 00731000
  764. CALL DMKPGTPR RELEASE THE SLOT @V60BC11 00732000
  765. L R11,SAVEWRK2 RESTORE PTR USER'S VMBLOK @V60BC11 00733000
  766. FCKINV DS 0H @V60BC11 00734000
  767. LH R7,PAGCORE LOAD CORTABLE INDEX @V60BC11 00735000
  768. N R7,RESMASK CLEAR UNWANTED BITS @V60BC11 00736000
  769. LTR R7,R7 FRAME BEEN ASSIGNED @V60BC11 00737000
  770. BZ FUPDTCNT NO, UPDATE COUNTERS @V60BC11 00738000
  771. A R7,ACORETBL LOAD ADDR CORTABLE ENTRY @V60BC11 00739000
  772. TM CORFLAG,CORFREE IS THIS A FREELIST PAGE @V60BC11 00740000
  773. BZ FCKFLUSH NO, CHECK FOR FLUSHLIST @V60BC11 00741000
  774. SLR R15,R15 YES, ZIP REG @V60BC11 00742000
  775. ST R15,CORPGPNT ZERO PAGTABLE POINTER @V60BC11 00743000
  776. STCM R15,B'0111',CORSWPNT+1 ZERO SWPTABLE POINTER @V60BC11 00744000
  777. B FUPDTCNT GO PROCESS NEXT PTE @V60BC11 00745000
  778. FCKFLUSH DS 0H @V60BC11 00746000
  779. TM CORFLAG,CORFLUSH IS THIS A FLUSHLIST PAGE @V60BC11 00747000
  780. BZ FCKRSV NO, CHECK FOR LOCKED PAGE @V60BC11 00748000
  781. L R14,=A(DMKPTRUC) FLUSHED PAGE COUNT @V60BC11 00749000
  782. L R15,0(R14) LOAD COUNT @V60BC11 00750000
  783. S R15,F1 MINUS ONE @V60BC11 00751000
  784. BM ERROR7 CANNOT BE NEGATIVE @V60BC11 00752000
  785. ST R15,0(R14) STORE NEW COUNT @V60BC11 00753000
  786. LM R14,R15,CORFPNT YES, DEQUEUE THE ELEMENT @V60BC11 00754000
  787. ST R14,CORFPNT-CORTABLE(,R15) FROM THE @V60BC11 00755000
  788. ST R15,CORBPNT-CORTABLE(,R14) FLUSH LIST @V60BC11 00756000
  789. B FPTRFT PUT FRAME ON FREELIST @V60BC11 00757000
  790. FCKRSV DS 0H @V60BC11 00758000
  791. TM CORFLAG,CORRSV FRAME RESERVED @V60BC11 00759000
  792. BZ FUPTRSC NO, UPDATE SHARED COUNTER @V60BC11 00760000
  793. L R14,=A(DMKPTRRC) LOAD ADDR RESERVED COUNTER @V60BC11 00761000
  794. L R15,0(,R14) LOAD RESERVED COUNT @V60BC11 00762000
  795. BCTR R15,0 DECREMENT COUNT @V60BC11 00763000
  796. ST R15,0(R14) STORE UPDATED COUNTER @V60BC11 00764000
  797. FUDSPNP DS 0H @V60BC11 00765000
  798. L R14,=A(DMKDSPNP) LOAD ADDR AVAILABLE COUNTER @V60BC11 00766000
  799. LA R15,1 LOAD INCREMENT VALUE @V60BC11 00767000
  800. A R15,0(R14) INCREMENT COUNTER @V60BC11 00768000
  801. ST R15,0(R14) STORE UPDATED COUNTER @V60BC11 00769000
  802. FUPTRSC DS 0H @V60BC11 00770000
  803. L R14,=A(DMKPTRSC) LOAD ADDR SHARED FRAME COUNT @V60BC11 00771000
  804. L R15,0(R14) LOAD SHARED FRAME COUNT @V60BC11 00772000
  805. BCTR R15,0 DECREMENT COUNT @V60BC11 00773000
  806. ST R15,0(,R14) STORE UPDATED COUNT @V60BC11 00774000
  807. FPTRFT DS 0H @V60BC11 00775000
  808. SLR R15,R15 ZIP REG @V60BC11 00776000
  809. ST R15,CORPGPNT ZERO PTO POINTER @V60BC11 00777000
  810. STCM R15,B'0111',CORSWPNT+1 ZERO SWPTABLE POINTER @V60BC11 00778000
  811. TM CORFLAG,CORIOLCK FRAME I/O LOCKED @V60BC11 00779000
  812. BO ERROR5 YES, ABEND @V60BC11 00780000
  813. CALL DMKPTRFT RELEASE THE FRAME @V60BC11 00781000
  814. FUPDTCNT DS 0H @V60BC11 00782000
  815. LA R6,PAGCORE+2 BUMP TO NEXT PTE @V60BC11 00783000
  816. LA R5,8(,R5) BUMP TO NEXT SWPTABLE ENTRY @V60BC11 00784000
  817. BCT R0,FSHPTELP IF MORE PTES, PROCESS THEM @V60BC11 00785000
  818. LA R0,FULLPAGE LOAD NUMBER OF DOUBLEWORDS @V60BC11 00786000
  819. * FOR PAGE AND SWAP TABLES @V60BC11 00787000
  820. L R15,=A(DMKSYSAP) -> DMKSYS AP setting HRC066DK 00787100
  821. CLI 0(R15),C'Y' Is AP enabled? HRC066DK 00787200
  822. BNE *+6 No HRC066DK 00787300
  823. AR R0,R0 Double table size for APHRC066DK 00787400
  824. L R1,SAVEWRK5 LOAD ADDRESS OF PAGTABLE @V60BC11 00788000
  825. N R1,CLCNTINV CLEAR UNWANTED BITS @V60BC11 00789000
  826. CALL DMKFRET RETURN PAGE + SWAP TABLES @V60BC11 00790000
  827. L R15,PREFIXA PREFIX VALUE TO ADDRESS PSA @VA13356 00790100
  828. * AT ABSOLUTE 0 00790200
  829. L R0,TTSEGCNT-PSA(,R15) NUM OF PG/SWP TBLS IN SYS @VA13356 00790300
  830. BCTR R0,R0 DECREMENT PAG/SWP TABLE COUNT @VA13356 00790400
  831. ST R0,TTSEGCNT-PSA(,R15) STORE IT BACK IN THE PSA @VA13356 00790500
  832. FSHRBMP DS 0H @V60BC11 00791000
  833. LA R8,L'SHRPAGE(,R8) BUMP SHRPAGE INDEX @V60BC11 00792000
  834. BCT R4,FSHRLOOP IF MORE SEGMENT, PROCESS THEM @V60BC11 00793000
  835. L R14,SAVEWRK9 RESTORE RETURN ADDRESS @V60BC11 00794000
  836. BR R14 RETURN TO CALLER @V60BC11 00795000
  837. DROP R3,R5 @V60BC11 00796000
  838. USING SWPTABLE,R5 @V60BC11 00797000
  839. EJECT 00798000
  840. * 00799000
  841. * THIS SUBROUTINE CONVERTS THE REAL ADDRESS OF A SHARED PAGE 00800000
  842. * AND OBTAINS THE ADDRESS OF THE SHRTABLE ASSOCIATED WITH THE 00801000
  843. * PAGE AND THE ADDRESS OF THE USERS VMABLOK ASSOCIATED WITH 00802000
  844. * THIS SHRTABLE. 00803000
  845. * 00804000
  846. GETSHRNM LR R7,R2 ADDRESS OF REAL PAGE @V60BC11 00805000
  847. N R7,XPAGNUM DROP DISPLACEMENT @V60BC11 00806000
  848. SRL R7,8 INDEX INTO CORTABLE @V60BC11 00807000
  849. AL R7,ACORETBL R7= ADDRESS OF CORTABLE ENTRY @V60BC11 00808000
  850. L R5,CORSWPNT GET ADDRESS OF SWPTABLE @V60BC11 00809000
  851. L R6,CORPGPNT GET ADDRESS OF PAGTABLE ENTRY @V60BC11 00810000
  852. SLR R15,R15 CLEAR PAGE NUMBER @V60BC11 00811000
  853. USING SWPFLAG,R5 TEMPORARY @V60BC11 00812000
  854. IC R15,SWPVPAGE GET VIRTUAL PAGE NUMBER @V60BC11 00813000
  855. USING SWPTABLE,R5 @V60BC11 00814000
  856. SLL R15,1 DBL. FOR 2 BYTE PG TABLE ENTRIES @V60BC11 00815000
  857. SLR R6,R15 R6= BEGINING OF PAGTABLE @V60BC11 00816000
  858. SL R6,F16 BACK-UP TO PAGTABLE HEADER @V60BC11 00817000
  859. USING PAGTABLE,R6 @V60BC11 00818000
  860. L R10,PAGSHR GET POINTER TO SHRTABLE @V60BC11 00819000
  861. LTR R10,R10 THERE BE BE ONE @V60BC11 00820000
  862. BNP ERROR1 ERROR IF NO SHRTABLE @V60BC11 00821000
  863. ST R10,SAVEWRK4 SAVE SHRTABLE POINTER @V60BC11 00822000
  864. TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SEGMENTS @V60BC11 00823000
  865. BO FNDVMABK YES, NO VMABLOK TO FIND @V60BC11 00824000
  866. LA R9,VMASSIST LOAD ADDR VMABLOK ANCHOR @V60BC11 00825000
  867. STCM R9,B'0111',SAVEWRK1+1 SAVE AS PREV VMABLOK PTR @V60BC11 00826000
  868. L R9,VMASSIST GET POINTER TO VMABLOK @V60BC11 00827000
  869. LTR R9,R9 BETTER FIND A VMABLOK @V60BC11 00828000
  870. BNP ERROR2 CRASH IF NOT FOUND @V60BC11 00829000
  871. GETVMABK CLC VMANAME,SHRNAME DO NAMES MATCH ? @V60BC11 00830000
  872. BE FNDVMABK YES - @V60BC11 00831000
  873. STCM R9,B'0111',SAVEWRK1+1 SAVE PTR PREV VMABLOK @V60BC11 00832000
  874. L R9,VMAFPNT GET ADDRESS OF NEXT VMABLOK @V60BC11 00833000
  875. LTR R9,R9 THERE MUST BE A VMABLOK @V60BC11 00834000
  876. BNP ERROR2 ERROR IF NOT FOUND @V60BC11 00835000
  877. B GETVMABK CHECK ALL VMABLOKS @V60BC11 00836000
  878. FNDVMABK BR R3 RETURN TO CALLER @V60BC11 00837000
  879. EJECT 00838000
  880. SPACE 2 00839000
  881. ERROR1 ABEND 1 SHRTABLE NOT FOUND @V60BC11 00840000
  882. ERROR2 ABEND 2 VMABLOK NOT FOUND BY GETSHRNM RTN@V60BC11 00841000
  883. ERROR3 ABEND 3 SYSTEM NAME NOT FOUND IN DMKSNTBL@V60BC11 00842000
  884. * DURING UNSHARE PROCESSING @V60BC11 00843000
  885. ERROR4 ABEND 4 SYSVOL COULD NOT BE FOUND DURING @V60BC11 00844000
  886. * UNSHARE PROCESSING @V60BC11 00845000
  887. ERROR5 ABEND 5 SHARED FRAME LOCKED FOR I/O @V60BC11 00846000
  888. * DURING UNSHARE PROCESSING @V60BC11 00847000
  889. ERROR6 ABEND 6 VMPAGES TO GO NEGATIVE @V60BC11 00848000
  890. SPACE 1 00849000
  891. ERROR7 ABEND 7 FLUSHED PAGE COUNT IS NEGATIVE @V60BC11 00850000
  892. EJECT 00851000
  893. RESMASK DC A(X'FFF0') MASK FOR PAGE RESIDENT @V60BC11 00852000
  894. * 00853000
  895. CLCNTINV DC X'00FFFFFC' CLEAR COUNT, INVALID & @V60BC11 00854000
  896. * MIGRATED BIT MASK @V60BC11 00855000
  897. CLRSEGNM DC X'0000FF00' CLEAR ALL BUT PAGE NUMBER @V60BC11 00856000
  898. BUMPLOW DC X'00010000' INCREMENT/DECREMENT FOR PAGACT @V60BC11 00857000
  899. ACTTOT DC X'00010001' MASK FOR INCREMENTING OR @V60BC11 00858000
  900. * DECREMENT PAGACT AND PAGTOT @V60BC11 00859000
  901. REFMASK DC X'0000FFFE' MASK TO FORCE REFERENCE BIT OFF @VA13426 00860000
  902. INVLPTE DC X'0008' INVALID PTE BIT MASK @VA13426 00860500
  903. SWLENGTH DC F'192' LENGTH OF SHARED PAGE & @V60BC11 00861000
  904. * SWAP TABLES @V60BC11 00862000
  905. FORCEPG0 DC X'00FF0000' MASK FOR SEGMENT & PAGE 0 @V60BC11 00863000
  906. FORCEPGF DC X'0000F000' MASK FOR PAGE 'F' OF SEGMENT @V60BC11 00864000
  907. * 00865000
  908. HEX00 EQU X'00' VALUE OF X'00' @V60BC11 00866000
  909. HEXFF EQU X'FF' VALUE OF X'FF' @V60BC11 00867000
  910. * 00868000
  911. EMSG181 EQU 181 ERROR MESSAGE NUMBER 181 @V60BC11 00869000
  912. * 00870000
  913. YES EQU C'Y' SYSTEM GENERATED FOR AP @VMI0016 00871000
  914. SPACE 1 00872000
  915. * BITS DEFINED FOR SAVEWRK1 FLAG BYTE @V60BC11 00873000
  916. * 00874000
  917. INVLSEG EQU X'80' STE ENTRY WAS ORIGINALLY INVALID @V60BC11 00875000
  918. PTOBTAIN EQU X'40' PAGE & SWAP TABLES OBTAINED @V60BC11 00876000
  919. * 00877000
  920. FULLPAGE EQU X'C0'/8 NUMBER OF DOUBLEWORDS IN 16 ENTRY@V60BC11 00878000
  921. * PAGE AND SWAP TABLE SET @V60BC11 00879000
  922. PAGE2314 EQU 32 NUMBER OF PAGES PER CYLINDER @V60BC11 00880000
  923. * (2314/2319) @V60BC11 00881000
  924. PAGE3330 EQU 57 NUMBER OF PAGE PER CYLINDER @V60BC11 00882000
  925. * (3330) @V60BC11 00883000
  926. PAGE3350 EQU 120 NUMBER OF PAGES PER CYLINDER @V60BC11 00884000
  927. * (3350) @V60BC11 00885000
  928. PAGE3375 EQU 96 Number of pages per cylinder HRC106DK 00885100
  929. * (3375) HRC106DK 00885200
  930. PAGE3380 EQU 150 Number of pages per cylinder HRC106DK 00885300
  931. * (3380) HRC106DK 00885400
  932. PAGE2305 EQU 24 NUMBER OF PAGES PER CYLINDER @V60BC11 00886000
  933. * (2305/3340) @V60BC11 00887000
  934. SPACE 3 00888000
  935. LTORG * @V60BC11 00889000
  936. SPACE 3 00890000
  937. EMSGBLOK DSECT @V60BC11 00891000
  938. * DSECT FOR ERROR MESSAGE PARMS 00892000
  939. EMSGAREA DS 0CL16 MESSAGE AREA @V60BC11 00893000
  940. EMSGNAME DS CL8 AREA FOR NAME OF SHARED SYSTEM @V60BC11 00894000
  941. DS 2X FILLER @V60BC11 00895000
  942. EMSGADD1 DS CL2 FIRST PART OF ADDRESS @V60BC11 00896000
  943. EMSGADD2 DS CL4 LAST PART OF ADDRESS @V60BC11 00897000
  944. EMSGLEN EQU *-EMSGBLOK LENGTH OF BLOK IN BYTES @V60BC11 00898000
  945. EMSGSIZE EQU (*-EMSGBLOK)/8 SIZE OF EMSGBLOK IN DW'S @V60BC11 00899000
  946. SPACE 2 00900000
  947. COPY EQU @V60BC11 00901000
  948. COPY SAVE @V60BC11 00902000
  949. COPY VMBLOK @V60BC11 00903000
  950. COPY RBLOKS @V60BC11 00904000
  951. COPY DEVTYPES @V60BC11 00905000
  952. COPY ALLOC @V60BC11 00906000
  953. COPY CORE @V60BC11 00907000
  954. COPY SHRTABLE @V60BC11 00908000
  955. COPY SYSTBL @V60BC11 00909000
  956. PSA @V60BC11 00910000
  957. END 00911000