Table of Contents

DMKRPA Source

References

Source Listing

DMKRPA.ASSEMBLE.txt
  1. RPA TITLE 'DMKRPA (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME - 00005000
  6. * 00006000
  7. * DMKRPA 00007000
  8. * 00008000
  9. * FUNCTION - 00009000
  10. * 00010000
  11. * TO TRANSFER SPECIFIC DASD PAGES BETWEEN THE CALLER'S VIRTUAL 00011000
  12. * MEMORY SPACE AND THE BACKING STORE 00012000
  13. * 00013000
  14. * ATTRIBUTES - 00014000
  15. * 00015000
  16. * REENTRANT, RESIDENT, CALLED VIA SVC 00016000
  17. * 00017000
  18. * ENTRY POINTS - 00018000
  19. * 00019000
  20. * DMKRPAGT - MOVE THE SPECIFIED DASD PAGE FROM DASD TO THE SPEC- 00020000
  21. * IFIED PAGE IN THE USER'S VIRTUAL MEMORY SPACE 00021000
  22. * DMKRPAPT - MOVE THE PAGE FROM VIRTUAL MEMORY TO DASD 00022000
  23. * 00023000
  24. * ENTRY CONDITIONS - 00024000
  25. * 00025000
  26. * GPR0 = THE DASD ADDRESS OF THE PAGE, IN THE FORM (CCPD), 00026000
  27. * WHERE CC IS THE CYLINDER, P IS THE PAGE ON THE CYL- 00027000
  28. * INDER, AND D IS THE DEVICE CODE 00028000
  29. * GPR1 = THE VIRTUAL MEMORY PAGE ADDRESS 00029000
  30. * GPR2 = PARMS SUPPLIED TO DMKRPAGT TO BE PASSED TO DMKPTRAN - 00030000
  31. * MAY BE BRING AND/OR CHANGE 00031000
  32. * GPR11 = ADDRESS OF VMBLOK FOR OWNER OF VIRTUAL MEMORY 00032000
  33. * GPR12 = ADDRESS OF DMKRPAGT OR DMKRPAPT 00033000
  34. * GPR13 = ADDRESS OF SAVEAREA 00034000
  35. * 00035000
  36. * EXIT CONDITIONS - 00036000
  37. * 00037000
  38. * DMKRPAGT - NORMAL 00038000
  39. * CC = 0 00039000
  40. * GPR2 = REAL ADDRESS OF PAGE (PROVIDED THE BRING OPTION 00040000
  41. * WAS SPECIFIED) 00041000
  42. * 00042000
  43. * DMKRPAGT - ERROR 00043000
  44. * CC = 1 - DIAGNOSE 14 AND PAGE LOCKED FOR I/O 00043100
  45. * CC = 2 - SPECIFIED ADDRESS IS A SHARED PAGE 00044000
  46. * CC = 3 - FATAL IOERROR TRYING TO READ PAGE 00045000
  47. * 00046000
  48. * DMKRPAPT - NORMAL 00047000
  49. * CC = 0 00048000
  50. * 00049000
  51. * DMKRPAPT - ERROR 00050000
  52. * CC = 3 - FATAL IOERROR TRYING TO WRITE 00051000
  53. * CC = 2 - FATAL PAGING ERROR TRYING TO RETRIEVE PAGE FROM BACK- 00052000
  54. * ING STORE PRIOR TO WRITING 00053000
  55. EJECT 00054000
  56. * 00055000
  57. * CALLS TO OTHER ROUTINES - 00056000
  58. * 00057000
  59. * DMKPTRAN - TO LOCATE INITIAL POSITION OF REFERENCED PAGE 00058000
  60. * DMKPTRFT - CALLED TO RETURN RESIDENT PAGE TO FREELIST 00059000
  61. * DMKPGTSP - CALL TO RETURN CURRENT DASD SYSTEM PAGE 00060000
  62. * DMKPGTPR - CALLED TO RETURN CURRENT DASD PAGING PAGE SLOT 00061000
  63. * DMKPTRUL - CALLED TO UNLOCK PAGE AFTER IT HAS BEEN WRITTEN 00062000
  64. * DMKFREE - TO OBTAIN FREE STORAGE FOR A CPEXBLOK 00063000
  65. * DMKPAGIO - TO MOVE THE REQUESTED FROM REAL MAIN STORAGE TO 00064000
  66. * DASD 00065000
  67. * DMKDSPCH - EXIT VIA GOTO TO WAIT FOR PAGE IO TO COMPLETE 00066000
  68. * DMKSCHDL - CALLED TO DROP USER FROM RUNNABLE LIST 00067000
  69. * DMKPGSPR RELEASE USER PAGES 00067100
  70. * 00068000
  71. * EXTERNAL REFERENCES - 00069000
  72. * 00070000
  73. * NONE 00071000
  74. * 00072000
  75. * TABLES / WORKAREAS - 00073000
  76. * 00074000
  77. * NONE 00075000
  78. * 00076000
  79. * REGISTER USAGE - 00077000
  80. * 00078000
  81. * GPR0 = CONTAINS DASD ADDRESS OF PAGE TO BE MOVED 00079000
  82. * GPR1 = CONTAINS ADDRESS OF VIRTUAL PAGE 00080000
  83. * GPR3 = INTERNAL SUBROUTINE LINKAGE 00081000
  84. * GPR4 - NOT USED 00082000
  85. * GPR5 = SWPTABLE ENTRY BASE 00083000
  86. * GPR6 - NOT USED 00084000
  87. * GPR7 = CORTABLE ENTRY BASE 00085000
  88. * GPR8 - NOT USED 00086000
  89. * GPR9 = PAGTABLE ENTRY BASE 00087000
  90. * GPR10 - NOT USED 00088000
  91. * GPR11 = VMBLOK BASE 00089000
  92. * GPR12 = DMKRPA BASE 00090000
  93. * GPR13 = SAVEAREA BASE 00091000
  94. * GPR14 = EXTERNAL LINKAGE 00092000
  95. * GPR15 = EXTERNAL LINKAGE 00093000
  96. * 00094000
  97. * NOTES - 00095000
  98. * 00096000
  99. * NONE 00097000
  100. * 00098000
  101. * OPERATION - 00099000
  102. * 00100000
  103. * THE OPERATION OF DMKRPAGT IS DESCIRBED IN SECTION A. BELOW, 00101000
  104. * AND THE OPERATION OF DMKRPAPT IS DESCIRBED IN SECTION B. 00102000
  105. * 00103000
  106. *. 00104000
  107. EJECT 00105000
  108. COPY OPTIONS 00106000
  109. COPY LOCAL OPTIONS 00107000
  110. SPACE 2 00108000
  111. DMKRPA CSECT 00109000
  112. SPACE 3 00110000
  113. EXTRN DMKPTRFT 00111000
  114. EXTRN DMKPGTPR,DMKPGTSP @V304635 00112000
  115. EXTRN DMKPTRUL 00113000
  116. EXTRN DMKPAGIO 00114000
  117. EXTRN DMKSCHDL 00115000
  118. EXTRN DMKPTRWQ 00116000
  119. EXTRN DMKPGSPR @V408246 00116100
  120. EXTRN DMKVMI @VA04806 00116500
  121. EXTRN DMKSYM @VA13364 00116700
  122. SPACE 3 00117000
  123. USING PSA,R0 00118000
  124. USING CPEXBLOK,R1 00119000
  125. USING SWPFLAG,R5 00120000
  126. USING CORTABLE,R7 00121000
  127. USING PAGCORE,R9 00122000
  128. USING VMBLOK,R11 00123000
  129. USING SAVEAREA,R13 00124000
  130. EJECT 00125000
  131. *. 00126000
  132. * A. OPERATION OF DMKRPAGT - 00127000
  133. * 1. ENQUEUE ON THE DESIRED PAGE VIA A CALL TO DMKPTRAN 00128000
  134. * 2. IF THE PAGE IS RESIDENT, SKIP TO STEP 5, BELOW; OTHERWISE 00129000
  135. * CONTINUE 00130000
  136. * 3. USE THE ADDRESS OF THE PAGTABLE ENTRY RETURNED BY DMKPTRAN 00131000
  137. * TO LOCATE THE SWPTABLE ENTRY FOR THE PAGE; IF THE CURRENT 00132000
  138. * ADDRESS OF THE PAGE HAS BEEN DYNAMICALLY RECOMPUTED, RE- 00133000
  139. * LEASE THE PAGE, AND IN ANY CASE STORE THE NEW DASD ADDRESS 00134000
  140. * IN THE SWPTABLE ENTRY; THEN, GO TO STEP 5 00135000
  141. * 4. LOCATE THE COTABLE, SWPTABLE AND PAGTABLE ENTRIES FOR THE 00136000
  142. * RESIDENT PAGE AND RESET THE DASD ADDRESS AS IN STEP 00137000
  143. * 3; THEN, CONTINUE 00138000
  144. * 5. IF THE CALLER HAS NOT SPECIFIED,THE 'BRING' OPTION, EXIT; 00139000
  145. * OTHERWISE CALL DMKPTRAN, PASSING THE BRING AND DEFER OPTION 00140000
  146. * IN ADDITION TO CHANGE (IF SPECIFIED BY THE CALLER) 00141000
  147. * 6. WHEN THE NEW PAGE IS RESIDENT, EXIT 00142000
  148. *. 00143000
  149. SPACE 00144000
  150. DMKRPAGT RELOC 00145000
  151. MVI SAVEWRK1,0 CLEAR DMKPTRAN ERROR SWITCH 00146000
  152. MVI SAVEWRK2,0 CLEAR PUTRETURN SWITCH @VA08568 00146050
  153. TRRETRY DS 0H @V408246 00146100
  154. LA R2,DEFER+IOERETN SET OPTIONS FOR DMKPTRAN 00147000
  155. TM SAVER2+3,SYSTEM USER REFERENCING SYSTEM V.M. 00148000
  156. BZ *+8 NO -- 00149000
  157. LA R2,SYSTEM(,R2) ADD THAT ALSO 00150000
  158. CALL DMKPTRAN ENQUEUE ON PAGE 00151000
  159. BZ RESIDENT PAGE IS RESIDENT -- 00152000
  160. BC 2,DIE1 ADDRESSING ERROR 00153000
  161. BC 1,SAVECODE IOERROR 00154000
  162. NRESIDNT DS 0H @V408246 00155100
  163. LR R9,R2 SAVE ADDRESS OF PAGTABLE ENTRY 00156000
  164. N R1,=A(X'F000') CLEAR SEGMENT AND DISPLACEMENT FROM 00157000
  165. SRL R1,11 ADDRESS, AND GET PAGE NUMBER TIMES 2 00158000
  166. SR R2,R1 POINT TO START OF PAGE TABLE 00159000
  167. S R2,F4 POINT TO SWPTABLE POINTER 00160000
  168. L R5,0(,R2) POINT TO SWPTABLE 00161000
  169. SLL R1,2 GET PAGE NUMBER TIMES 8 00162000
  170. AR R5,R1 POINT TO SWPTABLE ENTRY 00163000
  171. LA R3,CKBRING EXIT ADDRESS FOR SUBROUTINE 00164000
  172. B CKRECMP AND GO TEST STATUS OF PAGE 00165000
  173. EJECT 00166100
  174. RESIDENT BAL R3,GETENTRY GO LOCATE CORTABLE, PAGTABLE AND SWPTABLE 00167000
  175. * ENTRIES FOR PAGE, AND TEST RECOM STATUS 00168000
  176. TM CORFLAG,CORCFLCK+CORRSV SPECIAL HANDLING? @V408246 00168100
  177. BZ RESIDA NO, PROCESS NORMALLY @V408246 00168300
  178. TM SAVER2+3,SYSTEM SYSTEM PAGE? @V408246 00168500
  179. BO RESIDA YES, CONTINUE NORMALLY @V408246 00168700
  180. AIF (NOT &VIRREAL).NOVR1X @V408246 00168900
  181. C R11,AVMREAL VIRTUAL = REAL USER @V408246 00169100
  182. BE RESIDA YES, BYPASS @V408246 00169300
  183. .NOVR1X ANOP 00169500
  184. LR R2,R1 BEGINNING AND ENDING ADDRESSES @V408246 00169700
  185. * FOR REL. 00169900
  186. CALL DMKPGSPR RELEASE PAGE @V408246 00170100
  187. B TRRETRY START ALL OVER @V408246 00170300
  188. RESIDA DS 0H @V408246 00170500
  189. OI PAGCORE+1,PAGINVAL+PAGREF FLAG PAGE INVALID 00174000
  190. OI VMESTAT,VMINVPAG SIGNAL PAGE TABLE ENTRY IS INVALID 00175000
  191. OI APSTAT2,CPPTLBR SET PTLB REQUIRED FOR THIS @V407594 00175100
  192. L R15,PREFIXB AND OTHER PROCESSOR @V407594 00175200
  193. OI APSTAT2-PSA(R15),CPPTLBR (IF THERE IS ANOTHER) @V407594 00175300
  194. AIF (NOT &VIRREAL).NOVR1 00176000
  195. C R11,AVMREAL IS VIRT = REAL AREA IN USE ? @VA07519 00177000
  196. BNE CLRTBL NO, CONTINUE 00178000
  197. TM SAVER2+3,SYSTEM DOES THE SYSTEM OWN IT 00179000
  198. BZ CKBRING NO, MUST BELONG TO A USER 00180000
  199. .NOVR1 ANOP 00181000
  200. CLRTBL SR R0,R0 ZERO OUT 00182000
  201. ST R0,CORPGPNT OLD PAGTABLE POINTER 00183000
  202. STH R0,PAGCORE AND ALSO THE PAGE ENTRY. 00184000
  203. OI PAGCORE+1,PAGINVAL+PAGREF FLAG PAGE INVALID @V408246 00185100
  204. L R15,CORFPNT PAGE'S OWNER @V408246 00186100
  205. LH R0,VMPAGES-VMBLOK(,R15) OWNER'S PAGE COUNT @V408246 00187100
  206. S R0,F1 DECREMENT @V408246 00188100
  207. BM DIE3 SYSTEM PROBLEMS IF COUNT NEGATIVE@V408246 00189100
  208. STH R0,VMPAGES-VMBLOK(,R15) @V408246 00190100
  209. * 00191100
  210. CALL DMKPTRFT PLACE PAGE ON FREE LIST @V408246 00192100
  211. SPACE 00200100
  212. TM VMMCR6,VMMVTMR IS TIMER ASSIST BEING USED ? @V3M5014 00200200
  213. BZ CKBRING NO POTENTIAL PROBLEMS IF NOT @V3M5014 00200300
  214. ICM R15,B'0111',VMMADDR VM ASSIST ON FOR USER ? @V3M5014 00200400
  215. BZ CKBRING NO TIMER ASSIST IF NO VM ASSIST @V3M5014 00200500
  216. USING MICBLOK,R15 ADDRESSABILITY TO POINTER LIST @V3M5014 00200600
  217. L R1,XPAGNUM GET PAGE AND SEGMENT NUMBER MASK @V3M5014 00200700
  218. N R1,SAVER1 GOING TO GET A NEW PAGE ZERO ? @V3M5014 00200800
  219. BNZ CKBRING NO, TIMER ASSIST POINTER O.K. @V3M5014 00200900
  220. LA R1,VMTIMER POINT TIMER ASSIST HERE... @V3M5014 00201000
  221. ST R1,MICVTMR FOR UPDATING VIRTUAL TIMER VALUE @V3M5014 00201100
  222. DROP R15 @V3M5014 00201200
  223. SPACE 00201300
  224. CKBRING TM SAVER2+3,BRING BRING NEW PAGE INTO CORE ?? 00202000
  225. BZ EXIT NO -- FINISHED 00203000
  226. LM R1,R2,SAVER1 RESTORE CALLER'S V.A. AND PARMS 00204000
  227. LA R15,DEFER+IOERETN INSURE THESE OPTIONS ALSO @VA01234 00205000
  228. OR R2,R15 ARE PASSED @VA01234 00206000
  229. CALL DMKPTRAN CALL TO BRING IN PAGE 00207000
  230. BZ SAVEADDR BRANCH IF IO SUCCESSFUL 00208000
  231. BC 6,DIE1 BRANCH IF NOT RESIDENT OR ILLEGAL ADDR. 00209000
  232. B EXIT IF IOERROR, RETURN CC3 TO CALLER 00210000
  233. SPACE 2 00211000
  234. SAVEADDR ST R2,SAVER2 PASS ADDRESS OF PAGE TO CALLER 00212000
  235. SPACE 00213000
  236. EXIT EXIT RETURN 00214000
  237. SPACE 2 00215000
  238. SAVECODE EQU * HERE OF I/O ERROR READING OLD PAGE 00216000
  239. BALR R15,0 SAVE CONDITION CODE 00217000
  240. ST R15,SAVEWRK1 IN SAVEAREA 00218000
  241. B RESIDENT AND CONTINUE PROCESSING 00219000
  242. EJECT 00220000
  243. *. 00221000
  244. * B. OPERATION OF DMKRPATP - 00222000
  245. * 1. CALL DMKPTRAN VIA THE TRANS MACRO TO LOCATE THE PAGE TO 00223000
  246. * BE MOVED, AND LOCK IT 00224000
  247. * 2. LOCATE THE CORTABLE, SWPTABLE AND PAGTABLE ENTRIES FOR THE 00225000
  248. * RESIDENT PAGE 00226000
  249. * 3. SET UP A CPEXBLOK TO RETURN TO DMKRPATP, AND CALL DMKPAGIO 00227000
  250. * TO WRITE THE PAGE; THEN, GO TO DMKDSPCH TO AWAIT THE 00228000
  251. * INTERRUPT 00229000
  252. * 4. AFTER THE PAGE HAS BEEN WRITTEN, CALL DMKPTRUL TO UNLOCK 00230000
  253. * IT, PASS ANY IOERROR CODE BACK TO THE CALLER, AND EXIT 00231000
  254. *. 00232000
  255. SPACE 00233000
  256. DMKRPAPT RELOC 00234000
  257. MVI SAVEWRK1,0 CLEAR ERROR SWITCH 00235000
  258. MVI SAVEWRK2,1 SET PUTRETURN SWITCH @VA08568 00235500
  259. L R2,SAVER2 GET USER OPTIONS 00236000
  260. LA R15,BRING+DEFER+LOCK ADD THESE OPTIONS ALSO @VA01234 00237000
  261. OR R2,R15 TO WHAT IS PASSED @VA01234 00238000
  262. CALL DMKPTRAN BRING IN PAGE 00239000
  263. BC 2,DIE2 ADDRESSING ERROR 00240000
  264. BC 1,SETCC2 IOERROR 00241000
  265. BAL R3,GETENTRY 00242000
  266. PUTRETRN DS 0H @V4M0167 00242010
  267. OI SWPFLAG,SWPTRANS LOCK OUT UNTIL WRITE FINISHED @V408246 00242100
  268. LA R0,CPEXSIZE GET CORE FOR A CPEXBLOK @V4M0167 00243100
  269. CALL DMKFREE 00244000
  270. LA R0,5 GET DASD READ DATA OP-CODE 00245000
  271. STM R0,R15,CPEXR0 SAVE ALL REGS 00246000
  272. LA R15,IORETN AND SET UP 00247000
  273. ST R15,CPEXADD RETURN TO EXECUTION ADDRESS 00248000
  274. LH R15,VMWCNT GET PAGE WAIT COUNT 00249000
  275. LA R15,1(,R15) INCREMENT 00250000
  276. STH R15,VMWCNT AND SAVE 00251000
  277. OI VMRSTAT,VMPGWAIT SET USER IN PAGEWAIT 00252000
  278. OI PAGCORE+1,PAGINVAL+PAGREF INVALIDATE ACROSS @V408246 00253100
  279. * WRITE 00253200
  280. TM VMRSTAT,VMNORUN-VMPGWAIT NOT RUNNABLE ALREADY? @V408246 00253300
  281. BNZ NOSCHA YES, SCH ALREADY KNOWS @V408246 00253400
  282. CALL DMKSCHDL HAVE SCH UPDATE RUNNING STATUS @V408246 00253500
  283. NOSCHA DS 0H @V408246 00253600
  284. L R15,=A(DMKPTRWQ) POINT TO PAGE WRITE REQUEST QUEUE 00254000
  285. L R0,0(,R15) AND PUSH IT 00255000
  286. ST R1,0(,R15) DOWN 00256000
  287. ST R0,CPEXFPNT ... 00257000
  288. GOTO DMKPAGIO GO GET THE I/O STARTED .. 00258000
  289. SPACE 3 00259000
  290. IORETN EQU * HERE AFTER PAGE HAS BEEN WRITTEN 00260000
  291. NI SWPFLAG,X'FF'-SWPTRANS PAGE NO LONGER IN TRANSIT 00261000
  292. ST R15,SAVEWRK1 SAVE ERROR FLAG 00262000
  293. LH R15,VMWCNT GET PAGE WAIT COUNT 00263000
  294. BCT R15,*+8 DECREMENT AND TEST COUNT @V408246 00264100
  295. NI VMRSTAT,255-VMPGWAIT RESET PAGEWAIT (WHEN @V408246 00264600
  296. * COUNT=0) 00265100
  297. STH R15,VMWCNT @V408246 00265600
  298. NI PAGCORE+1,255-PAGINVAL-PAGREF FINISHED, VALIDATE@V408246 00266100
  299. TM VMRSTAT,VMNORUN STILL NON-RUNNABLE? @V408246 00266600
  300. BNZ NOSCHB YES, SCH DOESN'T CARE @V408246 00267100
  301. CALL DMKSCHDL INFORM SCH OF STATUS CHANGE @V408246 00267600
  302. NOSCHB DS 0H @V408246 00268100
  303. CALL DMKPTRUL AND UNLOCK THE CORTABLE ENTRY 00271000
  304. TM SAVEWRK1,X'FF' ERROR RETURN FROM PAGEIO ?? 00272000
  305. B EXIT EXIT, PASSING CODE TO CALLER 00273000
  306. SPACE 2 00274000
  307. SETCC2 CLI FFS,X'00' SET CONDITION CODE 2 00275000
  308. B EXIT AND EXIT 00276000
  309. SETCC1 CLI ZEROES,X'FF' SET CONDITION CODE 1 @VA07519 00276050
  310. B EXIT AND EXIT @VA07519 00276150
  311. * CONDITION CODE 1 WILL BE RETURNED TO: 00276200
  312. * DMKHVD FOR DIAGNOSE 30 00276250
  313. * AND TO DMKDRD FOR DIAGNOSE 14,34,AND 38 00276300
  314. * IF THE PAGE IS LOCKED FOR I/O. 00276350
  315. EJECT 00277000
  316. GETENTRY EQU * HERE TO LOCATE TABLE ENTRIES, AND TEST FOR DASD PAGE 00278000
  317. * TO RELEASE 00279000
  318. LR R7,R2 SAVE REAL ADDRESS OF PAGE 00280000
  319. SRL R7,8 GET PAGE ADDRESS/256 00281000
  320. A R7,ACORETBL POINT TO CORTABLE ENTRY 00282000
  321. L R9,CORPGPNT GET PAGTABLE POINTER 00283000
  322. L R5,CORSWPNT AND SWPTABLE POINTER 00284000
  323. CLI SAVEWRK2,0 RPAGT ? @VA08568 00284010
  324. BNE CKRECMP NO, RPAPT @VA08568 00284020
  325. TM SAVER2+3,SYSTEM WORKING WITH SYSTEM SPACE ? @VA08306 00284025
  326. BO CKRECMP YES,BRANCH @VA08306 00284035
  327. TM CORFLAG,CORIOLCK LOCKED FOR I/O ? @VA07519 00284050
  328. BZ CKRECMP CONTINUE CHECKING @VA07519 00284150
  329. C R11,AVMREAL IS IT THE V=R USER ?? @VA08925 00284155
  330. BE CKRECMP YES, CONTINUE THE OLD WAY @VA08925 00284175
  331. CLI VMINST,X'83' IS THIS A DIAGNOSE ? @VA07519 00284250
  332. BNZ CKRECMP NOT DIAGNOSE,CONTINUE CHECKING @VA07519 00284350
  333. CLI VMINST+3,DIAG38 DIAGNOSE X'38' ? @VA12172 00284375
  334. BE CKRSTAT YES,NOW CHECK STATUS @VA12172 00284400
  335. CLI VMINST+3,DIAG30 DIAGNOSE X'30' ? @VA12172 00284425
  336. BE CKRSTAT YES,NOW CHECK STATUS @VA12172 00284450
  337. CLI VMINST+3,DIAG34 DIAGNOSE X'34' ? @VA12172 00284475
  338. BE CKRSTAT YES,NOW CHECK STATUS @VA12172 00284500
  339. CLI VMINST+3,DIAG14 DIAGNOSE X'14' ? @VA12172 00284525
  340. BNE CKRECMP NOT DIAGNOSE X'14' @VA12172 00284550
  341. * NEITHER,CONTINUE CHECKING 00284575
  342. TM CORFLAG,CORCFLCK LOCKED BY CONSOLE ? @VA12172 00284600
  343. BZ CKRSTAT YES,NOW CHECK STATUS @VA12172 00284625
  344. CLC CORLCNT,F1 IS CORE LOCK COUNT EXACTLY ONE ? @VA12172 00284650
  345. BE CKRECMP YES,CONTINUE LOCKED BY CONSOLE @VA12172 00284675
  346. CKRSTAT DS 0H @VA12172 00284700
  347. TM VMRSTAT,VMEXWAIT IN INSTRUCTION WAIT ? @VA08568 00284750
  348. BO SETCC1 YES, CURRENT INSTRUCTION @VA08568 00284850
  349. SPACE 00285000
  350. CKRECMP EQU * CHECK FOR SHARED PAGE, DASD RELEASE 00286000
  351. TM SWPFLAG,SWPSHR IS THIS A SHARED SEGMENT PAGE ? 00287000
  352. BO SETCC2 YES - WE CANNOT OVERLAY IT 00288000
  353. TM SWPFLAG,SWPRECMP HAS DASD PAGE BEEN RE-ASSIGNED ? 00289000
  354. BO STORDASD NO -- DO NOT RELEASE PAGE 00290000
  355. TM SAVEWRK1,X'01' IOERROR READING OLD PAGE ?? 00291000
  356. BO STORDASD YES -- DO NOT RELEASE ERROR PAGE 00292000
  357. SPACE 00293000
  358. L R15,=A(DMKPGTPR) ASSUME PAGE NOT FOR SYSTEM VMBL@V304635 00294000
  359. TM SAVER2+3,SYSTEM IS IT FOR THE 'SYSTEM' ? @V304635 00295000
  360. BZ *+8 IF NOT - RELEASE USER PAGE @V304635 00296000
  361. L R15,=A(DMKPGTSP) OTHERWISE RELEASE SYSTEM PAGE @V304635 00297000
  362. BALR R14,R15 NOW - RELEASE THE PAGE (DASD) @V304635 00298000
  363. SPACE 00299000
  364. STORDASD ST R0,SWPCYL INSERT NEW DASD ADDRESS IN SWPTABLE ENTRY 00300000
  365. NI SWPFLAG,X'FF'-(SWPCHG1+SWPCHG2) @V4M0167 00300010
  366. TM SAVEWRK2,1 ENTRY FROM DMKRPAPT ? @VA08568 00300140
  367. BZR R3 NO, FROM DMKRPAGT @VA08568 00300240
  368. TM SAVER2+3,SYSTEM WORKING WITH SYSTEM SPACE? @VA04806 00300400
  369. BZR R3 NO @VA04806 00300500
  370. L R15,=A(DMKVMI) AVOID WASTING EXTRA DASD PAGE @VA04806 00300600
  371. CR R15,R1 FOR DMKVMI - R1 HAS VIR ADDRESS @VA04806 00300700
  372. BZ RECMPOFF GOT DMKVMI GO TURN OFF RECMP @VA04806 00300800
  373. L R15,=A(DMKSYM) GET ADDR OF SYMBOL TABLE @VA13364 00300900
  374. CR R15,R1 FOR DMKSYM - R1 HAS VIR ADDRESS @VA13364 00301000
  375. BZ RECMPOFF GOT DMKSYM GO TURN OFF RECMP @VA04806 00301100
  376. BR R3 NOT SYM OR VMI, RETURN TO CALLER @VA13364 00301200
  377. RECMPOFF DS 0H @VA13364 00301300
  378. NI SWPFLAG,X'FF'-SWPRECMP @V4M0167 00301400
  379. BR R3 AND RETURN TO CALLER 00301500
  380. SPACE 3 00302000
  381. DIE1 ABEND 1 DMKRPAGT - ADDRESS ERROR 00303000
  382. SPACE 00304000
  383. DIE2 ABEND 2 DMKRPAPT - ADDRESS ERROR 00305000
  384. SPACE 00306000
  385. DIE3 ABEND 3 DMKRPAGT - USER PAGE COUNT IS NEGATIVE 00307000
  386. SPACE 00307050
  387. DIAG14 EQU X'14' DIAGNOSE FOR DMKDRD @VA12172 00307150
  388. DIAG30 EQU X'30' DIAGNOSE FOR DMKHVD @VA12172 00307250
  389. DIAG34 EQU X'34' DIAGNOSE FOR DMKDRD @VA12172 00307350
  390. DIAG38 EQU X'38' DIAGNOSE FOR DMKDRD @VA12172 00307450
  391. EJECT 00308000
  392. LTORG 00309000
  393. EJECT 00310000
  394. COPY VMBLOK 00311000
  395. COPY CORE 00312000
  396. PSA 00313000
  397. COPY SAVE 00314000
  398. COPY EQU 00315000
  399. COPY MICBLOK @V3M5014 00315500
  400. END 00316000