Table of Contents

DMKCPU Source

References

Source Listing

DMKCPU.ASSEMBLE.txt
  1. CPU TITLE 'DMKCPU (CP) VM/370 - RELEASE 6' 00001000
  2. PUNCH ' SPB' 00002000
  3. ISEQ 73,80 00003000
  4. SPACE 2 00004000
  5. COPY OPTIONS 00005000
  6. COPY LOCAL OPTIONS 00006000
  7. DMKCPU CSECT 00007000
  8. EXTRN DMKPTRAN @VA12934 00008000
  9. EXTRN DMKPTRFR @VA12934 00009000
  10. EXTRN DMKCFMBK @V5BC0AB 00011000
  11. EXTRN DMKPTRFT @V5BC0AB 00013000
  12. EXTRN DMKLOKSY @VA12934 00014000
  13. EXTRN DMKLOKFR @VA12934 00015000
  14. EXTRN DMKLOKTR @VA12934 00016000
  15. EXTRN DMKLOKDS @VA12934 00017000
  16. EXTRN DMKLOKRL @VA12934 00018000
  17. EXTRN DMKMCTAF @VA12934 00019000
  18. EXTRN DMKCVTBH @VA12934 00020000
  19. EXTRN DMKSTKOP @V5BC0AB 00024000
  20. EXTRN DMKSTKMP @VMH0033 00025000
  21. EXTRN DMKFRET @V5BC0AB 00027000
  22. EXTRN DMKFREE @V5BC0AB 00028000
  23. EXTRN DMKCLKCK @V5BC0AB 00029000
  24. EXTRN DMKAPIPR @V5BC0AB 00030000
  25. EXTRN DMKCPPUP @VA12934 00030500
  26. EXTRN DMKSYSAP @V5BC0AB 00031000
  27. EXTRN DMKFREAP @V5BC0AB 00035000
  28. EXTRN DMKVMAS1 @V5BC0AB 00036000
  29. EXTRN DMKSCNVS @V5BC0AB 00037000
  30. EXTRN DMKPTRUL @V5BC0AB 00039000
  31. EXTRN DMKDSPRQ @VA09324 00040100
  32. EXTRN DMKSTKCP @VA09324 00040200
  33. EXTRN DMKEXTST @VA10010 00040300
  34. EXTRN DMKMCTPF @VA12934 00040500
  35. EXTRN DMKMCTFL @VA12934 00040700
  36. EJECT 00041000
  37. *. 00042000
  38. * MODULE NAME - 00043000
  39. * 00044000
  40. * DMKCPU 00045000
  41. * 00046000
  42. * FUNCTION - 00047000
  43. * 00048000
  44. * TO VARY AN ATTACHED PROCESSOR ONLINE. 00049000
  45. * 00051000
  46. * ATTRIBUTES - 00052000
  47. * 00053000
  48. * REENTRANT, PAGEABLE, CALLED VIA SVC 00054000
  49. * 00055000
  50. * ENTRY POINTS - 00056000
  51. * 00057000
  52. * DMKCPUVY - TO PROCESS A VARY ONLINE/OFFLINE PROCESSOR COMMAND. 00058000
  53. * 00060000
  54. * ENTRY CONDITIONS - 00061000
  55. * 00062000
  56. * FOR DMKCPUVY - 00063000
  57. * GPR1 = PROCESSOR ADDRESS, IF OFFLINE REQUEST, THE FIRST BYTE 00064000
  58. * HAS A X'FF' 00065000
  59. * GPR11 = ADDRESS OF VMBLOK OF VIRTUAL MEMORY'S OWNER 00066000
  60. * GPR12 = ADDRESS OF ENTRY POINT 00067000
  61. * GPR13 = ADDRESS OF SAVEAREA 00068000
  62. * 00069000
  63. * EXIT CONDITIONS - 00076000
  64. * 00077000
  65. * 00078000
  66. * NORMAL - 00079000
  67. * WHEN PROCESSING AN ONLINE OR OFFLINE, GPR1 WILL CONTAIN 00080000
  68. * ZEROES. 00081000
  69. * 00082000
  70. * ERROR - 00083000
  71. * WHEN PROCESSING AN ONLINE OR OFFLINE, GPR1 WILL CONTAIN 00084000
  72. * THE ERROR MESSAGE NUMBER. 00085000
  73. * 00086000
  74. * CALLS TO OTHER ROUTINES - 00087000
  75. * 00088000
  76. * DMKCPPUP - TO FREE RESOURCES USED IN AP OPERATION 00089000
  77. * DMKCVTBH - TO CONVERT BINARY TO PRINTABLE FORM 00090000
  78. * DMKPTRFT - TO RETURN PAGES TO THE FREE PAGE LIST 00091000
  79. * DMKVMASW - TO SWITCH SHARED SEGMENT POINTERS 00092000
  80. * DMKMCTAF - TO HANDLE USERS WITH PROCESSOR AFFINITY 00092500
  81. * DMKPGTSP - TO RELEASE A DASD PAGE ASSIGNED TO SYSTEM 00093000
  82. * DMKFREE - TO GET STORAGE FOR NON-SHARED PAGE AND SWAP TABLES 00094000
  83. * DMKPTRAN - TO BRING IN AND LOCK A PAGE 00095000
  84. * DMKPTRFR - TO GET A PAGE OF STORAGE 00095500
  85. * DMKFRET - TO RELEASE STORAGE 00096000
  86. * DMKCFMBK - TO PUT A VIRTUAL MACHINE IN CONSOLE FUNCTION MODE 00097000
  87. * DMKPTRPW - TO WAIT UNTIL I/O IS COMPLETE FOR A VIRTUAL MACHINE 00098000
  88. * DMKSTKOP - TO STACK A REQUEST FOR THE OTHER PROCESSOR 00099000
  89. * DMKSTKMP - TO STACK A REQUEST FOR THE CURRENT PROCESSOR 00100000
  90. * DMKCLKCK - TO SYNCHRONIZE THE CLOCKS 00101000
  91. * DMKAPIPR - TO INITIALIZE THE APU'S PSA AND SET UP THE AP 00102000
  92. * ENVIRONMENT 00103000
  93. * DMKSCNVS - TO GET A DEVICE BLOCK 00104000
  94. * DMKDSPCH - TO RETURN TO DISPATCHER 00105000
  95. * 00106000
  96. * EXTERNAL REFERENCES - 00107000
  97. * 00108000
  98. * DMKPTRRC - NUMBER OF RESIDENT, RESERVED PAGES 00110000
  99. * DMKVMAS1 - ANCHOR FOR SHARED SYSTEMS (SHRTABLE POINTER) 00111000
  100. * DMKPTRSC - NUMBER OF RESIDENT SHARED PAGES 00112000
  101. * DMKSYSOW - ADDRESS OF THE DEVICE OWNED LIST 00113000
  102. * DMKSCHTQ - POINTER TO TOD CLOCK COMPARATOR REQUEST QUEUE 00114000
  103. * DMKSNTBL - POINTER TO THE SYSTEM NAME TABLE 00115000
  104. * DMKFREAP - POINTER TO BACK POCKET FOR DMKFRE IN AP MODE 00116000
  105. * DMKDMPMA - THE MAIN PROCESSOR'S ADDRESS 00117000
  106. * DMKDMPAA - THE ATTACHED PROCESSOR'S ADDRESS 00118000
  107. * DMKDMPSA - POINTER TO THE PSA ADDRESSES 00119000
  108. * DMKSCHCA - SCHEDULER ATTACHED PROCESSOR WAIT VALUES 00120000
  109. * DMKCQRWS - ATTACHED PROCESSOR PAGE WAIT SAVE VALUE 00121000
  110. * DMKPAGWS - ATTACHED PROCESSOR PAGE WAIT SAVE VALUE 00122000
  111. * DMKMCTFL - DMKMCT FLAG FIELD TO TEST FOR DMKMCTFS ENTRY 00122100
  112. * DMKMCTPF - ADDRESS OF PSA PAGE OF OFFLINE PROCESSOR 00122200
  113. * DMKLOKSY - ADDRESS OF GLOBAL SYSTEM LOCK 00122300
  114. * DMKLOKDS - ADDRESS OF DSP QUEUES LOCK 00122400
  115. * DMKLOKTR - ADDRESS OF TRQ LOCK 00122500
  116. * DMKLOKRL - ADDRESS OF RUN LIST LOCK 00122600
  117. * DMKLOKFR - ADDRESS OF FREE STORAGE LOCK 00122700
  118. * 00123000
  119. * 00124000
  120. * TABLES / WORKAREAS - 00125000
  121. * 00126000
  122. * CORTABLE, SWPTABLE, PAGTABLE, SEGTABLE, SHRTABLE 00127000
  123. * 00128000
  124. * REGISTER USAGE - 00129000
  125. * 00130000
  126. * GPR0-10 = SCRATCH 00131000
  127. * GPR11 = VMBLOK BASE 00132000
  128. * GPR12 = DMKCPU BASE 00133000
  129. * GPR13 = SAVEAREA BASE 00134000
  130. * GPR14 = EXTERNAL LINKAGE 00135000
  131. * GPR15 = EXTERNAL LINKAGE 00136000
  132. * 00137000
  133. * NOTES - 00138000
  134. * NONE 00139000
  135. * 00140000
  136. * MESSAGES - 00141000
  137. * 00142000
  138. * NORMAL- 00143000
  139. * DMKCPU193I PROCESSOR YY ONLINE 00144000
  140. * DMKCPU194I PROCESSOR YY OFFLINE 00145000
  141. * 00146000
  142. * ERROR - 00147000
  143. * DMKCPU021E RADDR MISSING OR INVALID 00148000
  144. * DMKCPU191E PROCESSOR YY DOES NOT EXIST 00149000
  145. * DMKCPU192E VARY PROCESSOR COMMAND FAILED 00150000
  146. * 00150200
  147. * WAIT STATES - 00150400
  148. * NONE 00150600
  149. * 00150800
  150. * 00151000
  151. * ABENDS - 00152000
  152. * NONE 00153000
  153. * 00155000
  154. * 00156000
  155. * 00157000
  156. * 00158000
  157. * A. OPERATION OF DMKCPUVY - 00159000
  158. * 00160000
  159. * 1. VERIFY THAT THE VARY PROCESSOR COMMAND WAS ISSUED LEGALLY 00161000
  160. * THE SET POFFLINE TO ONE. 00162000
  161. * 2. IF THE REQUEST IS AN OFFLINE, BRANCH TO DMKCPUOF (STEP 11). 00163000
  162. * 3. IF THE REQUEST IS AN ONLINE, ATTEMPT TO SIGP IPR THE GIVEN 00164000
  163. * PROCESSOR ADDRESS. IF UNSUCCESSFUL, ISSUE ERROR MESSAGE 00165000
  164. * AND RETURN TO CALLER. 00166000
  165. * 4. OBTAIN FROM FREE STORAGE THOSE CONTROL BLOCKS NECESSARY 00167000
  166. * FOR AN AP SYSTEM TO RUN. NAMELY, DEFERRED EXECUTION BLOCKS 00168000
  167. * (ONE PER VMBLOK), A BACK POCKET FOR DMKFRE, A CPEXBLOK FOR 00169000
  168. * THE SWITCH MACRO, AND A PAGE FOR EACH PSA. 00170000
  169. * 5. ADJUST THE SUPERVISOR STATE TIME FIELDS (VMCPTIME AND 00171000
  170. * VMAPTIME) TO THE AP MODE VALUES. 00172000
  171. * 6. THE PSA'S ARE INITIALIZED FOR THE AP ENVIRONMENT VIA 00173000
  172. * A CALL TO DMKAPIPR. 00174000
  173. * 7. DMKCLKCK IS CALLED TO SYNCHRONIZE THE CLOCKS. 00175000
  174. * 8. A SIGNAL WAKEUP IS ISSUED TO THE GIVEN PROCESSOR. 00176000
  175. * 9. THE ONLINE MESSAGE IS ISSUED. 00177000
  176. * 10. RETURN IS MADE TO DMKCPS. 00178000
  177. * 00179000
  178. * 11. AT DMKCPUOF, THE PROCESSOR PENDING OFFLINE IS QUIESCED AND 00180000
  179. * THEN STOPPED BY USING SIGP INSTRUCTIONS. 00181000
  180. * 12. A BRANCH IS THEN MADE TO ENTRY POINT DMKCPPUP TO REVERT 00182000
  181. * TO UNIPROCESSOR MODE. DMKCPPUP RETURNS TO ITS CALLER. 00183000
  182. * 13. (SEE THE PROLOGUE FOR DMKCPPUP). 00184000
  183. * 14. FOR VARY OFFLINE, UPON RETURN FROM DMKCPPUP, 00185000
  184. * THE OFFLINE MESSAGE IS ISSUED TO ALL VIRTUAL MACHINES; 00186000
  185. * THOSE VIRTUAL MACHINES WITH AFF. SET TO THE PROCESSOR 00187000
  186. * GOING OFFLINE ARE NOTIFIED THAT THE AFFINITY IS SET OFF 00188000
  187. * AND ARE PUT IN CONSOLE FUNCTION MODE. VMTTIME IS 00189000
  188. * SYNCHRONIZED FOR EACH VMBLOK. THE CPU TIMER IS RESET. 00190000
  189. * THE VMBLOK LOCK AND THE SYSTEM LOCK ARE ZEROED AND 00191000
  190. * POFFLINE IS SET OFF. 00192000
  191. * 15. RETURN IS MADE TO DMKCPS. 00193000
  192. * 00194000
  193. EJECT 00195000
  194. MODID DC CL8'DMKCPU ' MODULE NAME @V5BC0AB 00196000
  195. SPACE 2 00197000
  196. USING PSA,R0 @V5BC0AB 00198000
  197. SPACE 00199000
  198. USING VMBLOK,R11 @V5BC0AB 00200000
  199. SPACE 00201000
  200. USING SAVEAREA,R13 @V5BC0AB 00202000
  201. SPACE 00203000
  202. DMKCPUVY RELOC 00204000
  203. L R15,PREFIXA SET UP TO ACCESS ABSOLUTE ZERO @VA12934 00204020
  204. CLI CPAPRINP-PSA(R15),X'FF' IS AUTOMATIC PROCESSOR @VA12934 00204040
  205. * RECOVERY IN PROCESS? 00204060
  206. BE APRINPR YES, DON'T LET VARY BEGIN @VA12934 00204080
  207. TM APSTAT4,POFFLINE IS VARY CURRENTLY IN PROCESS? @VMV0008 00204100
  208. BO VARYINPR YES, GO ISSUE ERROR MESSAGE @VMV0008 00204200
  209. OI APSTAT4,POFFLINE INDICATE VARY IS IN PROCESS @VMV0008 00204300
  210. L R15,PREFIXB GET ADDRESS OF OTHER PSA @VMV0008 00204400
  211. OI APSTAT4-PSA(R15),POFFLINE SET VARY IN PROCESS @VMV0008 00204500
  212. TM APSTAT1,MPFEAT IS THE MP FEATURE INSTALLED? @V5BC0AB 00205000
  213. BZ ERCPU192 NO, ISSUE ERROR MSG AND EXIT @V5BC0AB 00206000
  214. L R3,=A(DMKSYSAP) GET GENNED PARAMETER @VA10332 00206250
  215. CLI 0(R3),C'N' IS AP GENERATED @VA10332 00206500
  216. BE ERCPU192 NO..EASE ON DOWN, EASE ON DOWN @VA10332 00206750
  217. LA R1,0(R1) CLEAR FIRST BYTE OF REGISTER ONE @V5BC0AB 00207000
  218. CALL DMKCVTBH CONVERT PROC ADDRESS TO PRINTABLE FORM X00208000
  219. @V5BC0AB 00209000
  220. STH R1,SAVEWRK1+2 SAVE THE PROCESSOR ADDRESS @V5BC0AB 00210000
  221. L R2,HEX3F GET HIGHEST PROCESSOR ADDRESS @V5BC0AB 00211000
  222. L R1,SAVER1 GET INPUT REGISTER @V5BC0AB 00212000
  223. N R1,F255 LEAVE ONLY PROCESSOR ADDRESS @V5BC0AB 00213000
  224. CR R1,R2 IS THE CPU ADDRESS VALID? @V5BC0AB 00214000
  225. BH ERCPU21E NO, ISSUE ERROR MESSAGE @V5BC0AB 00215000
  226. TM APSTAT1,APUOPER IS SYSTEM IN AP MODE? @V5BC0AB 00216000
  227. BO CHKOFF YES, IT MUST BE AN OFFLINE REQUEST X00217000
  228. @V5BC0AB 00218000
  229. CLC SAVER1(1),ZEROES IS REQUEST FOR ONLINE? @V5BC0AB 00219000
  230. BNE ERCPU192 NO, OFFLINE. ISSUE ERROR MESSAGE X00220000
  231. @V5BC0AB 00221000
  232. B DMKCPUON YES, GO TO ONLINE ROUTINE @V5BC0AB 00222000
  233. CHKOFF DS 0H @V5BC0AB 00223000
  234. CLI SAVER1,FF IS REQUEST FOR OFFLINE? @V5BC0AB 00224000
  235. BNE ONTST NO, ONLINE. COMPARE TO ONLINE PROC'S X00225000
  236. @V5BC0AB 00226000
  237. CH R1,IPUADDR IS PROCESSOR ONLINE? @V5BC0AB 00227000
  238. BNE CHKADDRX NOT THIS ONE, CHECK OTHER @V5BC0AB 00228000
  239. TM APSTAT1,PROCIO IS THIS ONE THE MAIN? @V5BC0AB 00229000
  240. BNO DMKCPUOF NO, CONTINUE OFFLINE PROCESS @V5BC0AB 00230000
  241. TM APSTAT1,CSSFEAT CSS AVAILABLE? @V60B7AB 00230500
  242. BO DMKCPUOF YES, CONTINUE OFFLINE PROCESS @V60B7AB 00231000
  243. B ERCPU192 NO, ISSUE ERROR MESSAGE @V50BCAC 00231500
  244. CHKADDRX CH R1,IPUADDRX IS THE CPU THE OTHER PROCESSOR? @V5BC0AB 00232000
  245. BNE ERCPU21E NO, ADDRESS IS INVALID @V5BC0AB 00233000
  246. TM APSTAT1,PROCIO+CSSFEAT TEST IF THIS IS THE I/O @V60B7AB 00234000
  247. * PROCESSOR AND IF CSS IS AVAILABLE. IF BOTH ARE 00235000
  248. * ZERO, IT MEANS THAT THE MAIN PROCESSOR IS TO BE VARIED 00236000
  249. * OFFLINE, BUT CHANNEL SET SWITCHING IS NOT AVAILABLE. 00237000
  250. BZ ERCPU192 ISSUE ERROR MESSAGE @V60B7AB 00238000
  251. B DMKCPUOF CONTINUE THE OFFLINE PROCESS @V60B7AB 00239000
  252. ONTST DS 0H @V5BC0AB 00240000
  253. CH R1,IPUADDR IS THE PROCESSOR ONLINE? @V5BC0AB 00241000
  254. BE ONCPU193 YES, GO ISSUE ONLINE MESSAGE @V5BC0AB 00242000
  255. CH R1,IPUADDRX IS THIS THE PROCESSOR? @V5BC0AB 00243000
  256. BE ONCPU193 YES, GO ISSUE ONLINE MESSAGE @V5BC0AB 00244000
  257. ERCPU192 DS 0H @V5BC0AB 00245000
  258. LA R15,192 GET MESSAGE NUMBER @V5BC0AB 00246000
  259. ST R15,SAVER1 AND SAVE IT IN HIS REGISTER 1 @V5BC0AB 00247000
  260. LA R0,CPU192LN @V5BC0AB 00248000
  261. LA R1,CPU192MG @V5BC0AB 00249000
  262. B ISSUEMSG @V5BC0AB 00250000
  263. * 00251000
  264. ERCPU21E DS 0H @V5BC0AB 00252000
  265. MVC CPUID021(2),SAVEWRK1+2 PROCESSOR ADDR TO MSG. @VA09324 00252010
  266. LA R15,21 GET ERROR MESSAGE FOR DMKCPS @V5BC0AB 00253000
  267. ST R15,SAVER1 AND SAVE IT IN HIS REGISTER 1 @V5BC0AB 00254000
  268. LA R0,CPU21ELN @V5BC0AB 00255000
  269. LA R1,CPU21EMG @V5BC0AB 00256000
  270. B ISSUEMSG @V5BC0AB 00257000
  271. * 00258000
  272. CPU191ER DS 0H @V5BC0AB 00259000
  273. LCTL C0,C0,CPCREG0 LOAD ORIGINAL CONTROL REG 0 @V5BC0AB 00260000
  274. ERCPU191 DS 0H @V5BC0AB 00261000
  275. LA R15,191 GET ERROR MESSAGE FOR DMKCPS @V5BC0AB 00262000
  276. ST R15,SAVER1 AND SAVE IT IN HIS REGISTER 1 @V5BC0AB 00263000
  277. MVC CPUID191(2),SAVEWRK1+2 GET CPU ADDRESS @V5BC0AB 00264000
  278. LA R0,CPU191LN @V5BC0AB 00265000
  279. LA R1,CPU191MG @V5BC0AB 00266000
  280. B ISSUEMSG @V5BC0AB 00267000
  281. * 00268000
  282. APRINPR DS 0H @VA12934 00268100
  283. VARYINPR DS 0H @VA12934 00268150
  284. LA R15,192 LOAD MESSAGE NUMBER @VMV0008 00268200
  285. ST R15,SAVER1 STORE IN CALLER'S REGISTER 1 @VMV0008 00268300
  286. LA R0,CPU192LN GET MESSAGE LENGTH @VMV0008 00268400
  287. LA R1,CPU192MG GET ADDRESS OF MESSAGE @VMV0008 00268500
  288. CALL DMKQCNWT,PARM=NORET HAVE MESSAGE PRINTED @VMV0008 00268600
  289. EXIT RETURN TO CALLER @VMV0008 00268700
  290. * 00269000
  291. * 00270000
  292. * 00271000
  293. * 00272000
  294. DMKCPUON DS 0H @V5BC0AB 00273000
  295. SPACE 00274000
  296. * DETERMINE IF THE GIVEN PROCESSOR IS ALREADY ONLINE 00275000
  297. CH R1,IPUADDR @V5BC0AB 00276000
  298. BE ONCPU193 ISSUE ONLINE MESSAGE @V5BC0AB 00277000
  299. LR R2,R1 PUT PROCESSOR ADDRESS IN R2 @V5BC0AB 00278000
  300. SR R1,R1 CLEAR SIGP STATUS REGISTER @V5BC0AB 00279000
  301. LA R14,1000 IPR BUSY LOOP COUNTER @V5BC0AB 00280000
  302. * 00281000
  303. SIPRLOOP DS 0H @V5BC0AB 00282000
  304. SIGP R1,R2,SIGIPR @V5BC0AB 00283000
  305. BC 8,ADDROK CC0 IPR STARTED SUCCESSFULLY @V5BC0AB 00284000
  306. BC 5,ERCPU191 CC3-NOT OPER. AND CC1-STATUS STORED X00285000
  307. @V5BC0AB 00286000
  308. BCT R14,SIPRLOOP CC2-BUSY @V5BC0AB 00287000
  309. B ERCPU191 ISSUE ERROR MESSAGE, CC2, BUSY 1000 X00288000
  310. TIMES 00289000
  311. ADDROK DS 0H @V5BC0AB 00290000
  312. LA R14,10 WINDOW CONTROL COUNTER @V5BC0AB 00291000
  313. * * 00292000
  314. * * 00293000
  315. STCTL C0,C0,SAVEWRK9 SAVE CONTROL REG 0 IN WORKAREA @V5BC0AB 00294000
  316. NC SAVEWRK9+2(2),EXTNBITS LEAVE ONLY MFA BIT ON @V5BC0AB 00295000
  317. OI SAVEWRK9+2,MFAMASK INSURE MFA BIT IS ON @V5BC0AB 00296000
  318. ADDROK1 DS 0H @V5BC0AB 00297000
  319. LCTL C0,C0,SAVEWRK9 LOAD C0 WITH ONLY MFA BIT ON @V5BC0AB 00298000
  320. LA R5,100 SENSE BUSY LOOP CONTROL COUNTER @V5BC0AB 00299000
  321. SENSLOOP DS 0H @V5BC0AB 00300000
  322. SIGP R1,R2,SIGSENSE SIGP SENSE FOR COMPLETION OF SIGP IPR X00301000
  323. @V5BC0AB 00302000
  324. BC 8,DOONLINE CC0 IPR COMPLETE @V5BC0AB 00303000
  325. BC 4,CKSTATUS CC1 STATUS STORED, GO CHECK IT @V5BC0AB 00304000
  326. BC 1,CPU191ER CC3 NOT OPERATIONAL @V5BC0AB 00305000
  327. BCT R5,SENSLOOP LOOP ON BUSY FOR 100 TIMES(CC2) @V5BC0AB 00306000
  328. * 00307000
  329. STOSM SAVEWRK2,EXTMASK ENABLE FOR EXTERNAL INTERRUPTS @V5BC0AB 00308000
  330. STNSM SAVEWRK2,FF-EXTMASK DISABLE FOR EXTERNAL INTERRUPTS X00309000
  331. @V5BC0AB 00310000
  332. BCT R14,ADDROK1 ENABLE FOR MFA 10 TIMES (1/100 SENSE) X00311000
  333. @V5BC0AB 00312000
  334. LCTL C0,C0,CPCREG0 LOAD ORIGINAL CONTROL REG 0 @V5BC0AB 00313000
  335. B ERCPU192 ISSUE ERROR MESSAGE @V5BC0AB 00314000
  336. CKSTATUS DS 0H @V5BC0AB 00315000
  337. C R1,STOPPED @V5BC0AB 00316000
  338. BE DOONLINE @V5BC0AB 00317000
  339. LCTL C0,C0,CPCREG0 LOAD ORIGINAL CONTROL REG 0 @V5BC0AB 00318000
  340. B ERCPU192 ISSUE ERROR MESSAGE @V5BC0AB 00319000
  341. SPACE 00320000
  342. * THE FOLLOWING CODE WILL LOCATE THE CONTIGUOUS PAGE AND SWAP * 00321000
  343. * TABLES FOR EACH SHARED SEGMENT AND UPDATE THE PAGTOT FIELD * 00322000
  344. * OF THE OFFLINE PROCESSOR'S SET TO THE VALUE OF THE PAGTOT * 00323000
  345. * FIELD OF THE ONLINE PROCESSOR'S SET. * 00324000
  346. SPACE 00325000
  347. DOONLINE DS 0H @V5BC0AB 00326000
  348. LCTL C0,C0,CPCREG0 LOAD ORIGINAL CONTROL REG 0 @V5BC0AB 00327000
  349. SPACE 00328000
  350. L R4,=A(DMKVMAS1) ADDRESS OF SHRTABLE ANCHOR @V5BC0AB 00331000
  351. L R5,0(,R4) ADDRESS OF FIRST SHRTABLE @V5BC0AB 00332000
  352. SHRTSCAN DS 0H @V5BC0AB 00333000
  353. CR R5,R4 END OF CHAIN? @V5BC0AB 00334000
  354. BE GETBLOCK YES, GET AP CONTROL BLOCKS @V5BC0AB 00335000
  355. SPACE 00336000
  356. USING SHRTABLE,R5 @V5BC0AB 00337000
  357. TM SHRFLAG,SHRNOPRT IS NAMED SYSTEM UNPROTECTED? @VMI0032 00338000
  358. BNO PROTECTD NO, BRANCH @VMI0032 00339000
  359. L R5,SHRFPNT GET ADDRESS OF NEXT SHRTABLE @VMI0032 00340000
  360. LA R5,0(,R5) ERASE SHRFLAG VALUE @VMI0085 00341000
  361. B SHRTSCAN CHECK ALL OF THE SHARE TABLES @VMI0032 00342000
  362. PROTECTD DS 0H @VMI0032 00343000
  363. SPACE 00344000
  364. L R3,SHRSEGCT GET NUMBER OF SHARED SEGMENTS @V5BC0AB 00345000
  365. LR R14,R3 GET NUMBER OF SHARED SEGMENTS @V5BC0AB 00346000
  366. LA R8,SHRSEGNM ADDRESS SEGNM FIELD @V5BC0AB 00347000
  367. * 00348000
  368. FSHRPAGE DS 0H @V5BC0AB 00349000
  369. LA R8,4(,R8) GET NEXT POSSIBLE SHRPAGE POINTER X00350000
  370. @V5BC0AB 00351000
  371. S R14,F4 SUBTRACT FOUR FROM SHRSEGNM @V5BC0AB 00352000
  372. * (THERE MAY BE 4 ENTRIES PER WORD) 00353000
  373. BP FSHRPAGE LOOP UNTIL AT END OF THE VARIABLE X00354000
  374. @V5BC0AB 00355000
  375. * SHRSEGNM AREA 00356000
  376. SPACE 00357000
  377. USING SHRPAGE,R8 R8 ADDRESS THE BEGINNING OF THE @V5BC0AB 00358000
  378. * SHRPAGE FIELDS 00359000
  379. * 00360000
  380. PAGELOOP DS 0H @V5BC0AB 00361000
  381. L R7,SHRPAGE LOAD A PAGE TABLE ADDRESS FROM THE X00362000
  382. @V5BC0AB 00363000
  383. * SHRTABLE 00364000
  384. N R7,=A(X'FFFFFE') LEAVE PTO ADDRESS ONLY @V5BC0AB 00365000
  385. SL R7,F16 BACK UP TO THE HEADER @V5BC0AB 00366000
  386. TM APSTAT1,PROCIPL RUNNING ON THE MAIN (IPL) PROC? @V60B7AA 00366300
  387. BO UPDT2ND YES-UPDATE SECOND SET OF TABLES @V60B7AA 00366600
  388. LH R2,PAGBMP+PAGTOT-PAGTABLE(R7) GET TOTAL SEGMENT @V60B7AA 00366900
  389. * USE COUNT FROM ONLINE PROC'S PGTABLE 00367200
  390. STH R2,PAGTOT-PAGTABLE(R7) UPDATE THE COUNT IN THE @V60B7AA 00367500
  391. * IPL PROC'S PAGETABLE 00367800
  392. B NXTSHRPG GET NEXT SHRPAGE ENTRY @V60B7AA 00368100
  393. UPDT2ND LH R2,PAGTOT-PAGTABLE(R7) GET TOTAL SEGT USE COUNT @V60B7AA 00368400
  394. STH R2,PAGBMP+PAGTOT-PAGTABLE(R7) UPDATE THE SECOND @V5BC0AB 00369000
  395. * PAGE TABLE SEGMENT USE COUNT 00370000
  396. NXTSHRPG DS 0H @V60B7AA 00370500
  397. LA R8,4(,R8) ADDRESS OF NEXT SHRPAGE ENTRY @VA09441 00371100
  398. BCT R3,PAGELOOP DO NEXT SHRPAGE ENTRY, IF THERE IS ONE X00373000
  399. @V5BC0AB 00374000
  400. L R5,SHRFPNT GET ADDRESS OF NEXT SHRTABLE @V5BC0AB 00375000
  401. B SHRTSCAN DO ALL OF THE SHARE TABLES @V5BC0AB 00376000
  402. DROP R5 @V5BC0AB 00377000
  403. SPACE 00378000
  404. DROP R8 @V5BC0AB 00379000
  405. SPACE 00380000
  406. * END OF SHARED SEGMENT PAGTOT UPDATING * 00381000
  407. SPACE 00382000
  408. SPACE 00383000
  409. GETBLOCK DS 0H @V5BC0AB 00384000
  410. SPACE 00385000
  411. * OBTAIN THE PREFIX STORAGE AREAS 00386000
  412. SR R2,R2 SET UP TO CALL DMKPTRFR FOR A PAGE X00387000
  413. @V5BC0AB 00388000
  414. * OF STORAGE 00389000
  415. CALL DMKPTRFR OBTAIN STORAGE @V5BC0AB 00390000
  416. LA R8,SAVEWRK8 ADDRESS TO STORE PSA ADDRESSES @VA09386 00391100
  417. * FOR DUMP ROUTINE 00393000
  418. SPACE 00394000
  419. USING CORTABLE,R7 R7 HAS CORTABLE ENTRY ADDRESS OF PAGE X00395000
  420. @V5BC0AB 00396000
  421. SPACE 00397000
  422. MVC CORFPNT,ASYSVM INDICATE OWNER IS SYSTEM @V5BC0AB 00398000
  423. MVI CORFLAG,CORCP INDICATE THIS IS A CP FRAME @V5BC0AB 00399000
  424. SL R7,ACORETBL FORM THE @V5BC0AB 00400000
  425. SLL R7,8 PAGE ADDRESS @V5BC0AB 00401000
  426. ST R7,0(,R8) SAVE PSA ADDRESS FOR THE MAIN PROCESSOR X00402000
  427. @V5BC0AB 00403000
  428. L R15,=A(DMKMCTPF) ADDRESS OF PSA PAGE ADDRESS @VA12934 00404000
  429. L R7,0(R15) ADDRESS OF PSA PAGE OF A PREVIOUS@VA12934 00404080
  430. * FAILING PROCESSOR 00404160
  431. LTR R7,R7 IS THERE A PSA PAGE ALREADY FOR @VA12934 00404240
  432. * THE OTHER PROCESSOR? 00404320
  433. BZ OBTPSA NO -- OBTAIN A NEW PAGE FOR PSA @VA12934 00404400
  434. ST R7,4(,R8) YES -- A PSA PAGE EXISTS FROM THE@VA12934 00404480
  435. * LAST TIME THE PROCESSOR WAS ONLINE. 00404560
  436. * REUSE THE SAME PAGE FOR THE PSA. 00404640
  437. XC 0(4,R15),0(R15) ZERO THE PSA PAGE ADDRESS @VA12934 00404720
  438. B GETCPEX @VA12934 00404800
  439. OBTPSA SR R2,R2 @VA12934 00404880
  440. CALL DMKPTRFR OBTAIN STORAGE @V5BC0AB 00405000
  441. MVC CORFPNT,ASYSVM INDICATE SYSTEM IS OWNER @V5BC0AB 00406000
  442. MVI CORFLAG,CORCP INDICATE THIS IS A CP FRAME @V5BC0AB 00407000
  443. SL R7,ACORETBL FORM THE @V5BC0AB 00408000
  444. SLL R7,8 PAGE ADDRESS @V5BC0AB 00409000
  445. ST R7,4(,R8) SAVE PSA ADDRESS FOR THE AP @V5BC0AB 00410000
  446. SPACE 00411000
  447. DROP R7 @V5BC0AB 00412000
  448. SPACE 00413000
  449. * GET CPEXBLOK FOR THE SWITCH MACRO 00414000
  450. GETCPEX LA R0,CPEXSIZE GET LENGTH IN DOUBLE WORDS @VA12934 00415000
  451. CALL DMKFREE OBTAIN STORAGE @V5BC0AB 00416000
  452. ST R1,PSACPXBP SAVE ADDRESS IN ABSOLUTE 0 PSA @V5BC0AB 00417000
  453. * GET STORAGE FOR DMKFREE USE DURING EXTEND PROCESSING WHEN THE 00418000
  454. * THE SYSTEM LOCK IS NOT AVAILABLE 00419000
  455. L R10,CPUFREAP GET ADDRESS OF BACK POCKET POINTER X00420000
  456. @V5BC0AB 00421000
  457. SR R0,R0 CLEAR INPUT REGISTER @V5BC0AB 00422000
  458. IC R0,0(R10) GET NUMBER OF DOUBLE WORDS @V5BC0AB 00423000
  459. CALL DMKFREE OBTAIN STORAGE @V5BC0AB 00424000
  460. STCM R1,B'0111',1(R10) SAVE ADDRESS OF DMKFREE BACK POCKET X00425000
  461. @V5BC0AB 00426000
  462. LA R0,CPEXSIZE MUST GET CPEXBLOK TOO @VA12596 00426100
  463. CALL DMKFREE @VA12596 00426300
  464. ST R1,4(,R10) PUT CPEX POINTER IN DMKFREAP @VA13499 00426600
  465. * 00427000
  466. * 00428000
  467. SPACE 00429000
  468. SR R15,R15 CLEAR R15 @V5BC0AB 00430000
  469. ICM R15,B'0011',SAVER1+2 GET THE PROCESSOR ADDRESS @V5BC0AB 00431000
  470. STH R15,IPUADDRX SAVE IT IN ABSOLUTE 0 PSA @V5BC0AB 00432000
  471. STH R15,LPUADDRX @V5BC0AB 00433000
  472. OI LPUADDRX+1,LOGICADR MAKE IT A LOGICAL ADDRESS @V5BC0AB 00434000
  473. SLR R1,R1 CLEAR REGISTER 1 @VA12934 00434100
  474. L R15,=A(DMKLOKDS) ADDRESS OF DSP QUEUES LOCK @VA12934 00434200
  475. ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00434300
  476. L R15,=A(DMKLOKTR) ADDRESS OF TRQ LOCK @VA12934 00434400
  477. ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00434500
  478. L R15,=A(DMKLOKRL) ADDRESS OF RUN LIST LOCK @VA12934 00434600
  479. ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00434700
  480. L R15,=A(DMKLOKFR) ADDRESS OF FREE STORAGE LOCK @VA12934 00434800
  481. ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00434900
  482. L R15,=A(DMKLOKSY) ADDRESS OF GLOBAL SYSTEM LOCK @VA12934 00435000
  483. ST R1,0(,R15) ENSURE THE LOCKWORD IS CLEAR @VA12934 00435100
  484. * PAGE IN AND LOCK DMKCLKCK BEFORE APUOPER GETS TURNED ON 00435200
  485. L R1,=A(DMKCLKCK) ADDRESS OF DMKCLKCK ROUTINE @VA12934 00435300
  486. TRANS 2,1,OPT=(BRING+DEFER+SYSTEM+LOCK) @VA12934 00435400
  487. ST R2,SAVECLK SAVE REAL ADDRESS OF DMKCLK @VA12934 00435500
  488. LA R1,SAVEWRK8 POINTER TO PSA ADDRESSES @VA09386 00437100
  489. CALL DMKAPIPR SET UP FOR THE ATTACHED PROCESS. @V5BC0AB 00438000
  490. L R15,PREFIXB ADDRESS ATTACHED PROC'S PSA @VMH0001 00439000
  491. LM R0,R1,WAITSAV8 LOAD INITIAL PAGE WAIT TIME @VMH0012 00440000
  492. STM R0,R1,PGWAITIM-PSA(R15) SET ATTACHED PG WT TIME @VMH0012 00441000
  493. SLR R0,R0 ZERO REGISTER ZERO @VMH0012 00442000
  494. ST R0,PWTPAGES-PSA(R15) SET PAGE WAIT COUNT TO 0 @VMH0012 00443000
  495. LA R1,1 GET INCREMENT OF 1 @VA11576 00443005
  496. AL R1,SHRLKCNT-PSA(R15) ADD 1 TO CPSHRLK COUNT @VA11576 00443010
  497. ST R1,SHRLKCNT-PSA(R15) STORE UPDATED COUNT @VA11576 00443015
  498. OI CPSTAT2-PSA(R15),CPSHRLK FREEZE THE SYSTEM @VA11576 00443020
  499. SPACE 00444000
  500. CALL DMKCLKCK SYNCHRONIZE THE CLOCKS @V5BC0AB 00445000
  501. L R2,SAVECLK RETRIEVE REAL ADDRESS OF DMKCLK @VA12934 00445030
  502. CALL DMKPTRUL UNLOCK DMKCLK PAGE @VA12934 00445060
  503. L R15,PREFIXB GET AP PSA @VA11576 00445100
  504. L R1,SHRLKCNT-PSA(,R15) GET CURRENT SHRLK COUNT @VA11576 00445200
  505. BCTR R1,0 DECREMENT COUNT BY 0NE @VA11576 00445300
  506. ST R1,SHRLKCNT-PSA(,R15) STORE UPDATED COUNT @VA11576 00445400
  507. LTR R1,R1 TEST IF COUNT NOW 0 @VA11576 00445500
  508. BNZ WAKEAP NO,SKIP RESET OF CPSHRLK @VA11576 00445600
  509. NI CPSTAT2-PSA(R15),X'FF'-CPSHRLK RESET CPSHRLK @VA11576 00445700
  510. WAKEAP DS 0H @VA11576 00445800
  511. SPACE 00446000
  512. SIGNAL WAKEUP WAKE UP THE ATTACHED PROCESSOR @V5BC0AB 00447000
  513. SPACE 00448000
  514. L R1,ASYSVM GET SYSTEM VMBLOK ADDRESS @VMH0038 00449000
  515. L R1,VMPNT-VMBLOK(,R1) 1ST VMBLOK ADDR IN CHAIN @VMH0038 00450000
  516. LR R10,R1 SAVE ENDING ADDRESS @VMH0038 00451000
  517. MVC SAVER1(4),ZEROES ZERO THE CALLER'S REGISTER ONE @V5BC0AB 00452000
  518. MVC CPUID193(2),SAVEWRK1+2 PROCESSOR ADDRESS @VA09324 00452100
  519. ONLMSGLP DS 0H @V5BC0AB 00453000
  520. * R11 CONTAINS THE LOCKED VMBLOK. THE FIRST TIME THROUGH THIS 00454000
  521. * LOOP, R11 IS THE ONE ON ENTRY TO DMKCPU. 00455000
  522. SWTCHVM UNLOCK THE THE VMBLOK ADDRESSED @VMH0038 00456000
  523. * BY R11 AND LOCK THE ONE TO RECEIVE THE 00457000
  524. * ONLINE MESSAGE (R1) 00458000
  525. LA R0,CPU193LN GET ONLINE MESSAGE LENGTH @VMH0038 00459000
  526. LA R1,CPU193MG GET ONLINE MESSAGE ADDRESS @VMH0038 00460000
  527. CALL DMKQCNWT,PARM=NORET ISSUE MESSAGE @V5BC0AB 00461000
  528. L R1,VMPNT GET ADDRESS OF NEXT VMBLOK @VMH0038 00462000
  529. CR R10,R1 END OF CHAIN? @VMH0038 00463000
  530. BNE ONLMSGLP NO, SEND MESSAGE TO ALL USERS @V5BC0AB 00464000
  531. NI APSTAT4,FF-POFFLINE VARY PROCESS IS NOT ACTIVE @V5BC0AB 00465000
  532. L R15,PREFIXB ADDRESS THE OTHER PROC'S PSA @V5BC0AB 00466000
  533. NI APSTAT4-PSA(R15),FF-POFFLINE SET POFFLINE TO ZERO X00467000
  534. @V5BC0AB 00468000
  535. L R1,SAVER11 GET ORIGINAL VMBLOK ADDRESS @VMH0038 00469000
  536. SWTCHVM LOCK THE COMMAND ISSUER'S VMBLOK @VMH0038 00470000
  537. EXIT 00471000
  538. SPACE 00472000
  539. ONCPU193 DS 0H @V5BC0AB 00473000
  540. MVC CPUID193(2),SAVEWRK1+2 GET PROCESSOR ADDRESS @V5BC0AB 00474000
  541. LA R0,CPU193LN GET ONLINE MSG LENGTH @V5BC0AB 00475000
  542. LA R1,CPU193MG GET ONLINE MSG ADDRESS @V5BC0AB 00476000
  543. MVC SAVER1(4),ZEROES ZERO THE CALLERS REGISTER 1 @V5BC0AB 00477000
  544. SPACE 00478000
  545. ISSUEMSG DS 0H @V5BC0AB 00479000
  546. CALL DMKQCNWT,PARM=NORET ISSUE MESSAGE @V5BC0AB 00480000
  547. NI APSTAT4,FF-POFFLINE SET OFF VARY PROCESS FLAG @VMV0008 00480250
  548. L R15,PREFIXB GET ADDRESS OF OTHER PSA @VMV0008 00480500
  549. NI APSTAT4-PSA(R15),FF-POFFLINE SET OFF VARY FLAG @VMV0008 00480750
  550. EXIT 00481000
  551. EJECT 00482000
  552. DMKCPUOF DS 0H @V5BC0AB 00483000
  553. LH R15,SAVER1+2 GET PROCESSOR ADDRESS IN COMMAND @V60B7AB 00484000
  554. CH R15,IPUADDR SAME AS THIS PROCESSOR? @V60B7AB 00485000
  555. BNE DMKCPUOG NO, BRANCH @VA12934 00486000
  556. LA R0,CPEXSIZE GET SIZE OF A CPEXBLOK @VA12934 00487000
  557. CALL DMKFREE OBTAIN STORAGE @VA12934 00488000
  558. USING CPEXBLOK,R1 @VA12934 00489000
  559. STM R0,R15,CPEXREGS SAVE REGISTERS @VA12934 00490000
  560. LA R15,DMKCPUOG ADDRESS OF RETURN POINT @VA12934 00491000
  561. ST R15,CPEXADD STORE RETURN ADDRESS IN CPEXBLOK @VA12934 00492000
  562. DROP R1 @VA12934 00493000
  563. CALL DMKSTKOP STACK REQUEST FOR OTHER PROCESSOR@VA12934 00494000
  564. GOTO DMKDSPCH GO TO THE DISPATCHER @VA12934 00495000
  565. SPACE 1 00496000
  566. DMKCPUOG DS 0H @VA12934 00497000
  567. * MUST PAGE IN AND LOCK DMKCPP BEFORE STOPPING OTHER PROCESSOR 00498000
  568. L R1,=A(DMKCPPUP) ADDRESS TO LOCK @VA12934 00499000
  569. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK),AFFINITY @VA12934 00500000
  570. ST R2,SAVECPP SAVE ADDRESS OF DMKCPP @VA12934 00501000
  571. SIGQUIES EQU * @VA12934 00502000
  572. SIGNAL QUIESCE @VA12934 00503000
  573. SIGNAL STOP @VA12934 00504000
  574. L R14,CPUEXTST ADDRESS OF FIELD CONTAINING THE @VA12934 00505000
  575. * LOGICAL ADDRESS OF STOPPED PROC. 00506000
  576. LH R15,LPUADDRX LOGICAL ADDRESS OF OTHER PROC. @VA12934 00507000
  577. STH R15,0(,R14) STORE LPUADDRX IN DMKEXTST @VA12934 00508000
  578. SPACE 00509000
  579. CALL DMKCPPUP REVERT TO UNIPROCESSOR MODE @VA12934 00510000
  580. SPACE 00521000
  581. LR R7,R1 SAVE RETURN CODE FROM DMKCPP @VA12934 00521100
  582. L R2,SAVECPP GET ADDRESS OF DMKCPP @VA12934 00521200
  583. CALL DMKPTRUL UNLOCK DMKCPP @VA12934 00521300
  584. LTR R1,R7 WAS DMKCPP SUCCESSFUL? @VA12934 00521400
  585. BNZ ERCPU192 NO, ERROR MESSAGE @VA12934 00521500
  586. CPUEXIT DS 0H @V5BC0AB 00522000
  587. * CHECK AFFINITY SETTINGS 00523000
  588. SLR R7,R7 CLEAR REGSITER 7 @VMH0033 00524000
  589. L R11,ASYSVM START GOING DOWN CHAIN OF VMBLOKS X00525000
  590. @V5BC0AB 00526000
  591. L R11,VMPNT GET FIRST VMBLOK IN CYCLIC CHAIN @V5BC0AB 00527000
  592. LR R10,R11 SAVE ENDING ADDRESS @V5BC0AB 00528000
  593. MVC CPUID194(2),SAVEWRK1+2 GET PROCESSOR ADDRESS @V5BC0AB 00529000
  594. CPUEXIT2 DS 0H @V5BC0AB 00530000
  595. LA R0,CPU194LN GET LENGTH OF OFFLINE MESSAGE @V5BC0AB 00531000
  596. LA R1,CPU194MG GET ADDRESS OF OFFLINE MESSAGE @V5BC0AB 00532000
  597. CALL DMKQCNWT,PARM=NORET ISSUE OFFLINE MESSAGE @VMH0033 00533000
  598. LTR R7,R7 HAS A BLOCK BEEN STACKED FOR DMKMCTAF? @VMH0033 00534000
  599. BNZ CHKALLVM YES, BRANCH @VMH0033 00535000
  600. TM VMAFF,VMAFFON AFFINITY SET? @V5BC0AB 00536000
  601. BZ CHKALLVM NO, BRANCH @V5BC0AB 00537000
  602. SR R1,R1 CLEAR REGISTER 1 @V5BC0AB 00538000
  603. IC R1,VMAFF GET AFFINITY BYTE @V5BC0AB 00539000
  604. N R1,=A(X'3F') LEAVE ONLY PROCESSOR ADDRESS @V5BC0AB 00540000
  605. CH R1,IPUADDR AFFINITY SET TO THIS PROCESSOR? @V5BC0AB 00541000
  606. BE CHKALLVM YES, BRANCH @V5BC0AB 00542000
  607. LA R7,1 INDICATE THAT DMKMCTAF HAS BEEN SCHEDULED @VMH0033 00543000
  608. LA R0,CPEXSIZE GET SIZE OF A CPEXBLOK @VMH0033 00544000
  609. CALL DMKFREE GET STORAGE FOR BLOCK @VMH0033 00545000
  610. SPACE 00546000
  611. USING CPEXBLOK,R1 @VMH0033 00547000
  612. SPACE 00548000
  613. SLR R15,R15 CLEAR REGISTER 15 @VMH0033 00549000
  614. LH R15,SAVEWRK1+2 GET PROCESSOR ADDRESS @VMH0033 00550000
  615. ST R15,CPEXR1 SAVE PROCESSOR ADDRESS IN R1 @VMH0033 00551000
  616. L R15,CPUMCTAF GET ADDRESS OF DMKMCTAF @VMH0033 00552000
  617. ST R11,CPEXR11 SAVE VMBLOK ADDRESS @VMH0037 00553000
  618. ST R15,CPEXR12 SAVE ENTRY ADDRESS @VMH0033 00554000
  619. ST R15,CPEXADD SAVE RETURN ADDRESS IN CPEXBLOK @VMH0033 00555000
  620. SPACE 00556000
  621. DROP R1 00557000
  622. SPACE 00558000
  623. CALL DMKSTKCP GO STACK THE CPEXBLOK @VA09324 00559000
  624. CHKALLVM DS 0H @V5BC0AB 00560000
  625. L R11,VMPNT GET ADDRESS OF NEXT VMBLOK @V5BC0AB 00561000
  626. CLR R11,R10 END OF CHAIN? @V5BC0AB 00562000
  627. BNE CPUEXIT2 NO, LOOP THRU ALL VMBLOKS @V5BC0AB 00563000
  628. MVC SAVER1(4),ZEROES CLEAR THE CALLER'S REGISTER 1 @V5BC0AB 00564000
  629. NI APSTAT4,FF-POFFLINE VARY PROCESS IS NOT ACTIVE @V5BC0AB 00565000
  630. EXIT 00566000
  631. * 00567000
  632. * 00568000
  633. EJECT 00569000
  634. * DECLARES * 01249000
  635. MSG044 EQU 44 @V5BC0AB 01250000
  636. LOGICADR EQU X'40' @V5BC0AB 01256000
  637. DS 0D @V5BC0AB 01257000
  638. FF EQU X'FF' @V5BC0AB 01258000
  639. STOPPED DC X'00000040' PROCESSOR IN STOPPPED STATE @V5BC0AB 01259000
  640. HEX3F DC X'0000003F' @V5BC0AB 01262000
  641. DS 0F @V5BC0AB 01263000
  642. CPUDSPRQ DC A(DMKDSPRQ) DISPATCHER QUEUE ANCHORS @VA09324 01263100
  643. CPUMCTAF DC A(DMKMCTAF) ADDRESS OF DMKMCTAF ROUTINE @VA12934 01263150
  644. CPUEXTST DC A(DMKEXTST) ADDR OF FIELD CONTAINING THE @VA10010 01263200
  645. * LOGICAL 01263300
  646. * ADDR OF STOPPED PROCESSOR 01263400
  647. DS 0D @V60B7AB 01265300
  648. CPWAIT16 DC X'0002000000000016' CONCS OR DISCS FAILED @V60B7AB 01265600
  649. CPUFREAP DC A(DMKFREAP) POINTER TO FREE STORAGE FOR DMKFRE X01268000
  650. @V5BC0AB 01269000
  651. * THE FOLLOWING 8 BYTES MUST REMAIN CONTIGUOUS 01280000
  652. WAITSAV8 DC X'7FFFFFFF' WAITSAVE VALUE FOR THE ATTACHED @VMH0012 01281000
  653. DC X'FFFFF000' PROCESSOR @VMH0012 01282000
  654. EXTNBITS DC X'831F' ALL EXTERNAL BITS EXCEPT MFA @V5BC0AB 01283000
  655. MFAESEXT DC X'0FFF' USED TO DISABLE MALFUNCTION ALERT, @VMH0029 01284000
  656. * EMERGENCY SIGNAL, EXTERNAL SIGNAL AND TOD CLOCK 01285000
  657. * SYNC CHECK INTERRUPTS 01286000
  658. SAVECPP DS F SAVEAREA FOR REAL ADDRESS OF DMKCPP @VA12934 01286300
  659. SAVECLK DS F SAVEAREA FOR REAL ADDRESS OF DMKCLK @VA12934 01286600
  660. *************************************************************** 01287000
  661. * MESSAGES * 01288000
  662. *************************************************************** 01289000
  663. CPU21EMG DC X'151515' @V5BC0AB 01290000
  664. DC C'DMKCPU021E RADDR MISSING OR INVALID ' @VA09324 01291000
  665. CPUID021 DC C' ' @VA09324 01291100
  666. DC X'1515' @V5BC0AB 01292000
  667. CPU21ELN EQU *-CPU21EMG @V5BC0AB 01293000
  668. * 01294000
  669. CPU193MG DC X'151515' @V5BC0AB 01295000
  670. DC C'DMKCPU193I PROCESSOR ' @V5BC0AB 01296000
  671. CPUID193 DC C' ' @V5BC0AB 01297000
  672. DC C' ONLINE' @V5BC0AB 01298000
  673. DC X'1515' @V5BC0AB 01299000
  674. CPU193LN EQU *-CPU193MG @V5BC0AB 01300000
  675. * 01301000
  676. CPU192MG DC X'151515' @V5BC0AB 01302000
  677. DC C'DMKCPU192E VARY PROCESSOR COMMAND FAILED' @V5BC0AB 01303000
  678. DC X'1515' @V5BC0AB 01304000
  679. CPU192LN EQU *-CPU192MG @V5BC0AB 01305000
  680. * 01306000
  681. CPU191MG DC X'151515' @V5BC0AB 01307000
  682. DC C'DMKCPU191E PROCESSOR ' @V5BC0AB 01308000
  683. CPUID191 DC C' ' @V5BC0AB 01309000
  684. DC C' DOES NOT EXIST' @V5BC0AB 01310000
  685. DC X'1515' @V5BC0AB 01311000
  686. CPU191LN EQU *-CPU191MG @V5BC0AB 01312000
  687. * 01313000
  688. CPU194MG DC X'151515' @V5BC0AB 01314000
  689. DC C'DMKCPU194I PROCESSOR ' @V5BC0AB 01315000
  690. CPUID194 DC C' ' @V5BC0AB 01316000
  691. DC C' OFFLINE' @V5BC0AB 01317000
  692. DC X'1515' @V5BC0AB 01318000
  693. CPU194LN EQU *-CPU194MG @V5BC0AB 01319000
  694. * 01320000
  695. LTORG 01321000
  696. EJECT 01322000
  697. COPY SHRTABLE 01323000
  698. COPY SYSTBL 01324000
  699. PSA 01325000
  700. COPY CORE 01326000
  701. COPY DEVTYPES 01327000
  702. COPY RBLOKS 01328000
  703. COPY VBLOKS 01329000
  704. COPY ALLOC 01330000
  705. COPY EQU 01331000
  706. COPY SAVE 01332000
  707. COPY VMBLOK 01333000
  708. COPY TIMER 01334000
  709. COPY MCHAREA 01335000
  710. END 01336000