Table of Contents

DMKCPP Source

References

Source Listing

DMKCPP.ASSEMBLE.txt
  1. CPP TITLE 'DMKCPP (CP) VM/370 - RELEASE 6' 00100000
  2. PUNCH ' SPB' 00200000
  3. ISEQ 73,80 00300000
  4. SPACE 2 00400000
  5. *. 00500000
  6. * MODULE NAME - 00600000
  7. * 00700000
  8. * DMKCPP 00800000
  9. * 00900000
  10. * FUNCTION - 01000000
  11. * 01100000
  12. * 1. TO RELEASE ALL RESOURCES NECESSARY FOR AN AP 01200000
  13. * ENVIRONMENT. 01300000
  14. * 2. TO REVERT TO A UNIPROCESSOR ENVIRONMENT. 01400000
  15. * 01500000
  16. * ATTRIBUTES - 01600000
  17. * 01700000
  18. * REENTRANT, PAGEABLE, CALLED VIA SVC 01800000
  19. * 01900000
  20. * ENTRY POINTS - 02000000
  21. * 02100000
  22. * DMKCPPUP - TO CAUSE AN AP SYSTEM TO REVERT TO A UP SYSTEM. 02200000
  23. * 02300000
  24. * ENTRY CONDITIONS - 02400000
  25. * 02500000
  26. * GPR 11 = ADDRESS OF VMBLOK 02600000
  27. * GPR 12 = ADDRESS OF ENTRY POINT 02700000
  28. * GPR 13 = ADDRESS OF SAVEAREA 02800000
  29. * 02900000
  30. * EXIT CONDITIONS - 03000000
  31. * 03100000
  32. * 03200000
  33. * NORMAL - 03300000
  34. * GPR1 WILL CONTAIN ZEROES. 03400000
  35. * 03500000
  36. * ERROR - 03600000
  37. * GPR1 WILL CONTAIN THE ERROR MESSAGE NUMBER. 03700000
  38. * 03800000
  39. * CALLS TO OTHER ROUTINES - 03900000
  40. * 04000000
  41. * DMKCVTBH - TO CONVERT BINARY TO PRINTABLE FORM 04100000
  42. * DMKPTRFT - TO RETURN PAGES TO THE FREE PAGE LIST 04200000
  43. * DMKPTRUL - TO UNLOCK THE SYSTEM NAME TABLE 04300000
  44. * DMKVMASW - TO SWITCH SHARED SEGMENT POINTERS 04400000
  45. * DMKPGTSP - TO RELEASE A DASD PAGE ASSIGNED TO SYSTEM 04500000
  46. * DMKFREE - TO GET STORAGE FOR NON-SHARED PAGE AND SWAP TABLES 04600000
  47. * DMKFRET - TO RELEASE STORAGE 04700000
  48. * DMKPTRPW - TO WAIT UNTIL I/O IS COMPLETE FOR A VIRTUAL MACHINE 04800000
  49. * DMKSTKCP - TO STACK A REQUEST 04900000
  50. * DMKSCNVS - TO GET A DEVICE BLOCK 05000000
  51. * DMKDSPCH - TO RETURN TO DISPATCHER 05100000
  52. * 05200000
  53. * EXTERNAL REFERENCES - 05300000
  54. * 05400000
  55. * DMKDSPNP - NUMBER OF DYNAMICALLY ASSIGNABLE PAGE FRAMES 05500000
  56. * DMKPTRRC - NUMBER OF RESIDENT, RESERVED PAGES 05600000
  57. * DMKVMAS1 - ANCHOR FOR SHARED SYSTEMS (SHRTABLE POINTER) 05700000
  58. * DMKPTRSC - NUMBER OF RESIDENT SHARED PAGES 05800000
  59. * DMKSYSOW - ADDRESS OF THE DEVICE OWNED LIST 05900000
  60. * DMKMCTVM - ADDRESS OF USER TO BE TERMINATED BY DMKMCT 06000000
  61. * DMKMCTPF - ADDRESS OF OTHER PROCESSOR'S PSA PAGE 06020000
  62. * DMKMCTFL - DMKMCT'S FLAG BYTES 06040000
  63. * DMKSCHTQ - POINTER TO TOD CLOCK COMPARATOR REQUEST QUEUE 06060000
  64. * DMKSNTBL - POINTER TO THE SYSTEM NAME TABLE 06100000
  65. * DMKFREAP - POINTER TO BACK POCKET FOR DMKFRE IN AP MODE 06200000
  66. * DMKDMPMA - THE MAIN PROCESSOR'S ADDRESS 06300000
  67. * DMKDMPAA - THE ATTACHED PROCESSOR'S ADDRESS 06400000
  68. * DMKDMPSA - POINTER TO THE PSA ADDRESSES 06500000
  69. * DMKSCHCA - SCHEDULER ATTACHED PROCESSOR WAIT VALUES 06600000
  70. * DMKEXTST - ADDRESS OF THE STOPPED PROCESSOR 06700000
  71. * DMKPAGWS - ATTACHED PROCESSOR PAGE WAIT SAVE VALUE 06800000
  72. * DMKLOKSY - GLOBAL SYSTEM LOCKWORD 06900000
  73. * DMKLOKDS - DSP QUEUES LOCKWORD 06920000
  74. * DMKLOKTR - TRQ LOCKWORD 06940000
  75. * DMKLOKRL - RUN LIST LOCKWORD 06960000
  76. * DMKLOKFR - FREE STORAGE LOCKWORD 06980000
  77. * DMKSCHCU - SCHEDULER MAIN PROCESSOR WAIT VALUE 07000000
  78. * DMKDSPRQ - DISPATCHER'S QUEUE OF CPEXBLOKS 07100000
  79. * 07200000
  80. * OPERATION - 07300000
  81. * 07400000
  82. * SEE BELOW 07500000
  83. * 07600000
  84. * TABLES / WORKAREAS - 07700000
  85. * 07800000
  86. * CORTABLE, SWPTABLE, PAGTABLE, SEGTABLE, SHRTABLE 07900000
  87. * 08000000
  88. * REGISTER USAGE - 08100000
  89. * 08200000
  90. * GPR0-10 = SCRATCH 08300000
  91. * GPR11 = VMBLOK BASE 08400000
  92. * GPR12 = DMKCPP BASE 08500000
  93. * GPR13 = SAVEAREA BASE 08600000
  94. * GPR14 = EXTERNAL LINKAGE 08700000
  95. * GPR15 = EXTERNAL LINKAGE 08800000
  96. * 08900000
  97. * NOTES - 09000000
  98. * NONE 09100000
  99. * 09200000
  100. * MESSAGES - 09300000
  101. * 09400000
  102. * DMKCPP623I CHANNEL SET CONNECTED TO PROCESSOR NN 09500000
  103. * 09600000
  104. * WAIT STATES - 09700000
  105. * CODE X'016' - THE CHANNEL SET SWITCHING FACILITY HAS FAILED 09800000
  106. * CODE X'019' - THE OTHER PROCESSOR IS STILL RUNNING, AND 09900000
  107. * CANNOT BE STOPPED TO ENTER UNIPROCESSOR MODE 09950000
  108. * 10000000
  109. * ABENDS - 10100000
  110. * CPP001 - VMPAGES HAS JUST GONE NEGATIVE 10200000
  111. * CPP002 - A NAMED SYSTEM WAS NOT FOUND IN DMKSNT 10300000
  112. * 10400000
  113. * 10500000
  114. * 10600000
  115. * 10700000
  116. EJECT 10800000
  117. COPY OPTIONS 10900000
  118. COPY LOCAL OPTIONS 11000000
  119. DMKCPP CSECT 11100000
  120. EXTRN DMKSYSOW @V5BC0AB 11200000
  121. EXTRN DMKLOKSY @V5BC0AB 11300000
  122. EXTRN DMKLOKDS @VA12934 11320000
  123. EXTRN DMKLOKTR @VA12934 11340000
  124. EXTRN DMKLOKRL @VA12934 11360000
  125. EXTRN DMKLOKFR @VA12934 11380000
  126. EXTRN DMKSCHTQ @V5BC0AB 11400000
  127. EXTRN DMKPTRFT @V5BC0AB 11500000
  128. EXTRN DMKCVTBH @V5BC0AB 11600000
  129. EXTRN DMKMCTVM @VA12934 11700000
  130. EXTRN DMKMCTPF @VA12934 11720000
  131. EXTRN DMKMCTFL @VA12934 11740000
  132. EXTRN DMKPGTSP @VA12934 11760000
  133. EXTRN DMKPTRSC @V5BC0AB 11800000
  134. EXTRN DMKDSPNP @V5BC0AB 11900000
  135. EXTRN DMKPTRPW @V5MH002 12000000
  136. EXTRN DMKVMASW @V5BC0AB 12100000
  137. EXTRN DMKPTRRC @V5BC0AB 12200000
  138. EXTRN DMKSCHCU @VMV0008 12300000
  139. EXTRN DMKSCHCA @VMH0008 12400000
  140. EXTRN DMKPAGWS @VMV0007 12500000
  141. EXTRN DMKFRET @V5BC0AB 12600000
  142. EXTRN DMKFREE @V5BC0AB 12700000
  143. EXTRN DMKDMPMA @V5BC0AB 12800000
  144. EXTRN DMKDMPAA @V5BC0AB 12900000
  145. EXTRN DMKDMPSA @V5BC0AB 13000000
  146. EXTRN DMKFREAP @V5BC0AB 13100000
  147. EXTRN DMKVMAS1 @V5BC0AB 13200000
  148. EXTRN DMKSCNVS @V5BC0AB 13300000
  149. EXTRN DMKSNTBL @V5BC0AB 13400000
  150. EXTRN DMKPTRUL @V5BC0AB 13500000
  151. EXTRN DMKDSPRQ @VA09324 13600000
  152. EXTRN DMKSTKCP @VA09324 13700000
  153. EXTRN DMKEXTST @VA10010 13800000
  154. EJECT 13900000
  155. MODID DC CL8'DMKCPP ' MODULE NAME @V5BC0AB 14000000
  156. SPACE 2 14100000
  157. USING PSA,R0 @V5BC0AB 14200000
  158. SPACE 14300000
  159. USING VMBLOK,R11 @V5BC0AB 14400000
  160. SPACE 14500000
  161. USING SAVEAREA,R13 @V5BC0AB 14600000
  162. SPACE 14700000
  163. EJECT 14800000
  164. * SUBROUTINE NAME - 14900000
  165. * 15000000
  166. * DMKCPPUP 15100000
  167. * 15200000
  168. * FUNCTION - 15300000
  169. * 15400000
  170. * 1. TO RELEASE ALL RESOURCES NECESSARY FOR AN AP ENVIRONMENT. 15500000
  171. * 2. TO REVERT TO THE UNIPROCESSOR ENVIRONMENT. 15600000
  172. * 15700000
  173. * ENTRY CONDITIONS - 15800000
  174. * 15900000
  175. * GPR11 = ADDRESS OF VMBLOK OF VIRTUAL MEMORY'S OWNER 16000000
  176. * GPR12 = ADDRESS OF ENTRY POINT 16100000
  177. * GPR13 = ADDRESS OF SAVEAREA 16200000
  178. * 16300000
  179. * OPERATION OF DMKCPPUP - 16400000
  180. * 16500000
  181. * 1. SET ALL CPEXBLOKS ON DMKDSPRQ FOR THE REMAINING 16600000
  182. * PROCESSOR, THEN STACK A CPEXBLOK TO COME 16700000
  183. * BACK TO DMKCPPOI. GO TO THE DISPATCHER. UPON RETURN, 16800000
  184. * LOCK EACH VMBLOK AND CALL DMKVMASW TO SWITCH THE 16900000
  185. * SHARED SEGMENT POINTERS. 17000000
  186. * 2. SYNCHRONIZE VMTTIME FOR EACH VIRTUAL MACHINE. 17100000
  187. * 3. CALL DMKFRET TO FREE EACH DEFERRED EXECUTION BLOCK, 17200000
  188. * PROVIDED IT IS NOT STACKED. 17300000
  189. * 4. FREE ALL THE REMAINING AP RELATED CONTROL BLOCKS. 17400000
  190. * 5. SET THE CLOCK COMPARATOR VALUE TO THAT OF THE FIRST ELEMENT 17500000
  191. * ON THE QUEUE. 17600000
  192. * 6. WHILE PRESERVING ABSOLUTE ZERO MAINTAINED FIELDS, COPY THE 17700000
  193. * CURRENT PSA INTO THE ABSOLUTE ZERO PSA. 17800000
  194. * 7. STOP PREFIXING. 17900000
  195. * 8. SET APUOPER TO ZERO. 18000000
  196. * 9. CHECK DMKMCT'S FLAG FIELD TO SEE IF DMKMCTFS HAS 18100000
  197. * BEEN ENTERED. IF NOT, FREE THE PSA PAGES. IF SO, 18120000
  198. * COMMUNICATION BETWEEN THE PROCESSORS HAS FAILED. 18140000
  199. * DO NOT RELEASE THE PSA PAGE FOR THE OTHER 18160000
  200. * PROCESSOR SINCE IT MAY STILL BE RUNNING. 18180000
  201. * 10. FREE UP THE PAGES AND DASD SLOTS HELD BY THE ATTACHED 18200000
  202. * PROCESSOR'S SET OF PAGE AND SWAP TABLES FOR SHARED 18300000
  203. * SEGMENTS (WHEN POSSIBLE). 18400000
  204. * 11. IF THE SWPRECMP FLAG IS ZERO IN AT LEAST ONE SWAP TABLE 18500000
  205. * ENTRY, REINITIALIZE THE SWAP TABLES WITH THE ORIGINAL 18600000
  206. * CCPD'S USING DMKSNTBL. 18700000
  207. * 12. RETURN TO THE CALLER. 18800000
  208. * 18900000
  209. * 19000000
  210. SPACE 2 19100000
  211. DMKCPPUP RELOC @V5BC0AB 19200000
  212. TM APSTAT1,PROCIO RUNNING ON MAIN PROCESSOR? @V60B7AB 19300000
  213. BO CPPPROCG YES, BRANCH @V60B7AB 19400000
  214. LH R1,CSADDR GET CHANNEL SET ADDRESS @V60B7AB 19500000
  215. SPACE 19600000
  216. * DISCS 0(R1) DISCONNECT FROM MAIN PROCESSOR @V60B7AB 19700000
  217. DC X'B2011000' @V60B7AB 19800000
  218. SPACE 19900000
  219. BZ CONNECTC BRANCH IF DISCONNECT COMPLETED @V60B7AB 20000000
  220. TM APSTAT4,POFFLINE PROCESSING AN OFFLINE COMMAND? @V60B7AB 20100000
  221. BNO WAIT016 NO, BRANCH @V60B7AB 20200000
  222. SPACE 20300000
  223. SIGNAL START START THE MAIN PROCESSOR @V60B7AB 20400000
  224. SPACE 20500000
  225. SIGNAL RESUME SIGNAL THE MAIN PROCESSOR TO RESUME @V60B7AB 20600000
  226. SPACE 20700000
  227. B ERCPP192 ISSUE DMKCPU192E @V60B7AB 20800000
  228. CONNECTC DS 0H @V60B7AB 20900000
  229. OI APSTAT1,PROCIO INDICATE THIS IS THE I/O PROC. @V60B7AB 21000000
  230. L R15,PREFIXB ADDRESS OTHER PROCESSOR'S PSA @V60B7AB 21100000
  231. NI APSTAT1-PSA(R15),X'FF'-PROCIO SET PROCIO TO 0 @V60B7AB 21200000
  232. SPACE 21300000
  233. * CONCS 0(R1) CONNECT THE CHANNEL SET @V60B7AB 21400000
  234. DC X'B2001000' @V60B7AB 21500000
  235. SPACE 21600000
  236. BZ CPPPROCF BRANCH, IF CONNECT SUCCESSFUL @V60B7AB 21700000
  237. SPACE 21800000
  238. WAIT016 LPSW CPWAIT16 LOAD WAIT STATE CODE X'016' @V60B7AB 21900000
  239. SPACE 22000000
  240. CPPPROCF DS 0H @V60B7AB 22100000
  241. LCTL C2,C2,FFS ENABLE FOR I/O INTERRUPTS @VMV0002 22200000
  242. LH R1,IPUADDR GET PROCESSOR ADDRESS @V60B7AB 22300000
  243. CALL DMKCVTBH CONVERT PROC ADDRESS TO PRINTABLE FORM @V60B7AB 22400000
  244. STCM R1,B'0011',CPPID623 MOVE IN PROCESSOR ADDRESS @V60B7AB 22500000
  245. LA R0,CPP623LN GET LENGTH OF MESSAGE @V60B7AB 22600000
  246. LA R1,CPP623MG GET ADDRESS OF MESSAGE TEXT @V60B7AB 22700000
  247. CALL DMKQCNWT,PARM=NORET+OPERATOR @VA12934 22800000
  248. CPPPROCG DS 0H @V60B7AB 22900000
  249. SR R4,R4 ZERO REGISTER 4 @VA09324 23000000
  250. SCNDSPRQ DS 0H @VA09324 23100000
  251. L R15,CPPDSPRQ GET ADDRESS OF QUEUE ANCHOR @VA09324 23200000
  252. C R15,CPEXFPNT-CPEXBLOK(,R15) IS QUEUE EMPTY? @VA09324 23300000
  253. BE OFFCONT YES, BRANCH @VA09324 23400000
  254. LR R1,R15 SAVE IN REGISTER 1 @VA09324 23500000
  255. SPACE 1 23600000
  256. USING CPEXBLOK,R1 @VA09324 23700000
  257. SPACE 1 23800000
  258. NXTCPXBK DS 0H @VA09324 23900000
  259. L R1,CPEXFPNT GET NEXT CPEXBLOK POINTER @VA09324 24000000
  260. CR R1,R15 AT END OF QUEUE? @VA09324 24100000
  261. BE STACKCPX YES, GO STACK A CPEXBLOK TO RETURN @VA09324 24200000
  262. MVC CPEXPROC,LPUADDR MAKE IT FOR THIS PROCESSOR @VA09324 24300000
  263. B NXTCPXBK GO DO NEXT CPEXBLOK IN QUEUE @VA09324 24400000
  264. STACKCPX DS 0H @VA09324 24500000
  265. LTR R4,R4 HAS DMKDSPRQ BEEN DRAINED ONCE? @VA09324 24600000
  266. BNZ OFFCONT YES, BRANCH @VA09324 24700000
  267. L R9,ASYSVM ADDRESS OF SYSTEM VMBLOK @VA09324 24800000
  268. L R14,PREFIXB ADDRESS OF OTHER PROC'S PSA @VA09324 24900000
  269. L R15,LASTUSER-PSA(R14) LASTUSER VMBLOK ADDRESS @VA09324 25000000
  270. ST R4,VMLOCK-VMBLOK(R15) UNLOCK VMBLOK @VA09324 25100000
  271. ST R9,LASTUSER-PSA(R14) LASTUSER EQUALS ASYSVM @VA09324 25200000
  272. LA R0,CPEXSIZE GET SIZE OF A CPEXBLOK @VA09324 25300000
  273. CALL DMKFREE GET STORAGE @VA09324 25400000
  274. STM R0,R15,CPEXREGS SAVE REGISTERS IN THE CPEXBLOK @VA09324 25500000
  275. LA R15,DMKCPPOI GET RETURN ADDRESS @VA09324 25600000
  276. ST R15,CPEXADD SAVE IN CPEXBLOK @VA09324 25700000
  277. SPACE 1 25800000
  278. DROP R1 25900000
  279. SPACE 1 26000000
  280. CALL DMKSTKCP GO STACK THE CPEXBLOK @VA09324 26100000
  281. GOTO DMKDSPCH GO TO THE DISPATCHER @VA09324 26200000
  282. DMKCPPOI DS 0H @VA09324 26300000
  283. L R4,F4 INDICATE DMKDSPRQ WAS DRAINED @VA09324 26400000
  284. B SCNDSPRQ GO SET ALL REQUESTS TO THIS PROCESSOR @VA09324 26500000
  285. OFFCONT DS 0H @VA09324 26600000
  286. MVC SAVEWRK8(1),ZEROES CLEAR FLAG BYTE @V5BC0AB 26700000
  287. L R11,ASYSVM GET ADDRESS OF SYSTEM VMBLOK @V5BC0AB 26800000
  288. CHARGE SYNC SYNCHRONIZE VMTTIME FOR THE SYSTEM VMBLOK @VMH0025 26900000
  289. L R11,VMPNT GET FIRST VMBLOK ADDR IN CYCLIC CHAIN X27000000
  290. @V5BC0AB 27100000
  291. LR R10,R11 SAVE ENDING ADDRESS @V5BC0AB 27200000
  292. SR R9,R9 CLEAR A REGISTER @V5BC0AB 27300000
  293. LOOP DS 0H @V5BC0AB 27400000
  294. L R1,=A(DMKMCTVM) ADDRESS OF USER TO BE TERMINATED@VA12934 27410000
  295. * BY DMKMCT 27420000
  296. C R11,0(R1) IS THIS USER GOING TO BE @VA12934 27430000
  297. * TERMINATED BY DMKMCT? 27440000
  298. BE NXTVM YES, DON'T CHANGE HIS VMBLOK @VA12934 27450000
  299. LR R1,R11 GET VMBLOK ADDRESS IN REGISTER 1 @V5BC0AB 27500000
  300. ST R9,VMLOCK YES, CLEAR LOCK WORD @V5BC0AB 27600000
  301. GETLOCK DS 0H @V5BC0AB 27700000
  302. LOCK OBTAIN,TYPE=VMBLOK,SPIN=NO LOCK THIS VMBLOK @V5BC0AB 27800000
  303. TM VMOSTAT,VMSHR VIRTUAL MACHINE RUNNING SHARED SEGMENTS? X27900000
  304. @V5BC0AB 28000000
  305. BZ LOOPVMOF NO, CHECK FOR DEFERRED TASK @V5BC0AB 28100000
  306. CLC VMSHRPRC,LPUADDR+1 POINTING TO THIS PROCESSORS SHARED X28200000
  307. @V5BC0AB 28300000
  308. * SEGMENTS 28400000
  309. BE LOOPVMOF YES, NO NEED TO SWITCH CHECK DEFERRED X28500000
  310. TASK @V5BC0AB 28600000
  311. CALL DMKVMASW SWITCH TO THIS PROCESSORS SHARED X28700000
  312. SEGMENTS 28800000
  313. LOOPVMOF DS 0H @V5BC0AB 28900000
  314. CHARGE SYNC SYNCHRONIZE VMTTIME @V5BC0AB 29000000
  315. LA R0,CPEXSIZE @V5BC0AB 29100000
  316. L R1,VMDFTPNT GET ADDR OF DEFER EXEC.BLOCK @VA11422 29200000
  317. LTR R1,R1 IS THERE ONE TO FREE? @VA11422 29300000
  318. BZ ZEROLOCK NO, CONTINUE @VA11422 29400000
  319. CALL DMKFRET FREE THE STORAGE @V5BC0AB 29500000
  320. ST R9,VMDFTPNT ZERO DEFER EXECUTION BLOCK ADDRESS @VMH0026 29600000
  321. ZEROLOCK DS 0H @VA11422 29700000
  322. ST R9,VMLOCK ZERO VMBLOK LOCK WORD @VMH0026 29800000
  323. NXTVM DS 0H @VA12934 29850000
  324. L R11,VMPNT GET ADDRESS OF NEXT VMBLOK @V5BC0AB 29900000
  325. CR R11,R10 END OF CHAIN? @V5BC0AB 30000000
  326. BNE LOOP NO, DO ALL VMBLOKS @V5BC0AB 30100000
  327. SPACE 30200000
  328. * FREE ALL THE AP RELATED CONTROL BLOCKS 30300000
  329. * FREE BACK POCKET FOR DMKFRE 30400000
  330. SR R0,R0 CLEAR A REGISTER @V5BC0AB 30500000
  331. L R10,CPPFREAP GET PTR TO FREE BACK POCKET ADDRESS X30600000
  332. @V5BC0AB 30700000
  333. IC R0,0(R10) GET SIZE IN DOUBLE WORDS @V5BC0AB 30800000
  334. ICM R1,B'0111',1(R10) GET ADDRESS OF BACK POCKET @V5BC0AB 30900000
  335. CALL DMKFRET FREE THE STORAGE @V5BC0AB 31000000
  336. SR R0,R0 CLEAR A REGISTER @V5BC0AB 31100000
  337. STCM R0,B'0111',1(R10) ZERO THE BACK POCKET ADDRESS @V5BC0AB 31200000
  338. * FREE THE CPEXBLOK FOR THE SWITCH MACRO 31300000
  339. LA R0,CPEXSIZE GET SIZE OF A CPEXBLOK @V5BC0AB 31400000
  340. L R1,PREFIXA ADDRESS ABSOLUTE ZERO PSA @V5BC0AB 31500000
  341. L R1,PSACPXBP-PSA(,R1) GET THE ADDRESS OF THE CPEXBLOK X31600000
  342. @V5BC0AB 31700000
  343. CALL DMKFRET FREE THE STORAGE @V5BC0AB 31800000
  344. MVC PSACPXBP(4),ZEROES CLEAR THE CPEXBLOK ADDRESS @V5BC0AB 31900000
  345. SPACE 32000000
  346. * FREE THE MACHINE CHECK CPEXBLOK 32100000
  347. SPACE 32200000
  348. USING MCHAREA,R5 @V5BC0AB 32300000
  349. SPACE 32400000
  350. L R7,PREFIXB ADDRESS OTHER PROCESSOR'S PSA @V5BC0AB 32500000
  351. L R5,AMCHAREA-PSA(,R7) GET ADDRESS OF MACHINE CHECK AREA X32600000
  352. @V5BC0AB 32700000
  353. L R1,MCHCPEX GET ADDRESS OF CPEXBLOK @V5BC0AB 32800000
  354. LA R0,CPEXSIZE GET SIZE OF THE CPEXBLOK @V5BC0AB 32900000
  355. CALL DMKFRET FREE THE STORAGE @V5BC0AB 33000000
  356. * FREE THE MACHINE CHECK RECORD FOR THE PROCESSOR GOING OFFLINE 33100000
  357. SPACE 33200000
  358. L R1,MCHREC GET ADDRESS OF MACHINE CHECK RECORD X33300000
  359. @V5BC0AB 33400000
  360. SR R9,R9 ZERO REGISTER 9 @V5BC0AB 33500000
  361. LH R9,CPUMCELL(R7) COMPUTE LENGTH OF MCHREC. ADD LENGTH X33600000
  362. @V5BC0AB 33700000
  363. * OF EXTENDED LOGOUT AREA 33800000
  364. LA R6,MCHLEN1 PLUS LEN OF DAMAGE ASSESSMENT AREA X33900000
  365. @V5BC0AB 34000000
  366. LA R0,MCHFIX(R9,R6) CALCULATE TOTAL LENGTH @V5BC0AB 34100000
  367. A R0,F7 GET LENGTH ON A DOUBLE WORD BOUNDARY X34200000
  368. @V5BC0AB 34300000
  369. SRL R0,3 DIVIDE BY 8 @V5BC0AB 34400000
  370. CALL DMKFRET FREE THE STORAGE @V5BC0AB 34500000
  371. SPACE 34600000
  372. DROP R5 @V5BC0AB 34700000
  373. SPACE 34800000
  374. L R10,=A(DMKSCHTQ) @V5BC0AB 34900000
  375. SPACE 35000000
  376. USING TRQBLOK,R10 @V5BC0AB 35100000
  377. SPACE 35200000
  378. L R10,TRQBFPNT GET FIRST ELEMENT ON QUEUE @V5BC0AB 35300000
  379. C R10,ACTIVTRQ POINTING TO TOP TRQ @V5BC0AB 35400000
  380. BE PSAMOVE YES, CONTINUE @V5BC0AB 35500000
  381. ST R10,ACTIVTRQ POINT TO TOP TRQ @V5BC0AB 35600000
  382. SCKC TRQBVAL SET CLOCK COMPARATOR @V5BC0AB 35700000
  383. SPACE 35800000
  384. DROP R10 @V5BC0AB 35900000
  385. SPACE 36000000
  386. * THE FOLLOWING CODE MOVES ALL OF THE FIELDS MAINTAINED IN THE ABSOLUTE 36100000
  387. * ZERO PSA TO THE CURRENT PSA. THEN THE CURRENT PSA IS COPIED INTO 36200000
  388. * THE ABSOLUTE ZERO PSA. THE PSAS ARE FRETTED, AND PREFIXING IS 36300000
  389. * STOPPED. 36400000
  390. * 36500000
  391. SPACE 36600000
  392. PSAMOVE DS 0H @V5BC0AB 36700000
  393. L R2,PREFIXA ADDRESS THE ABSOLUTE ZERO PSA @V5BC0AB 36800000
  394. MVC TTSEGCNT(4),TTSEGCNT-PSA(R2) @V5BC0AB 36900000
  395. MVC PAGERATE(2),PAGERATE-PSA(R2) @V5BC0AB 37000000
  396. MVC CPID(4),CPID-PSA(R2) @V5BC0AB 37100000
  397. MVC TRACSTRT(12),TRACSTRT-PSA(R2) COPY TRACSTRT, TRACEND, X37200000
  398. @V5BC0AB 37300000
  399. * AND TRACCURR 37400000
  400. MVC PAGECUR(16),PAGECUR-PSA(R2) COPY @VA09843 37500000
  401. * PAGECUR,PAGENXT, 37600000
  402. * MONNEXT,PAGEND 37700000
  403. MVC CPAPRINP(1),CPAPRINP-PSA(R2) COPY APR IN PROCESS@VA12934 37730000
  404. * INDICATOR 37760000
  405. SR R14,R14 ADDRESS CURRENT PSA @V5BC0AB 37800000
  406. L R15,F4096 GET FROM MVCL LENGTH @V5BC0AB 37900000
  407. L R3,F4096 GET TO MVCL LENGTH @V5BC0AB 38000000
  408. * REGISTER HAS THE TO MVCL ADDRESS 38100000
  409. MVCL R2,R14 COPY CURRENT PSA TO ABSOLUTE ZERO PSA X38200000
  410. @V5BC0AB 38300000
  411. SPACE 38400000
  412. SPX ZEROES STOP PREFIXING @V5BC0AB 38500000
  413. SPACE 38600000
  414. MVC PREFIXA(8),ZEROES SET PREFIXA AND PREFIXB TO ZEROES X38700000
  415. @V5BC0AB 38800000
  416. L R11,SAVER11 GET CURRENT VMBLOK ADDRESS @VMH0025 38900000
  417. CHARGE STOP STOP CPU TIMER @VMH0025 39000000
  418. CHARGE SYNC SYNCHRONIZE VMTTIME @VMH0025 39100000
  419. LA R10,VMTTIME-VMBLOK GET VMTTIME DISPLACEMENT @VMH0025 39200000
  420. ST R10,TIMEDISP SET UP DISPLACEMENT IN PSA @VMH0025 39300000
  421. STCTL C0,C0,CPCREG0 SAVE CONTROL REGISTER ZERO @VMH0029 39400000
  422. NC CPCREG0+2(2),MFAESEXT TURN OFF MFA, EMS, EXTS, @VMH0029 39500000
  423. * AND TOD CLOCK SYNC CHECK INTERRUPT BITS 39600000
  424. LCTL C0,C0,CPCREG0 LOAD MODIFIED CR0 (CR0 UP MODE) @VMH0029 39700000
  425. SPACE 39800000
  426. NI APSTAT1,FF-APUOPER SET APUOPER OFF @V5BC0AB 39900000
  427. CHARGE START RESET THE CPU TIMER @VMH0025 40000000
  428. L R10,CPPSCHCA GET ADDRESS OF DMKSCH AP WAIT @VMH0008 40100000
  429. * VALUES 40200000
  430. TM APSTAT1,PROCIPL IS THIS THE IPL'ED PROCESSOR? @VMV0008 40300000
  431. BO SETSCH YES, RESET THE SECOND SET OF VALUES @VMV0008 40400000
  432. L R10,CPPSCHCU ADDRESS FIRST SET OF VALUES @VMV0008 40500000
  433. SETSCH DS 0H @VMV0008 40600000
  434. MVC 0(16,R10),INITWAIT RESET THE SAVED WAIT @VMH0008 40700000
  435. * INFORMATION TO THE INITIAL VALUES 40800000
  436. L R10,CPPPAGWS GET ADDRESS OF SAVED WAIT VALUES @VMV0007 40900000
  437. * IN DMKPAG 41000000
  438. TM APSTAT1,PROCIPL IS THIS THE IPL'ED PROCESSOR? @VMV0008 41100000
  439. BNO SETPAG NO, RESET THE FIRST SET OF VALUES @VMV0008 41200000
  440. LA R10,8(,R10) ADDRESS THE SECOND SET OF VALUES @VMV0007 41300000
  441. SETPAG DS 0H @VMV0008 41400000
  442. MVC 0(8,R10),WAITSAV8 SET TO INITIAL VALUE @VMV0007 41500000
  443. SLR R15,R15 CLEAR REGISTER 15 @VA12934 41600000
  444. ST R15,XCPEND CLEAR OUT XCPEND FIELD @VA13464 41700000
  445. L R2,CPPEXTST ADDR OF FIELD CONTAINING @VA10010 41800000
  446. * LOGICAL ADDR. OF STOPPED PROCESSOR 41900000
  447. STH R15,0(,R2) SET DMKEXTST TO ZEROES @VA10010 42000000
  448. SPACE 42100000
  449. STH R15,IPUADDRX ZERO IPUADDRX @V5BC0AB 42200000
  450. L R2,=A(DMKLOKSY) GET ADDRESS OF SYSTEM LOCK @VMH0028 42300000
  451. STH R15,LPUADDRX ZERO LPUADDRX @V5BC0AB 42400000
  452. ST R15,0(,R2) ZERO THE GLOBAL SYSTEM LOCK @VMH0028 42500000
  453. ST R15,UNSHRVM CLEAR ADDRESS OF VMBLOK PENDING @VMH0020 42600000
  454. * UNSHARE 42700000
  455. ST R15,STACKVM CLEAR STACKED (LOCKED) VMBLOK @VMH0020 42800000
  456. * ADDRESS 42900000
  457. L R2,CPPDMPAA GET PTR TO ATTACH. PROC'S ADDR @V5BC0AB 43000000
  458. MVC 0(2,R2),IPUADDR SET IT TO REMAINING PROCESSOR ADDRESS X43100000
  459. @V5BC0AB 43200000
  460. L R2,CPPDMPMA GET ADDRESS IN DMKDMP ADDRESS OF @VMV0013 43300000
  461. * THE ADDRESS OF THE MAIN PROCESSOR 43400000
  462. MVC 0(2,R2),IPUADDR MOVE IN ADDRESS OF REMAINING @VMV0013 43500000
  463. * PROCESSOR 43600000
  464. L R1,CPPDMPSA GET PTR TO PSA ADDRESSES @V5BC0AB 43700000
  465. L R7,4(,R1) GET PSA ADDRESS OF PROC. GOING OFFLINE X43800000
  466. @VA12934 43900000
  467. L R15,=A(DMKMCTFL) ADDRESS OF DMKMCT'S FLAGS @VA12934 43905000
  468. TM 0(R15),MCTFS HAS DMKMCTFS BEEN CALLED? (A SIGP@VA12934 43910000
  469. * TO THE OTHER PROC. WAS UNSUCCESSFUL 43915000
  470. BZ PSAFRET1 NO, CONTINUE NORMALLY @VA12934 43920000
  471. SPACE 1 43925000
  472. * IF DMKMCTFS HAS BEEN ENTERED, A SIGP TO THE OTHER 43930000
  473. * PROCESSOR HAS BEEN UNSUCCESSFUL. THE OTHER PROCESSOR 43935000
  474. * COULD POSSIBLY STILL BE RUNNING -- IT HAS NOT BEEN 43940000
  475. * SUCCESSFULLY STOPPED. DO NOT RELEASE THE OTHER 43945000
  476. * PROCESSOR'S PSA PAGE IN THIS CASE. THIS WILL 43950000
  477. * PREVENT A STORAGE OVERLAY IF THE OTHER PROCESSOR 43955000
  478. * SHOULD ACCESS ITS PSA. IN AN ATTEMPT TO CAUSE 43960000
  479. * THE OTHER PROCESSOR TO STOP RUNNING, SET ALL 43965000
  480. * LOCKWORDS TO LOOK AS THOUGH THIS PROCESSOR OWNS 43970000
  481. * THE LOCKS -- SINCE APUOPER IS STILL ON IN THE 43975000
  482. * OTHER PROCESSOR'S PSA, IF IT TRIES TO OBTAIN A LOCK 43980000
  483. * IT WILL BE BLOCKED. 43985000
  484. SPACE 1 43990000
  485. MVC PREFIXB-PSA(4,R7),ZEROES ZERO OTHER PROC'S @VA12934 43995000
  486. * PREFIXB FIELD 44000000
  487. L R15,=A(DMKMCTPF) ADDRESS OF PSA PAGE ADDRESS @VA12934 44005000
  488. ST R7,0(R15) REMEMBER THE ADDRESS OF THE @VA12934 44010000
  489. * OTHER PROCESSOR'S PSA PAGE. IF THE 44015000
  490. * PROCESSOR SHOULD BE VARIED ONLINE 44020000
  491. * AGAIN, THE SAME PAGE WILL BE USED 44025000
  492. * FOR ITS PSA. 44030000
  493. SPACE 1 44035000
  494. * SET ALL LOCKWORDS TO APPEAR 'OWNED' BY THIS PROCESSOR 44040000
  495. SLR R0,R0 CLEAR REGISTER 0 @VA12934 44045000
  496. LH R14,LPUADDR LOGICAL ADDRESS OF THIS PROC. @VA12934 44050000
  497. LA R15,LOCKTAB ADDRESS OF TABLE OF LOCKWORDS @VA12934 44055000
  498. LOCKLOOP L R1,0(R15) ADDRESS OF A LOCKWORD FROM TABLE @VA12934 44060000
  499. LTR R1,R1 AT END OF TABLE? @VA12934 44065000
  500. BM PSAFRET2 YES, BRANCH @VA12934 44070000
  501. BAL R7,SETLOCK GO SET LOCKWORD @VA12934 44075000
  502. LA R15,4(R15) POINT TO NEXT LOCKWORD IN TABLE @VA12934 44080000
  503. B LOCKLOOP LOOP TO SET NEXT LOCKWORD @VA12934 44085000
  504. SPACE 1 @VA12934 44090000
  505. PSAFRET1 SRL R7,8 LEAVE PAGE NUMBER * 16 @VA12934 44095000
  506. AL R7,ACORETBL CALCULATE THE CORTABLE ENTRY ADDRESS X44100000
  507. @V5BC0AB 44200000
  508. CALL DMKPTRFT FREE THE STORAGE @V5BC0AB 44300000
  509. PSAFRET2 L R1,CPPDMPSA @VA12934 44400000
  510. L R7,0(,R1) GET PSA ADDRESS OF REMAINING PROCESSOR X44500000
  511. @V5BC0AB 44600000
  512. SRL R7,8 LEAVE PAGE NUMBER * 16 @V5BC0AB 44700000
  513. AL R7,ACORETBL CALCULATE THE CORTABLE ENTRY ADDRESS X44800000
  514. @V5BC0AB 44900000
  515. CALL DMKPTRFT FREE A PAGE OF STORAGE @V5BC0AB 45000000
  516. L R1,CPPDMPSA GET PTR TO PSA ADDRESSES @V5BC0AB 45100000
  517. MVC 0(8,R1),ZEROES SET THE PSA ADDRESSES TO ZEROES @V5BC0AB 45200000
  518. ************************************************************** 45300000
  519. * THE SYSTEM IS NOW IN UP MODE * 45400000
  520. ************************************************************** 45500000
  521. SPACE 45600000
  522. * 45700000
  523. * THE FOLLOWING CODE RELEASES THE SYSTEM RESOURCES DESCRIBED BY THE 45800000
  524. * OFFLINE PROCESSOR'S COPY OF PAGE AND SWAP TABLES FOR SHARED SEGMENTS 45900000
  525. * 46000000
  526. L R11,ASYSVM GET ADDRESS OF SYSTEM VMBLOK @VMH0026 46100000
  527. L R11,VMPNT GET FIRST ADDR OF FIRST VMBLOK @VMH0026 46200000
  528. LR R10,R11 SAVE ADDRESS IN REGISTER 10 @VMH0026 46300000
  529. WAITONIO DS 0H @VMH0026 46400000
  530. TM VMRSTAT,VMPGWAIT IS VIRTUAL MACHINE WAITING @VMH0026 46500000
  531. * FOR PAGING I/O TO COMPLETE? 46600000
  532. BNO NEXTVMBK NO, BRANCH @VMH0026 46700000
  533. CALL DMKPTRPW GO WAIT FOR I/O TO COMPLETE @VMH0026 46800000
  534. NEXTVMBK DS 0H @VMH0026 46900000
  535. L R11,VMPNT GET NEXT VMBLOK ADDRESS @VMH0026 47000000
  536. CLR R11,R10 END OF CHAIN? @VMH0026 47100000
  537. BNE WAITONIO NO, BRANCH @VMH0026 47200000
  538. L R6,=A(DMKVMAS1) GET THE POINTER TO THE SHRTABLE ANCHOR X47300000
  539. @V5BC0AB 47400000
  540. L R7,0(,R6) GET ADDRESS OF FIRST SHRTABLE @V5BC0AB 47500000
  541. CR R7,R6 ARE THERE ANY SHRTABLES? @V5BC0AB 47600000
  542. BE UPMODE NO, CONTINUE WITH OFFLINE PROCESSING X47700000
  543. @V5BC0AB 47800000
  544. OI APSTAT2,CPPTLBR INDICATE A PTLB IS NECESSARY @V5BC0AB 47900000
  545. * NOTE THAT AT VARY ONLINE TIME, AS PART OF THE SIGNAL INITIAL 48000000
  546. * PROGRAM RESET (IPR), A PTLB IS DONE ON THE PROCESSOR BEING 48100000
  547. * SIGNALLED. 48200000
  548. SPACE 48300000
  549. USING SHRTABLE,R7 @V5BC0AB 48400000
  550. SPACE 48500000
  551. SHRTBLNX DS 0H @V5BC0AB 48600000
  552. TM SHRFLAG,SHRNOPRT IS NAMED SYSTEM UNPROTECTED? @VMI0032 48700000
  553. BNO PROTECT NO, BRANCH @VMI0032 48800000
  554. L R7,SHRFPNT GET ADDRESS OF NEXT SHRTABLE @VMI0032 48900000
  555. LA R7,0(,R7) ERASE SHRFLAG VALUE @VMI0085 49000000
  556. CR R7,R6 ANY MORE SHRTABLES? @VMI0032 49100000
  557. BE CHKCCPDU NO, BRANCH @VMI0032 49200000
  558. B SHRTBLNX YES, GO CHECK FOR PROTECT=NO @VMI0032 49300000
  559. PROTECT DS 0H @VMI0032 49400000
  560. L R10,SHRSEGCT GET NUMBER OF SEGMENTS @V5BC0AB 49500000
  561. LR R14,R10 GET NUMBER OF SEGMENTS @V5BC0AB 49600000
  562. LA R3,SHRSEGNM GET ADDRESS OF SHRSEGNM FIELD @V5BC0AB 49700000
  563. SHRPGT1 DS 0H @V5BC0AB 49800000
  564. LA R3,L'SHRPAGE(,R3) GET POSSIBLE ADDRESS OF 1ST SHRPAGE X49900000
  565. @V5BC0AB 50000000
  566. S R14,F4 UP TO 4 SEG. NOS/WORD @V5BC0AB 50100000
  567. BP SHRPGT1 LOOP UNTIL ADDRESSING 1ST SHRPAGE ENTRY X50200000
  568. @V5BC0AB 50300000
  569. SPACE 50400000
  570. USING SHRPAGE,R3 @V5BC0AB 50500000
  571. SPACE 50600000
  572. SHRPGTNX DS 0H @V5BC0AB 50700000
  573. L R4,SHRPAGE GET PAGE TABLE ADDRESS @V5BC0AB 50800000
  574. N R4,=A(X'FFFFFE') LEAVE PGT ADDRESS ONLY @V5BC0AB 50900000
  575. SL R4,F16 BACK UP TO HEADER @V5BC0AB 51000000
  576. TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 51100000
  577. BZ GOTPGT NO-WE ARE POINTING TO THE CORRECT@V60B7AA 51200000
  578. * (I.E., FIRST) SET OF TABLES 51300000
  579. LA R4,PAGBMP(,R4) ADDRESS THE ATT. PROC'S PGT @V5BC0AB 51400000
  580. GOTPGT SLR R9,R9 CLEAR REGISTER 9 @V60B7AA 51500000
  581. IC R9,SHRPAGE GET FIRST BYTE OF SHRPAGE @V5BC0AB 51600000
  582. SRL R9,4 LEAVE NUMBER OF PAGES MINUS ONE @V5BC0AB 51700000
  583. AL R9,F1 ADD ONE TO NUMBER OF PAGES @V5BC0AB 51800000
  584. SPACE 51900000
  585. USING PAGTABLE,R4 @V5BC0AB 52000000
  586. SPACE 52100000
  587. LA R8,PAGCORE GET POINTER TO 1ST PAGE ADDRESS @V5BC0AB 52200000
  588. SPACE 52300000
  589. USING PAGCORE,R8 @V5BC0AB 52400000
  590. SPACE 52500000
  591. LA R5,PAGTSWP(,R4) GET ADDRESS OF SWPTABLE @V5BC0AB 52600000
  592. SPACE 52700000
  593. USING SWPTABLE,R5 @V5BC0AB 52800000
  594. SPACE 52900000
  595. L R11,SWPVM GET VMBLOK ADDRESS @V5BC0AB 53000000
  596. LA R5,SWPFLAG ADDRESS THE FIRST SWPT ENTRY @V5BC0AB 53100000
  597. SPACE 53200000
  598. DROP R5 @V5BC0AB 53300000
  599. SPACE 53400000
  600. USING SWPFLAG,R5 @V5BC0AB 53500000
  601. SPACE 53600000
  602. DOAPGTE DS 0H @V5BC0AB 53700000
  603. TM PAGCORE+1,PAGINVAL IS PAGE IN CORE? @V5BC0AB 53800000
  604. BO SLOTRLSE NO, SEE IF SLOT MAY BE RELEASED @V5BC0AB 53900000
  605. LH R2,PAGCORE LOAD A PAGCORE ENTRY @V5BC0AB 54000000
  606. N R2,=A(X'FFF0') LEAVE ONLY PAGE NUMBER * 16 @V5BC0AB 54100000
  607. A R2,ACORETBL GET CORE TABLE ENTRY ADDRESS @V5BC0AB 54200000
  608. SPACE 54300000
  609. USING CORTABLE,R2 @V5BC0AB 54400000
  610. SPACE 54500000
  611. CNTRS DS 0H @V5BC0AB 54600000
  612. TM CORFLAG,CORRSV IS PAGE RESERVED? @V5BC0AB 54700000
  613. BZ DECPTRSC NO, BRANCH @V5BC0AB 54800000
  614. L R15,=A(DMKPTRRC) GET RESERVED PAGE COUNT ADDRESS X54900000
  615. @V5BC0AB 55000000
  616. L R14,0(,R15) PICK UP COUNT FIELD @V5BC0AB 55100000
  617. BCTR R14,0 DECREMENT COUNT @V5BC0AB 55200000
  618. ST R14,0(,R15) STORE NEW COUNT @V5BC0AB 55300000
  619. L R15,=A(DMKDSPNP) GET ADDRESS OF PAGEABLE PAGE COUNT X55400000
  620. @V5BC0AB 55500000
  621. LA R14,1 GET INCREMENT @V5BC0AB 55600000
  622. AL R14,0(,R15) INCREMENT COUNT @V5BC0AB 55700000
  623. ST R14,0(,R15) STORE NEW COUNT @V5BC0AB 55800000
  624. DECPTRSC DS 0H @V5BC0AB 55900000
  625. L R15,=A(DMKPTRSC) GET ADDRESS OF SHARED PAGES COUNT X56000000
  626. @V5BC0AB 56100000
  627. L R14,0(,R15) GET COUNT @V5BC0AB 56200000
  628. BCTR R14,0 DECREMENT COUNT @V5BC0AB 56300000
  629. ST R14,0(,R15) STORE COUNT @V5BC0AB 56400000
  630. L R14,CORVM GET VMBLOK ADDRESS OF OWNER @V5BC0AB 56500000
  631. LH R15,VMPAGES-VMBLOK(,R14) DECREMENT FRAME COUNT @V5BC0AB 56600000
  632. S R15,F1 BY ONE @V5BC0AB 56700000
  633. BM CPP1 COUNT IS NEGATIVE, TERMINATE CP @V5BC0AB 56800000
  634. STH R15,VMPAGES-VMBLOK(,R14) STORE NEW COUNT @V5BC0AB 56900000
  635. ZEROCORE DS 0H @V5BC0AB 57000000
  636. OI VMESTAT-VMBLOK(R14),VMINVPAG INDICATE INVALID PAGE X57100000
  637. @V5BC0AB 57200000
  638. XC CORPGPNT(4),CORPGPNT ZERO PAGE TABLE ADDRESS @V5BC0AB 57300000
  639. MVC PAGCORE,F8+2 INVALIDATE PAGE TABLE ENTRY @V5BC0AB 57400000
  640. ST R7,SAVEWRK7 SAVE SHRTABLE POINTER @V5BC0AB 57500000
  641. TM CORFLAG,CORIOLCK IS PAGE LOCKED FOR I/O? @V5BC0AB 57600000
  642. BZ PAGEFRET NO, GO FREE PAGE @V5BC0AB 57700000
  643. SR R0,R0 CLEAR REGISTER ZERO @V5BC0AB 57800000
  644. STCM R0,B'0111',CORSWPNT+1 CLEAR SWAP TABLE POINTER @V5BC0AB 57900000
  645. NI CORFLAG,FF-CORSHARE-CORRSV CLEAR SHARE AND RESERVED 58000000
  646. * @V5BC0AB 58100000
  647. B SLOTRLSE GO TEST FOR SLOT RELEASE @V5BC0AB 58200000
  648. PAGEFRET DS 0H @V5BC0AB 58300000
  649. LR R7,R2 R7 HAS THE ADDRESS OF CORTABLE ENTRY X58400000
  650. @V5BC0AB 58500000
  651. CALL DMKPTRFT RETURN PAGE TO FREE LIST @V5BC0AB 58600000
  652. L R7,SAVEWRK7 RESTORE SHRTABLE ADDRESS @V5BC0AB 58700000
  653. SLOTRLSE DS 0H @V5BC0AB 58800000
  654. TM SWPFLAG,SWPRECMP CAN DASD SLOT BE RELEASED? @V5BC0AB 58900000
  655. BO BMPCORE1 NO, BRANCH @V5BC0AB 59000000
  656. DROP R2 @V5BC0AB 59100000
  657. SPACE 59200000
  658. SR R2,R2 CLEAR REGISTER @V5BC0AB 59300000
  659. IC R2,SWPCODE GET VOLUME INDEX CODE @V5BC0AB 59400000
  660. SLL R2,3 GET VOLUME INDEX CODE @V5BC0AB 59500000
  661. AL R2,=A(DMKSYSOW) POINT TO OWNED LIST ENTRY @V5BC0AB 59600000
  662. LH R2,OWNDRDEV-OWNDLIST(,R2) GET RDEVBLOK INDEX @V5BC0AB 59700000
  663. SLL R2,3 CONVERT TO BYTE INDEX @V5BC0AB 59800000
  664. AL R2,ARIODV ADD TO ADDRESS OF FIRST RDEVBLOK @V5BC0AB 59900000
  665. SPACE 60000000
  666. USING RDEVBLOK,R2 @V5BC0AB 60100000
  667. SPACE 60200000
  668. LA R15,VMPDRUM-VMBLOK ASSUME ON DRUM @V5BC0AB 60300000
  669. CLI RDEVTYPE,TYP2305 IS IT A DRUM? @V5BC0AB 60400000
  670. BE DRUM YES, BRANCH IT IS A DRUM @V5BC0AB 60500000
  671. LA R15,VMPDISK-VMBLOK NO, RESET TO DISK COUNTER @V5BC0AB 60600000
  672. DRUM DS 0H @V5BC0AB 60700000
  673. LH R0,0(R15,R11) GET COUNTER @V5BC0AB 60800000
  674. S R0,F1 DECREMENT @V5BC0AB 60900000
  675. STH R0,0(R15,R11) STORE NEW COUNT @V5BC0AB 61000000
  676. SPACE 61100000
  677. DROP R2 @V5BC0AB 61200000
  678. SPACE 61300000
  679. CALL DMKPGTSP RELEASE THE SYSTEM DASD SLOT @V5BC0AB 61400000
  680. MVI SAVEWRK8,YES INDICATE CCPD'S MUST BE UPDATED @V5BC0AB 61500000
  681. * IN THE ATTCHED PROC'S COPY OF PGT/SWPT 61600000
  682. * I.E., AT LEAST ONE SWPRECMP FLAG WAS OFF 61700000
  683. BMPCORE1 DS 0H @V5BC0AB 61800000
  684. LA R5,8(,R5) ADDRESS NEXT SWAP TABLE ENTRY @V5BC0AB 61900000
  685. LA R8,L'PAGCORE(,R8) ADDRESS THE NEXT POSSIBLE PGT POINTER X62000000
  686. @V5BC0AB 62100000
  687. BCT R9,DOAPGTE AND PROCESS IT, IF THERE IS ANOTHER X62200000
  688. @V5BC0AB 62300000
  689. LA R3,L'SHRPAGE(,R3) ADDRESS NEXT SHRPAGE ENTRY @V5BC0AB 62400000
  690. BCT R10,SHRPGTNX IF THERE IS ANOTHER @V5BC0AB 62500000
  691. L R7,SHRFPNT GET NEXT SHRTABLE ADDRESS @V5BC0AB 62600000
  692. CR R7,R6 ARE THERE ANY MORE SHARE TABLES? @V5BC0AB 62700000
  693. BNE SHRTBLNX BRANCH IF THERE ARE MORE @V5BC0AB 62800000
  694. SPACE 62900000
  695. DROP R3,R4,R5,R7,R8 @V5BC0AB 63000000
  696. CHKCCPDU DS 0H @VMI0032 63100000
  697. SPACE 63200000
  698. CLI SAVEWRK8,YES MUST THE CCPDS BE UPDATED? @V5BC0AB 63300000
  699. BNE UPMODE NO, CONTINUE OFFLINE PROCESSING @V5BC0AB 63400000
  700. SPACE 4 63500000
  701. * THE FOLLOWING CODE WILL REINITIALIZE THE CCPDS OF THE * 63600000
  702. * OFFLINE PROCESSOR'S SET OF SWAP TABLES. 63700000
  703. L R6,=A(DMKVMAS1) GET THE POINTER TO THE SHRTABLE ANCHOR X63800000
  704. @V5BC0AB 63900000
  705. L R7,0(,R6) GET THE ADDRESS OF THE FIRST SHRTABLE X64000000
  706. @V5BC0AB 64100000
  707. BAL R5,GETSNTBL BRING IN AND LOCK THE SYSTEM NAME TABLE X64200000
  708. @V5BC0AB 64300000
  709. SPACE 64400000
  710. USING SYSTBL,R4 @V5BC0AB 64500000
  711. SPACE 64600000
  712. USING SHRTABLE,R7 @V5BC0AB 64700000
  713. SPACE 64800000
  714. SYSNAMEL DS 0H FIND THE SYSTABLE FOR THIS SHRTABLE X64900000
  715. @V5BC0AB 65000000
  716. TM SHRFLAG,SHRNOPRT IS NAMED SYSTEM UNPROTECTED? @VMI0032 65100000
  717. BNO COMPAREN NO, BRANCH @VMI0032 65200000
  718. L R7,SHRFPNT GET NEXT SHRTABLE ADDRESS @VMI0032 65300000
  719. LA R7,0(,R7) ERASE SHRFLAG VALUE @VMI0085 65400000
  720. CR R7,R6 ANY MORE SHRTABLES? @VMI0032 65500000
  721. BNE SYSNAMEL YES, BRANCH @VMI0032 65600000
  722. BAL R5,UNLSNTBL GO UNLOCK DMKSNT @VMI0032 65700000
  723. B UPMODE GO FINISH OFFLINE PROCESSING @VMI0032 65800000
  724. COMPAREN DS 0H @VMI0032 65900000
  725. CLC SYSNAME,SHRNAME DO THE NAMES MATCH? @V5BC0AB 66000000
  726. BE NAMEEQU YES, FOUND THE SYSTABLE FOR THE SHRTABLE X66100000
  727. @V5BC0AB 66200000
  728. L R3,SYSPNT GET DISPLACEMENT OF NEXT ENTRY @V5BC0AB 66300000
  729. AR R4,R3 COMPUTE ADDR OF NEXT ENTRY @V5BC0AB 66400000
  730. LTR R3,R3 LAST ENTRY @V5BC0AB 66500000
  731. BNZ SYSNAMEL LOOP UNTIL A MATCH IS FOUND @V5BC0AB 66600000
  732. SPACE 66700000
  733. * A CORRESPONDING SYSTABLE WAS NOT FOUND FOR THE SHARED SYSTEM. 66800000
  734. * THIS IS AN ERROR CONDITION. ISSUE ABEND, CPP002 66900000
  735. * 67000000
  736. NI APSTAT4,FF-POFFLINE CLEAR VARY IN PROCESS FLAG @V5BC0AB 67100000
  737. BAL R5,UNLSNTBL UNLOCK THE SNT @V5BC0AB 67200000
  738. B CPP2 ABEND CP @V5BC0AB 67300000
  739. * 67400000
  740. * 67500000
  741. NAMEEQU DS 0H @V5BC0AB 67600000
  742. LA R1,SYSVOL GET ADDRESS OF VOLUME SERIAL @V5BC0AB 67700000
  743. LA R0,L'SYSVOL GET LENGTH OF SERIAL @V5BC0AB 67800000
  744. CALL DMKSCNVS GET DEVICE BLOCK @V5BC0AB 67900000
  745. BZ DEVBK CONTINUE IF FOUND @V5BC0AB 68000000
  746. L R4,SAVEWRK4 GET ADDRESS OF 1ST SYSTABLE ENTRY X68100000
  747. @V5BC0AB 68200000
  748. L R7,SHRFPNT SKIP TO NEXT SHRTABLE @V5BC0AB 68300000
  749. CR R7,R6 END OF SHRTABLE CHAIN? @V5BC0AB 68400000
  750. BNE SYSNAMEL NO, PROCESS ALL SHRTABLES @V5BC0AB 68500000
  751. BAL R5,UNLSNTBL NO MORE. UNLOCK THE SNT @V5BC0AB 68600000
  752. B UPMODE CONTINUE OFFLINE PROCESSING @V5BC0AB 68700000
  753. DEVBK DS 0H @V5BC0AB 68800000
  754. USING RDEVBLOK,R1 @V5BC0AB 68900000
  755. L R5,SYSSTART LOAD CCPD OF START OF SYSTEM @V5BC0AB 69000000
  756. * ON SYSVOL 69100000
  757. IC R5,RDEVCODE+1 INSERT INDEX INTO OWNED LIST FOR X69200000
  758. @V5BC0AB 69300000
  759. * SYSVOL 69400000
  760. LA R0,PAGE2314 MAX. PAGES/CYL ON 2314 @V5BC0AB 69500000
  761. TM RDEVTYPE,TYP2314 2314? @V5BC0AB 69600000
  762. BO SAVEMAXP YES @V5BC0AB 69700000
  763. LA R0,PAGE3330 MAX. PAGES/CYL ON 3330 @V5BC0AB 69800000
  764. TM RDEVTYPE,TYP3330 3330? @V5BC0AB 69900000
  765. BO SAVEMAXP YES @V5BC0AB 70000000
  766. LA R0,PAGE3350 MAX. PAGES/CYL ON 3350 @V5BC0AB 70100000
  767. CLI RDEVTYPE,TYP3350 3350? @V5BC0AB 70200000
  768. BE SAVEMAXP YES @V5BC0AB 70300000
  769. LA R0,PAGE3375 Max. pages/cyl on 3375 HRC106DK 70300100
  770. CLI RDEVTYPE,TYP3375 3375? HRC106DK 70300200
  771. BE SAVEMAXP Yes HRC106DK 70300300
  772. LA R0,PAGE3380 Max. pages/cyl on 3380 HRC106DK 70300400
  773. CLI RDEVTYPE,TYP3380 3380? HRC106DK 70300500
  774. BE SAVEMAXP Yes HRC106DK 70300600
  775. LA R0,PAGE2305 MAX. PAGES/CYL ON 2305 AND 3340 @V5BC0AB 70400000
  776. * 70500000
  777. SPACE 70600000
  778. DROP R1 @V5BC0AB 70700000
  779. SPACE 70800000
  780. SAVEMAXP DS 0H @V5BC0AB 70900000
  781. SLL R0,8 @V5BC0AB 71000000
  782. ST R0,SAVEWRK9 SAVE PAGES/CYL VALUE @V5BC0AB 71100000
  783. L R6,F256 GET INCREMENT CONSTANT FOR CCPDS @V5BC0AB 71200000
  784. AR R5,R6 BUMP TO NEXT CCPD @V5BC0AB 71300000
  785. * THIS MOVES PASS THE PAGE CONTAINING 71400000
  786. * KEYS, ETC. 71500000
  787. LR R1,R5 PUT CCPD IN R1 @V5BC0AB 71600000
  788. N R1,WHEXFF00 LEAVE ONLY PAGE NUMBER @V5BC0AB 71700000
  789. CL R1,SAVEWRK9 LAST PAGE ON THIS CYLINDER? @V5BC0AB 71800000
  790. BNH SHRCT NO, BRANCH CYL OK @V5BC0AB 71900000
  791. A R5,HEX10000 YES, BUMP TO NEXT CYLINDER @V5BC0AB 72000000
  792. ICM R5,B'0010',F1+3 SET PAGE NUMBER TO 1 @V5BC0AB 72100000
  793. SHRCT DS 0H @V5BC0AB 72200000
  794. * 72300000
  795. * 72400000
  796. L R14,SHRSEGCT GET NO. OF SHARED SEGMENTS @VMH0007 72500000
  797. SLR R10,R10 ZERO REGISTER 10 @VMH0007 72600000
  798. LA R3,SHRSEGNM POINT TO SHRSEGNM FIELD @V5BC0AB 72700000
  799. SHRPGT DS 0H COMPUTE ADDRESS OF FIRST SHRPAGE FIELD X72800000
  800. @V5BC0AB 72900000
  801. LA R3,L'SHRPAGE(,R3) GET NEXT POSSIBLE SHRPAGE POINTER X73000000
  802. @V5BC0AB 73100000
  803. S R14,F4 SUBTRACT 4 (4 POSSIBLE ENTRIES/WORD) X73200000
  804. @V5BC0AB 73300000
  805. BP SHRPGT LOOP UNTIL R3 ADDRESSES 1ST SHRPAGE X73400000
  806. ENTRY 73500000
  807. ST R3,SAVEWRK3 SAVE SHRPAGE POINTER @V5BC0AB 73600000
  808. * CALCULATE THE ADDRESS OF SYSHRSEG 73700000
  809. LH R3,SYSPAGLN GET COUNT OF SYSPAGNM ENTRIES @V5BC0AB 73800000
  810. ST R3,SAVEWRK8 SAVE NUMBER OF SYSPAGNM ENTRIES @V5BC0AB 73900000
  811. SLL R3,2 TIMES FOUR @V5BC0AB 74000000
  812. LA R3,SYSPAGNM(R3) R3 = ADDRESS OF SYSSEGLN @V5BC0AB 74100000
  813. LA R3,2(,R3) R3 = ADDRESS OF SYSHRSEG @V5BC0AB 74200000
  814. * 74300000
  815. USING SYSHRSEG,R3 @V5BC0AB 74400000
  816. SPACE 74500000
  817. SR R2,R2 INDEX THRU SYSPAGNM ENTRIES @V5BC0AB 74600000
  818. * 74700000
  819. LOOPPAGE DS 0H @V5BC0AB 74800000
  820. L R8,SYSPAGNM(R2) LOAD RANGE OF PAGES @V5BC0AB 74900000
  821. ST R2,SAVEWRK2 SAVE SYSPAGNM INDEX @V5BC0AB 75000000
  822. SRDL R8,16 RIGHT JUSTIFY START PAGE IN R8 @V5BC0AB 75100000
  823. SRL R9,16 RIGHT JUSTIFY END PAGE IN R9 @V5BC0AB 75200000
  824. SLL R8,12 COMPUTE START PAGE ADDRESS @V5BC0AB 75300000
  825. SLL R9,12 COMPUTE END PAGE ADDRESS @V5BC0AB 75400000
  826. * 75500000
  827. GETSEGNO DS 0H @V5BC0AB 75600000
  828. LR R1,R8 PUT PAGE ADDRESS IN R1 @V5BC0AB 75700000
  829. SRL R1,16 RIGHT JUSTIFY SEGMENT NO. @V5BC0AB 75800000
  830. SR R2,R2 CLEAR REGISTER 2 @V5BC0AB 75900000
  831. IC R2,SYSHRSEG(R10) GET SHARED SEGMENT NUMBER @VMH0007 76000000
  832. LR R14,R2 PUT SHARED SEG NO. IN REGISTER 14 X76100000
  833. @V5BC0AB 76200000
  834. SLL R14,16 FORM SEGMENT START PAGE ADDRESS @V5BC0AB 76300000
  835. AL R14,HEX10000 ADD IN 16 * 4096 @V5BC0AB 76400000
  836. ST R14,SAVEWRK6 SAVE SEGMENT END PAGE ADDRESS @V5BC0AB 76500000
  837. L R14,SAVEWRK3 YES,THEY MATCH. GET SHRPAGE PTR @VMH0007 76600000
  838. L R14,0(,R14) ADDRESS THE PAGE TABLE (LOAD @VMH0007 76700000
  839. * SHRPAGE) 76800000
  840. N R14,=A(X'FFFFFE') LEAVE PGT ADDRESS ONLY @VMH0007 76900000
  841. SL R14,F16 BACK UP TO PAGE TABLE HEADER @V60B7AA 77000000
  842. TM APSTAT1,PROCIPL RUNNING ON MAIN (IPL) PROC? @V60B7AA 77100000
  843. BZ GOTPGT2 NO-WE ARE POINTING AT THE CORRECT@V60B7AA 77200000
  844. * SET OF PG/SWAP TABLES 77300000
  845. LA R14,PAGBMP(,R14) ADDRESS DUPLICATE COPY OF PAGE @VMH0007 77400000
  846. * TABLES 77500000
  847. GOTPGT2 LA R14,PAGTSWP(,R14) GET SWPT ADDRESS FOR OTHER @V60B7AA 77600000
  848. * PROC'S COPY 77700000
  849. USING SWPTABLE,R14 @VMH0007 77800000
  850. LA R14,SWPFLAG ADDRESS THE FIRST SWPTABLE ENTRY @VMH0007 77900000
  851. DROP R14 @VMH0007 78000000
  852. SPACE 78100000
  853. LR R15,R8 GET PAGE ADDRESS @V5BC0AB 78200000
  854. SRL R15,12 LEAVE SEG/PAGE NUMBER @V5BC0AB 78300000
  855. N R15,F15 LEAVE ONLY PAGE NUMBER @V5BC0AB 78400000
  856. SLL R15,3 GET SWPT INDEX (PAGE NO. * 8) @V5BC0AB 78500000
  857. ALR R15,R14 ADD IN ADDRESS OF 1ST SWAP TABLE @VMH0007 78600000
  858. * ENTRY 78700000
  859. S R15,F8 SUBTRACT 8 FROM THE SWPTE @VMH0021 78800000
  860. ************************************************************** 78900000
  861. * NOTE THAT THIS SUBTRACT IS NECESSARY BECAUSE THE SWPTE 79000000
  862. * ADDRESS IS INCREMENTED BY 8 AT LABEL, UPDTCCPD. 79100000
  863. ************************************************************** 79200000
  864. SPACE 79300000
  865. USING SWPFLAG,R15 @V5BC0AB 79400000
  866. CLR R1,R2 DO SEGMENTS MATCH? @VMH0020 79500000
  867. BNE CCPDBUMP NO, INCREMENT CCPD BY ONE @VMH0020 79600000
  868. SPACE 79700000
  869. UPDTCCPD DS 0H @V5BC0AB 79800000
  870. LA R15,8(,R15) ADDRESS THE SWAP TABLE ENTRY @VMH0021 79900000
  871. ST R5,SWPCYL STORE CCPD IN DUPLICATE COPY OF SWPT X80000000
  872. @V5BC0AB 80100000
  873. OI SWPFLAG,SWPRECMP+SWPCHG1 TURN ON RECOMPUTE BIT @VMH0007 80200000
  874. * AND CHANGED BIT 80300000
  875. CCPDBUMP DS 0H @V5BC0AB 80400000
  876. AR R5,R6 BUMP TO NEXT CCPD @V5BC0AB 80500000
  877. LR R14,R5 PUT CCPD IN R14 @VMH0007 80600000
  878. N R14,WHEXFF00 @VMH0007 80700000
  879. CL R14,SAVEWRK9 @VMH0007 80800000
  880. BNH ADDAPAGE CYL IS STILL OK, CONTINUE @V5BC0AB 80900000
  881. A R5,HEX10000 BUMP TO NEXT CYLINDER @V5BC0AB 81000000
  882. ICM R5,B'0010',F1+3 SET PAGE NUMBER TO 1 @V5BC0AB 81100000
  883. * 81200000
  884. ADDAPAGE DS 0H @V5BC0AB 81300000
  885. AL R8,F4096 INCREASE SYSPAGNM START ADDRESS BY 1 X81400000
  886. PAGE 81500000
  887. CL R8,SAVEWRK6 OUT OF THIS SEGMENT'S PAGE RANGE @V5BC0AB 81600000
  888. BNL TSPAGNM1 YES, DONE WITH THIS SHARED SEGT. @VMH0007 81700000
  889. LR R1,R8 GET PAGE RANGE START ADDRESS @VMH0016 81800000
  890. SRL R1,16 LEAVE ONLY SEGMENT NUMBER @VMH0016 81900000
  891. CLR R1,R2 DID THEY MATCH? @VMH0007 82000000
  892. BE INRANGE GO SEE IF WITHIN SYSPAGNM RANGE @VMH0007 82100000
  893. CLR R8,R9 @VMH0007 82200000
  894. BNH CCPDBUMP @VMH0007 82300000
  895. B NEXTPAGE @VMH0007 82400000
  896. INRANGE DS 0H @VMH0021 82500000
  897. CLR R8,R9 OUT OF SYSPAGNM RANGE? @V5BC0AB 82600000
  898. BNH UPDTCCPD NO, GO UPDATE NEXT SWPT ENTRY @VMH0007 82700000
  899. NEXTPAGE L R2,SAVEWRK2 YES, LOAD CURRENT SYSPAGNM PTR. @VMH0007 82800000
  900. LA R2,4(,R2) BUMP ADDRESS TO NEXT ENTRY @V5BC0AB 82900000
  901. ST R2,SAVEWRK2 SAVE CURRENT SYSPAGNM POINTER @VMH0007 83000000
  902. L R8,SAVEWRK8 GET COUNT OF SYSPAGNM ENTRIES @V5BC0AB 83100000
  903. S R8,F1 DECREMENT BY ONE @V5BC0AB 83200000
  904. ST R8,SAVEWRK8 SAVE COUNT OF SYSPAGNM ENTRIES @V5BC0AB 83300000
  905. BNZ LOOPPAGE GO LOOK FOR THIS SHARED SEGMENT'S PAGE X83400000
  906. @V5BC0AB 83500000
  907. * RANGE WITHIN THE NEXT SYSPAGNM ENTRY 83600000
  908. B NXSYSTEM BRANCH IF SYSPAGNM EXHAUSTED @V5BC0AB 83700000
  909. TSPAGNM1 DS 0H A SHARED SEGMENT HAS BEEN REINITIALIZED X83800000
  910. @V5BC0AB 83900000
  911. L R15,SAVEWRK3 GET SHRPAGE POINTER @V5BC0AB 84000000
  912. LA R15,4(,R15) BUMP POINTER TO NEXT SHRPAGE ENTRY X84100000
  913. @V5BC0AB 84200000
  914. ST R15,SAVEWRK3 SAVE SHRPAGE POINTER @V5BC0AB 84300000
  915. CR R8,R9 THIS PAGNM ENTRY COMPLETE? @V5BC0AB 84400000
  916. BH NEXTPAGN YES, GO GET NEXT SYSPAGNM POINTER X84500000
  917. @V5BC0AB 84600000
  918. * THIS SYSHRSEG HAS BEEN UPDATED, BUT THIS SYSPAGNM ENTRY IS NOT 84700000
  919. * EXHAUSTED. 84800000
  920. A R10,F1 ADD 1 TO NO. OF SEGS PROCESSED @VMH0007 84900000
  921. C R10,SHRSEGCT ANY MORE SYSHRSEG ENTRIES? @VMH0007 85000000
  922. BNE GETSEGNO PROCESS NEXT SYSHRSEG ENTRY @VMH0007 85100000
  923. * 85200000
  924. B NXSYSTEM BRANCH, DONE WITH THIS SYSTABLE @V5BC0AB 85300000
  925. * 85400000
  926. NEXTPAGN DS 0H @V5BC0AB 85500000
  927. L R2,SAVEWRK2 LOAD PAGNM POINTER @V5BC0AB 85600000
  928. LA R2,4(,R2) BUMP TO NEXT ENTRY @V5BC0AB 85700000
  929. * 85800000
  930. A R10,F1 ADD 1 TO NO. OF SEGS PROCESSED @VMH0007 85900000
  931. C R10,SHRSEGCT ANY MORE SYSHRSEG ENTRIES? @VMH0007 86000000
  932. BNE LOOPPAGE PROCESS NEXT SYSHRSEG ENTRY, IF @VMH0007 86100000
  933. * THERE IS ANOTHER ONE 86200000
  934. NXSYSTEM DS 0H @V5BC0AB 86300000
  935. L R4,SAVEWRK4 GET FIRST SYSTABLE ENTRY @V5BC0AB 86400000
  936. L R7,SHRFPNT GET NEXT SHRTABLE POINTER @V5BC0AB 86500000
  937. L R6,=A(DMKVMAS1) GET SHRTABLE ANCHOR ADDRESS @VMH0001 86600000
  938. CR R7,R6 END OF CHAIN? @V5BC0AB 86700000
  939. BNE SYSNAMEL NO, PROCESS ALL SHRTABLES @V5BC0AB 86800000
  940. BAL R5,UNLSNTBL OTHERWISE, GO UNLOCK THE SNT @V5BC0AB 86900000
  941. SPACE 87000000
  942. DROP R3,R4,R7,R15 @V5BC0AB 87100000
  943. EJECT 87200000
  944. UPMODE DS 0H @V5BC0AB 87300000
  945. SPACE 87400000
  946. SR R15,R15 SET REGISTER TO 0 @VA12934 87500000
  947. ST R15,SAVER1 STORE IN CALLER'S REG 1 @VA12934 87600000
  948. EXIT RETURN TO CALLER @VA12934 87700000
  949. SPACE 87800000
  950. ERCPP192 DS 0H @VA12934 87900000
  951. LA R15,192 GET MESSAGE NUMBER @VA12934 88000000
  952. ST R15,SAVER1 AND SAVE IT IN HIS REGISTER 1 @VA12934 88100000
  953. EXIT RETURN TO CALLER @VA12934 88200000
  954. SPACE 88300000
  955. ************************************************************** 88400000
  956. * TRANS, LOCK, UNLOCK THE SYSTEM NAME TABLE * 88500000
  957. ************************************************************** 88600000
  958. GETSNTBL DS 0H @V5BC0AB 88700000
  959. L R1,=A(DMKSNTBL) GET ADDRESS OF THE SNT @V5BC0AB 88800000
  960. TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM) @V5BC0AB 88900000
  961. LR R4,R2 PUT ADDRESS OF THE SNT IN REGISTER 4 X89000000
  962. @V5BC0AB 89100000
  963. ST R4,SAVEWRK4 SAVE THE ADDRESS OF THE SNT @V5BC0AB 89200000
  964. BR R5 RETURN TO THE CALLER @V5BC0AB 89300000
  965. * 89400000
  966. UNLSNTBL DS 0H @V5BC0AB 89500000
  967. L R2,SAVEWRK4 GET SNT ADDRESS @V5BC0AB 89600000
  968. CALL DMKPTRUL GO UNLOCK THE SNT @V5BC0AB 89700000
  969. BR R5 RETURN TO THE CALLER @V5BC0AB 89800000
  970. EJECT 89805000
  971. ************************************************************** 89810000
  972. * SET A LOCKWORD TO CONTAIN VALUE OF LPUADDR 89815000
  973. ************************************************************** 89820000
  974. SETLOCK DS 0H @VA12934 89825000
  975. CLC LPUADDR,2(R1) IS LOCK ALREADY OWNED BY THIS @VA15414 89831000
  976. * PROCESSOR? 89835000
  977. BE LOCKOK YES -- OK @VA12934 89840000
  978. CS R0,R14,0(R1) PLACE LPUADDR IN LOCKWORD @VA12934 89845000
  979. BNZ WAIT019 IF CS FAILED, IT IS BECAUSE THE @VA12934 89850000
  980. * OTHER PROCESSOR NOW OWNS THE LOCK 89855000
  981. * LOAD DISABLED WAIT -- OTHER PROC. 89860000
  982. * IS STILL RUNNING, AND TO CONTINUE 89865000
  983. * MIGHT JEOPARDIZE SYSTEM INTEGRITY 89870000
  984. LOCKOK BR R7 RETURN TO THE CALLER @VA12934 89875000
  985. SPACE 2 89880000
  986. WAIT019 LPSW DISABPSW LOAD DISABLED WAIT @VA12934 89885000
  987. EJECT 89900000
  988. ABEND 1 VMPAGES IS NEGATIVE, TERMINATE CP X90000000
  989. @V5BC0AB 90100000
  990. ABEND 2 THE SYSTEM NAME TABLE DID NOT HAVE @V5BC0AB 90200000
  991. * AN ENTRY FOR A NAME SYSTEM @V5BC0AB 90300000
  992. * DECLARES * 90400000
  993. PAGE2314 EQU 32 PAGES/CYL FOR 2314/2319 @V5BC0AB 90500000
  994. PAGE3330 EQU 57 PAGES/CYL FOR 3330 @V5BC0AB 90600000
  995. PAGE3350 EQU 120 PAGES/CYL FOR 3350 @V5BC0AB 90700000
  996. PAGE3375 EQU 96 Pages/cyl for 3375 HRC106DK 90700100
  997. PAGE3380 EQU 150 Pages/cyl for 3380 HRC106DK 90700200
  998. PAGE2305 EQU 24 PAGES/CYL FOR 2305/3340 @V5BC0AB 90800000
  999. YES EQU C'Y' @V5BC0AB 90900000
  1000. FF EQU X'FF' @V5BC0AB 91000000
  1001. MCTFS EQU X'80' TO TEST DMKMCT'S FLAG BYTE FOR @VA12934 91030000
  1002. * DMKMCTFS ENTRY @VA12934 91060000
  1003. DS 0D @V5BC0AB 91100000
  1004. WHEXFF00 DC X'0000FF00' @V5BC0AB 91200000
  1005. HEX10000 DC X'00010000' @V5BC0AB 91300000
  1006. DS 0F @V5BC0AB 91400000
  1007. CPPDSPRQ DC A(DMKDSPRQ) DISPATCHER QUEUE ANCHORS @VA09324 91500000
  1008. CPPEXTST DC A(DMKEXTST) ADDR OF FIELD CONTAINING THE @VA10010 91600000
  1009. * LOGICAL ADDR. OF THE STOPPED PROC. 91700000
  1010. CPPDMPMA DC A(DMKDMPMA) PROCESSOR ADDRESS OF MAIN @V5BC0AB 91800000
  1011. DS 0D @V60B7AB 91900000
  1012. CPWAIT16 DC X'0002000000000016' CONCS OR DISCS FAILED @V60B7AB 92000000
  1013. CPPDMPAA DC A(DMKDMPAA) ATTACHED PROCESSOR'S ADDRESS @V5BC0AB 92100000
  1014. CPPDMPSA DC A(DMKDMPSA) POINTERTO PSA ADDRESSES @V5BC0AB 92200000
  1015. CPPFREAP DC A(DMKFREAP) POINTER TO FREE STORAGE FOR DMKFRE X92300000
  1016. @V5BC0AB 92400000
  1017. CPPSCHCA DC A(DMKSCHCA) PTR TO DMKSCH AP WAIT VALUES @VMH0008 92500000
  1018. CPPSCHCU DC A(DMKSCHCU) @VMV0008 92600000
  1019. * THE FOLLOWING FOUR AP WAIT VALUES MUST REMAIN CONTIGUOUS 92700000
  1020. INITWAIT DC X'00000078' @VMH0008 92800000
  1021. DC X'FFFFFFFF' @VMV0007 92900000
  1022. DC X'FFFFFFFF' @VMV0007 93000000
  1023. DC X'FFFFFFFF' @VMV0007 93100000
  1024. * THE FOLLOWING 8 BYTES MUST REMAIN CONTIGUOUS 93200000
  1025. WAITSAV8 DC X'7FFFFFFF' WAITSAVE VALUE FOR THE ATTACHED @VMH0012 93300000
  1026. DC X'FFFFF000' PROCESSOR @VMH0012 93400000
  1027. CPPPAGWS DC A(DMKPAGWS) POINTER TO DMKPAG WAITSAVE VALUES @VMV0007 93500000
  1028. MFAESEXT DC X'0FFF' USED TO DISABLE MALFUNCTION ALERT, @VMH0029 93600000
  1029. * EMERGENCY SIGNAL, EXTERNAL SIGNAL AND TOD CLOCK 93700000
  1030. * SYNC CHECK INTERRUPTS 93800000
  1031. DISABPSW DS 0D @VA12934 93809000
  1032. DC X'00020000',X'00000019' @VA12934 93818000
  1033. SPACE 2 93827000
  1034. LOCKTAB DC A(DMKLOKSY) @VA12934 93836000
  1035. DC A(DMKLOKDS) @VA12934 93845000
  1036. DC A(DMKLOKTR) @VA12934 93854000
  1037. DC A(DMKLOKRL) @VA12934 93863000
  1038. DC A(DMKLOKFR) @VA12934 93872000
  1039. DC F'-1' @VA12934 93881000
  1040. SPACE 2 93890000
  1041. *************************************************************** 93900000
  1042. * MESSAGES * 94000000
  1043. *************************************************************** 94100000
  1044. * 94200000
  1045. CPP623MG DC X'151515' @V60B7AB 94300000
  1046. DC C'DMKCPP623I CHANNEL SET CONNECTED TO PROCESSOR ' @V60B7AB 94400000
  1047. CPPID623 DC C' ' @V60B7AB 94500000
  1048. DC X'1515' @V60B7AB 94600000
  1049. CPP623LN EQU *-CPP623MG @V60B7AB 94700000
  1050. * 94800000
  1051. LTORG 94900000
  1052. EJECT 95000000
  1053. COPY SHRTABLE 95100000
  1054. COPY SYSTBL 95200000
  1055. PSA 95300000
  1056. COPY CORE 95400000
  1057. COPY EQU 95500000
  1058. COPY SAVE 95600000
  1059. COPY VMBLOK 95700000
  1060. COPY RBLOKS 95800000
  1061. COPY VBLOKS 95900000
  1062. COPY DEVTYPES 96000000
  1063. COPY ALLOC 96100000
  1064. COPY TIMER 96200000
  1065. COPY MCHAREA 96300000
  1066. END 96400000