Table of Contents

DMKSTK Source

References

Source Listing

DMKSTK.ASSEMBLE.txt
  1. STK TITLE 'DMKSTK (CP) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME - 00003000
  4. * 00004000
  5. * DMKSTK 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * 00008000
  9. * TO STACK FOR PROCESSING CPEXBLOKS, IOBLOKS, AND 00009000
  10. * DEFERRED EXECUTION BLOKS 00010000
  11. * 00011000
  12. * ATTRIBUTES - 00012000
  13. * 00013000
  14. * REENTRANT, RESIDENT, CALLED VIA BALR 00014000
  15. * 00015000
  16. * ENTRY POINTS - 00016000
  17. * 00017000
  18. * DMKSTKCP - STACK A CPEXBLOK 00018000
  19. * DMKSTKIO - STACK AN IOBLOK 00019000
  20. * DMKSTKDE - STACK A DEFERRED EXECUTION BLOK 00020000
  21. * DMKSTKMP - STACK A CPEXBLOK FOR CURRENT PROCESSOR ONLY 00021000
  22. * DMKSTKOP - STACK A CPEXBLOK FOR OTHER PROCESSOR ONLY 00022000
  23. * DMKSTKSW - STACK A PRIORITY CPEXBLOK FOR OTHER PROCESSOR 00023000
  24. * DMKSTKLF - STACK A CPEXBLOK LIFO FOR SPECIFIC PROCESSOR 00024000
  25. * 00026000
  26. * ENTRY CONDITIONS - 00027000
  27. * 00028000
  28. * GENERAL - 00029000
  29. * GPR14 = RETURN ADDRESS 00030000
  30. * GPR15 = ADDRESS OF ENTRY POINT 00031000
  31. * 00032000
  32. * FOR DMKSTKCP, DMKSTKMP, DMKSTKOP, DMKSTKSW, DMKSTKLF - 00033000
  33. * GPR1 = ADDRESS OF CPEXBLOK TO BE STACKED 00034000
  34. * 00035000
  35. * FOR DMKSTKDE - 00036000
  36. * GPR1 = ADDRESS OF DEFERRED EXECUTION BLOK TO BE STACKED 00037000
  37. * 00038000
  38. * FOR DMKSTKIO - 00039000
  39. * GPR10 = ADDRESS OF IOBLOK TO BE STACKED 00040000
  40. * 00041000
  41. * FOR DMKSTKLF - 00042000
  42. * THE CPEXBLOK WILL ALREADY CONTAIN THE 00043000
  43. * LOGICAL PROCESSOR ADDRESS 00044000
  44. * 00045000
  45. * EXIT CONDITIONS - 00046000
  46. * 00047000
  47. * NONE 00048000
  48. * 00049000
  49. * CALLS TO OTHER ROUTINES - 00050000
  50. * 00051000
  51. * DMKLOK 00052000
  52. * 00053000
  53. * EXTERNAL REFERENCES - 00054000
  54. * 00055000
  55. * DMKDSPRQ - ANCHOR FOR REQUEST STACKS IN DMKDSPCH 00056000
  56. * SWTHSAVE - PSA SAVEAREA FOR DMKSTK 00057000
  57. * 00058000
  58. * MACROS - 00059000
  59. * 00060000
  60. * LOCK OBTAIN,TYPE=DS,SPIN=YES 00061000
  61. * 00062000
  62. * LOCK RELEASE,TYPE=DS 00063000
  63. * 00064000
  64. * ABEND CODES - 00065000
  65. * STK01 - COUNTER HAS OVERFLOWED 00066000
  66. * 00067000
  67. * TABLES / WORKAREAS - 00068000
  68. * 00069000
  69. * NONE 00070000
  70. * 00071000
  71. * REGISTER USAGE - 00072000
  72. * 00073000
  73. * GPR1 = LOCKWORD ADDRESS 00074000
  74. * GPR2 = ADDRESS OF BLOK TO BE QUEUED 00075000
  75. * GPR3 = QUEUE ANCHOR ADDRESS 00076000
  76. * GPR4 = INTERFACE INDICATOR 00077000
  77. * ¬0 - ADDRESS OF HALFWORD COUNTER TO BE UPDATED 00078000
  78. * 0 - TURN ON VMDEFSTK IN VMPEND 00079000
  79. * GPR5 = INDEX REGISTER 00080000
  80. * GPR11 = VMBLOK ADDRESS 00081000
  81. * GPR12 = BASE REGISTER 00082000
  82. * 00083000
  83. * 00084000
  84. * NOTES - 00085000
  85. * 00086000
  86. * ALTHOUGH THIS IS A BALR LINKAGE ROUTINE, BALRSAVE IS NOT 00087000
  87. * CHANGED; THERFORE, IT MAY BE CALLED BY ANOTHER BALR ROUTINE 00088000
  88. * GENERAL REGISTERS ARE SAVED IN SPECIAL SAVEAREA IN PSA 00089000
  89. * 00090000
  90. * OPERATION - 00091000
  91. * 00092000
  92. * EACH SPECIFIC ENTRY POINT EXCEPT DMKSTKLF - 00093000
  93. * 00094000
  94. * 1. SAVE REGISTERS IN PREDEFINED AREA IN PSA. 00095000
  95. * 2. ESTABLISH MODULE ADDRESSABILITY. 00096000
  96. * 3. SAVE ADDRESS OF BLOK TO BE STACKED IN REGISTER 2 00097000
  97. * 4. PUT ADDRESS OF STACK ANCHORS IN REGISTER 3. 00098000
  98. * 5. SET UP ANY SPECIAL INTERFACE FOR COMMON ROUTINE. 00099000
  99. * DMKSTKDE WILL SET INDICATOR FOR TURNING ON 00100000
  100. * VMDEFSTK IN VMPEND. 00101000
  101. * DMKSTKCP, DMKSTKIO, DMKSTKMP, DMKSTKOP WILL SET 00102000
  102. * INDICATOR FOR UPDATING VMSTKCNT. 00103000
  103. * DMKSTKSW WILL SET INDICATOR 00104000
  104. * FOR UPDATING VMPRRCT. 00105000
  105. * 6. SET UP INDICATORS IN CPEXBLOK FOR TYPE OF REQUEST 00106000
  106. * DMKSTKDE - TURN ON CPEXDEFR IN CPEXTYPE 00107000
  107. * DMKSTKSW - TURN ON CPEXPRIO IN CPEXTYPE AND 00108000
  108. * SET CPEXPROC TO LPUADDRX 00109000
  109. * DMKSTKMP - SET CPEXPROC TO LPUADDR 00110000
  110. * DMKSTKOP - SET CPEXPROC TO LPUADDRX 00111000
  111. * 7. BRANCH TO COMMON ROUTINE. 00112000
  112. * 00113000
  113. * COMMON ROUTINE - 00114000
  114. * 00115000
  115. * 1. OBTAIN LOCK FOR DISPATCHER QUEUES. 00116000
  116. * 2. THE LAST BLOK ON THE APPROPRIATE CHAIN IS LOCATED 00117000
  117. * 3. THE BLOK TO BE STACKED IS CHAINED TO IT 00118000
  118. * 4. THE FORWARD AND BACKWARD CHAIN POINTERS IN THE NEW LAST 00119000
  119. * BLOK ARE UPDATED 00120000
  120. * 5. PERFORM SPECIAL INTERFACE FUNCTION. 00121000
  121. * 6. RELEASE LOCK FOR DISPATCHER QUEUES. 00122000
  122. * 7. RESTORE REGISTERS. 00123000
  123. * 8. RETURN TO CALLER. 00124000
  124. * 00125000
  125. * DMKSTKLF ENTRY POINT - 00126000
  126. * 00127000
  127. * 1. SAVE REGISTERS IN PREDEFINED AREA IN PSA. 00128000
  128. * 2. ESTABLISH MODULE ADDRESSABILITY. 00129000
  129. * 3. SAVE ADDRESS OF BLOK TO BE STACKED IN REGISTER 2. 00130000
  130. * 4. PUT ADDRESS OF LOCKWORD IN REGISTER 1. 00131000
  131. * 5. OBTAIN LOCK FOR DISPATCHER QUEUES. 00132000
  132. * 6. PUT BLOK LIFO ON QUEUE. 00133000
  133. * 7. UPDATE COUNTER OF PRIORITY CPEXBLOKS STACKED FOR 00134000
  134. * PROCESSOR DEPENDENT QUEUES - VMPRRCT. 00135000
  135. * 8. RELEASE LOCK FOR DISPATCHER QUEUES. 00136000
  136. * 9. RESTORE REGISTERS. 00137000
  137. * 10. RETURN TO CALLER. 00138000
  138. *. 00139000
  139. EJECT 00140000
  140. COPY OPTIONS @V407510 00141000
  141. COPY LOCAL OPTIONS @V407510 00142000
  142. EJECT 00143000
  143. DMKSTK CSECT @V407510 00144000
  144. SPACE 3 @V407510 00145000
  145. ENTRY DMKSTKCP @V407510 00146000
  146. ENTRY DMKSTKIO @V407510 00147000
  147. ENTRY DMKSTKDE @V407510 00148000
  148. ENTRY DMKSTKMP @V407510 00149000
  149. ENTRY DMKSTKOP @V407510 00150000
  150. ENTRY DMKSTKSW @V4M0141 00150500
  151. ENTRY DMKSTKLF @V407510 00151000
  152. SPACE 1 @V407510 00152000
  153. EXTRN DMKDSPRQ @V407510 00153000
  154. AIF (NOT &AP).NOAP1 @VA10805 00153010
  155. EXTRN DMKLOKSY @VA09257 00153050
  156. .NOAP1 ANOP 00153060
  157. SPACE 3 @V407510 00154000
  158. USING PSA,0 @V407510 00155000
  159. USING CPEXBLOK,R2 @V407510 00156000
  160. USING VMBLOK,R11 @V407510 00157000
  161. EJECT 00158000
  162. DMKSTKCP DS 0H STACK NORMAL CPEXBLOK @V407510 00159000
  163. STM R0,R15,SWTHSAVE SAVE REGISTERS IN PSA @V407510 00160000
  164. LR R12,R15 SET UP COMMON BASE REGISTER @V407510 00161000
  165. USING DMKSTK,R12 SET UP COMMON ADDRESSABILITY @V407510 00162000
  166. LR R2,R1 SAVE ADDR OF BLOK TO BE STACKED @V407510 00163000
  167. SR R5,R5 INDEX 0 FOR CPEXBLOK QUEUE @V407510 00164000
  168. L R11,CPEXR11 GET VMBLOK ADDRESS @V407510 00165000
  169. LA R4,VMSTKCNT SET UP SPECIAL INTERFACE @V407510 00166000
  170. * INDICATOR @V407510 00167000
  171. XC CPEXMISC,CPEXMISC CLEAR CPEXMISC FELD @V407510 00168000
  172. LA R9,EXIT2 SET EXIT ADDRESS @VA09257 00168100
  173. B COMMON GO TO COMMON PROCESSING @V407510 00169000
  174. DMKSTKIO DS 0H STACK NORMAL IOBLOK @V407510 00170000
  175. USING *,R15 @V407510 00171000
  176. STM R0,R15,SWTHSAVE SAVE REGISTERS IN PSA @V407510 00172000
  177. L R12,STKBASE SET UP COMMON BASE REGISTER @V407510 00173000
  178. DROP R15 DELETE TEMPORARY BASE @V407510 00174000
  179. USING DMKSTK,R12 SET UP COMMON ADDRESSABILITY @V407510 00175000
  180. LR R2,R10 SAVE ADDR OF BLOK TO BE STACKED @V407510 00176000
  181. LA R5,IOBFPNT-IOBLOK INDEX 8 FOR IOBLOK QUEUE @V407510 00177000
  182. L R11,IOBUSER-IOBLOK(R2) GET VMBLOK ADDRESS @V407510 00178000
  183. LA R4,VMSTKCNT SET UP SPECIAL INTERFACE @V407510 00179000
  184. * INDICATOR @V407510 00180000
  185. LA R9,EXIO SET EXT ADR EXIO @VA09257 00180100
  186. B COMMON GO TO COMMON PROCESSING @V407510 00181000
  187. DMKSTKDE DS 0H STACK DEFERRED EXECUTION BLOK @V407510 00182000
  188. USING *,R15 @V407510 00183000
  189. STM R0,R15,SWTHSAVE SAVE REGISTERS IN PSA @V407510 00184000
  190. L R12,STKBASE SET UP COMMON BASE REGISTER @V407510 00185000
  191. DROP R15 DELETE TEMPORARY BASE @V407510 00186000
  192. USING DMKSTK,R12 SET UP COMMON ADDRESSABILITY @V407510 00187000
  193. LR R2,R1 SAVE ADDR OF BLOK TO BE STACKED @V407510 00188000
  194. SR R5,R5 INDEX 0 FOR CPEXBLOK QUEUE @V407510 00189000
  195. SR R4,R4 SET UP SPECIAL INTERFACE @V407510 00190000
  196. * INDICATOR @V407510 00191000
  197. XC CPEXMISC,CPEXMISC CLEAR CPEXMISC FELD @V407510 00192000
  198. OI CPEXTYPE,CPEXDEFR SET UP TYPE OF CPEXBLOK @V407510 00193000
  199. L R11,CPEXR11 GET VMBLOK ADDRESS @V407510 00194000
  200. LA R9,EXIT2 SET EXIT ADDR @VA09257 00194100
  201. B COMMON GO TO COMMON PROCESSING @V407510 00195000
  202. DMKSTKMP DS 0H STACK CPEXBLOK FOR CURRENT PROCESSOR @V407510 00196000
  203. USING *,R15 @V407510 00197000
  204. STM R0,R15,SWTHSAVE SAVE REGISTERS IN PSA @V407510 00198000
  205. L R12,STKBASE SET UP COMMON BASE REGISTER @V407510 00199000
  206. DROP R15 DELETE TEMPORARY BASE @V407510 00200000
  207. USING DMKSTK,R12 SET UP COMMON ADDRESSABILITY @V407510 00201000
  208. LR R2,R1 SAVE ADDR OF BLOK TO BE STACKED @V407510 00202000
  209. SR R5,R5 INDEX 0 FOR CPEXBLOK QUEUE @V407510 00203000
  210. L R11,CPEXR11 GET VMBLOK ADDRESS @V407510 00204000
  211. LA R4,VMSTKCNT SET UP SPECIAL INTERFACE @V4M0141 00205100
  212. * INDICATOR @V407510 00206000
  213. XC CPEXMISC,CPEXMISC CLEAR CPEXMISC FELD @V407510 00207000
  214. MVC CPEXPROC,LPUADDR SET UP CURRENT PROCESSOR @V407510 00209000
  215. * ADDRESS @V407510 00210000
  216. LA R9,EXIT2 SET EXIT ADDR EXIT2 @VA09257 00210100
  217. B COMMON GO TO COMMON PROCESSING @V407510 00211000
  218. DMKSTKOP DS 0H STACK CPEXBLOK FOR OTHER PROCESSOR @V407510 00212000
  219. USING *,R15 @V407510 00213000
  220. STM R0,R15,SWTHSAVE SAVE REGISTERS IN PSA @V407510 00214000
  221. L R12,STKBASE SET UP COMMON BASE REGISTER @V407510 00215000
  222. DROP R15 DELETE TEMPORARY BASE @V407510 00216000
  223. USING DMKSTK,R12 SET UP COMMON ADDRESSABILITY @V407510 00217000
  224. LR R2,R1 SAVE ADDR OF BLOK TO BE STACKED @V407510 00218000
  225. SR R5,R5 INDEX 0 FOR CPEXBLOK QUEUE @V407510 00219000
  226. L R11,CPEXR11 GET VMBLOK ADDRESS @V407510 00220000
  227. LA R4,VMSTKCNT SET UP SPECIAL INTERFACE @V4M0141 00221100
  228. * INDICATOR @V407510 00222000
  229. XC CPEXMISC,CPEXMISC CLEAR CPEXMISC FELD @V407510 00223000
  230. MVC CPEXPROC,LPUADDRX SET UP OTHER PROCESSOR @V407510 00225000
  231. * ADDRESS @V4M0141 00225100
  232. LA R9,ALERTX SET EXIT ADDR @VA09257 00225150
  233. B COMMON GO TO COMMON PROCESSING @V4M0141 00225200
  234. DMKSTKSW DS 0H STACK CPEXBLOK FOR OTHER PROCESSOR @V4M0141 00225300
  235. USING *,R15 @V4M0141 00225400
  236. STM R0,R15,SWTHSAVE SAVE REGISTERS IN PSA @V4M0141 00225500
  237. L R12,STKBASE SET UP COMMON BASE REGISTER @V4M0141 00225600
  238. DROP R15 DELETE TEMPORARY BASE @V4M0141 00225700
  239. USING DMKSTK,R12 SET UP COMMON ADDRESSABILITY @V4M0141 00225800
  240. LR R2,R1 SAVE ADDR OF BLOK TO BE STACKED @V4M0141 00225900
  241. SR R5,R5 INDEX 0 FOR CPEXBLOK QUEUE @V4M0141 00226000
  242. L R11,CPEXR11 GET VMBLOK ADDRESS @V4M0141 00226100
  243. LA R4,VMPRRCT SET UP SPECIAL INTERFACE @V4M0141 00226200
  244. * INDICATOR @V4M0141 00226300
  245. XC CPEXMISC,CPEXMISC CLEAR CPEXMISC FELD @V4M0141 00226400
  246. OI CPEXTYPE,CPEXPRIO INDICATE PRIORITY BLOK @V4M0141 00226500
  247. MVC CPEXPROC,LPUADDRX SET UP OTHER PROCESSOR @V4M0141 00226600
  248. * ADDRESS @V4M0141 00226700
  249. LA R9,EXSW SET EXT ADR EXSW OR PVALERT @VA09257 00226750
  250. * JOIN COMMON PROCESSING @V4M0141 00226800
  251. COMMON DS 0H COMMON PROCESSING FOR STACKING @V407510 00228000
  252. * BLOK AT END OF STACK @V407510 00229000
  253. LOCK OBTAIN,TYPE=DS,SPIN=YES GET LOCK FOR @V407510 00230000
  254. L R3,=V(DMKDSPRQ) ADDRESS OF ANCHOR @V407510 00231000
  255. ST R3,FPNT(R5,R2) FORWARD CHAIN NEW BLOK @V407510 00232000
  256. L R6,BPNT(R5,R3) GET LAST ENTRY IN LIST @V407510 00233000
  257. ST R6,BPNT(R5,R2) SAVE ADDRESS IN BACKCHAIN @V407510 00234000
  258. ST R2,FPNT(R5,R6) FORWARD CHAIN FROM LAST @V407510 00235000
  259. ST R2,BPNT(R5,R3) SAVE ADDRESS OF NEW LAST @V407510 00236000
  260. LTR R4,R4 COUNTER TO UPDATED? @V407510 00237000
  261. BNZ STKUPDCT YES, BRANCH- NOT DMKSTKDE @V407510 00238000
  262. OI VMPEND,VMDEFSTK INDICATE DEFERRED EXECUTION @V407510 00239000
  263. * BLOK STACKED @V407510 00240000
  264. B STKEXIT JOIN COMMON EXIT CODE @V407510 00241000
  265. DMKSTKLF DS 0H STACK CPEXBLOK LIFO FOR SPECIFIC PROCESSOR @V407510 00242000
  266. USING *,R15 @V407510 00243000
  267. STM R0,R15,SWTHSAVE SAVE REGISTERS IN PSA @V407510 00244000
  268. L R12,STKBASE SET UP COMMON BASE REGISTER @V407510 00245000
  269. DROP R15 DELETE TEMPORARY BASE @V407510 00246000
  270. USING DMKSTK,R12 SET UP COMMON ADDRESSABILITY @V407510 00247000
  271. LR R2,R1 SAVE ADDR OF BLOK TO BE STACKED @V407510 00248000
  272. LA R9,EXIT2 SET EXIT ADDR @VA09257 00248010
  273. LOCK OBTAIN,TYPE=DS,SPIN=YES GET DS LOCK @V4M0110 00248100
  274. L R3,=V(DMKDSPRQ) ADDRESS OF LIST ANCHOR @V407510 00249000
  275. L R6,FPNT(R3) GET @ FIRST ELEMENT @V407510 00250000
  276. ST R6,FPNT(R2) NEW POINTS FORWARD TO OLD FIRST @V407510 00251000
  277. ST R2,BPNT(R6) OLD FIRST POINTS BACKWARD TO NEW @V407510 00252000
  278. ST R3,BPNT(R2) NEW FIRST POINTS BACK TO QUEUE 00253000
  279. ST R2,FPNT(R3) QUEUE POINTS TO NEW AS FIRST @V407510 00254000
  280. MVI CPEXTYPE,CPEXPRIO SET UP TYPE OF CPEXBLOK @V4M0141 00255100
  281. L R11,CPEXR11 GET VMBLOK ADDRESS @V407510 00256000
  282. LA R4,VMPRRCT UPDATE PRIORITY BLOK COUNT @V4M0141 00257100
  283. STKUPDCT DS 0H UPDATE COUNTER @V407510 00258000
  284. LH R6,0(R4) GET COUNTER IN WORK REG @V407510 00259000
  285. A R6,F1 ADD ONE TO COUNT @VA07392 00260100
  286. LTR R6,R6 TEST FOR OVERFLOW @V407510 00261000
  287. BM STKAB1 YES, ABEND STK01 @V407510 00262000
  288. STH R6,0(R4) STORE UPDATED COUNTER @V407510 00263000
  289. STKEXIT DS 0H RELEASE LOCK FOR QUEUES & EXIT @V407510 00264000
  290. LOCK RELEASE,TYPE=DS @V407510 00265000
  291. AIF (NOT &AP).NOAP2 @VA10805 00265010
  292. SPACE 1 00265100
  293. TM APSTAT1,APUOPER RUNNING AS AP @VA09257 00265110
  294. BZ EXIT2 NO @VA09257 00265120
  295. BR R9 CONTINUE/EXIT @VA09257 00265130
  296. .NOAP2 ANOP 00265135
  297. SPACE 1 00265140
  298. EXSW DS 0H AP MODE DMKSTKSW PROCESSING @VA09257 00265150
  299. AIF (NOT &AP).NOAP3 @VA10805 00265155
  300. L R15,PREFIXB ACCESS OTHER PSA @VA09257 00265160
  301. B SIGDSP ISSUE DISPATCH SIGNAL @VA09257 00265170
  302. SPACE 1 00265180
  303. .NOAP3 ANOP 00265185
  304. EXIO DS 0H DMKSTKIO AP MODE PROCESSING @VA09257 00265190
  305. AIF (NOT &AP).NOAP4 @VA10805 00265195
  306. L R15,=A(DMKLOKSY) SUPERVISOR LOCK @VA09257 00265200
  307. SR R3,R3 CLEAR REGISTER FOR COMPARE @VA09257 00265210
  308. C R3,0(R15) IS IT FREE @VA09257 00265220
  309. BNE EXIT2 NO,BYPASS SIGNAL @VA09257 00265230
  310. L R15,PREFIXB ACCESS OTHER PSA @VA09257 00265240
  311. CLI CPSTATUS-PSA(R15),CPWAIT WAIT STATE NOW @VA09257 00265250
  312. BNE CKR11 NO @VA09257 00265260
  313. SIGNAL WAKEUP YES, FIRE HIM UP NOW @VA09257 00265270
  314. B EXIT2 @VA09257 00265280
  315. CKR11 DS 0H @VA09257 00265290
  316. L R3,IOBUSER-IOBLOK(R2) GET R11 FOR UNSTACK @VA09257 00265300
  317. CLC VMLOCK-VMBLOK(2,R3),LPUADDRX LOCKED BY OTHER @VA09257 00265310
  318. BNE EXIT2 @VA09257 00265320
  319. SIGDSP DS 0H @VA09257 00265330
  320. TM XCPEND-PSA(R15),XCDISP DISPATCH PEND. @VA09257 00265340
  321. BO EXIT2 YES, DON'T BOTHER @VA09257 00265350
  322. SIGNAL DISPATCH NO, ISSUE SIGNAL @VA09257 00265360
  323. SPACE 1 00265370
  324. B EXIT2 AND GOODBYE @VA09257 00265380
  325. .NOAP4 ANOP 00265385
  326. ALERTX DS 0H @VA09257 00265390
  327. AIF (NOT &AP).NOAP5 @VA10805 00265395
  328. L R15,PREFIXB OTHER PROCESSOR STATUS @VA09257 00265400
  329. CLI CPSTATUS-PSA(R15),CPWAIT @VA09257 00265410
  330. BNE CKDISP NOT IDLE - CONT TEST @VA09257 00265420
  331. SIGNAL WAKEUP IDLE - TELL HIM THERE'S WORK TO @VA09257 00265430
  332. * DO 00265440
  333. B EXIT2 AND GOODBYE @VA09257 00265450
  334. CKDISP TM XCPEND-PSA(R15),XCDISP EXTINT DSP PEND.? @VA09257 00265460
  335. BO EXIT2 YES - SIGP REDUNDANT @VA09257 00265470
  336. CLI CPSTATUS-PSA(R15),CPRUN RUNNING USER? @VA09257 00265480
  337. BNE EXIT2 YES - DON'T INT CP @VA09257 00265490
  338. SIGNAL DISPATCH CP WORK HAS PRIORITY 1 @VA09257 00265500
  339. B EXIT2 AND GOODBYE @VA09257 00265510
  340. .NOAP5 ANOP 00265515
  341. EXIT2 DS 0H @VA09257 00265520
  342. LM R0,R15,SWTHSAVE RESTORE REGISTERS @V407510 00266000
  343. BR R14 RETURN TO CALLER @V407510 00267000
  344. STKAB1 DS 0H @V407510 00268000
  345. ABEND 01 COUNTER HAS OVERFLOWED- ABEND @V407510 00269000
  346. EJECT 00270000
  347. * EQUATES @V407510 00271000
  348. STKCNT EQU 0 INCREMENT VMSTKCNT @V407510 00272000
  349. PRRCT EQU 4 INCREMENT VMPRRCT @V407510 00273000
  350. DEFSTK EQU 8 TURN ON VMDEFSTK IN VMPEND @V407510 00274000
  351. FPNT EQU 0 FORWARD POINTER DISPLACEMENT @V407510 00275000
  352. BPNT EQU 4 BACKWARD POINTER DISPLACEMENT @V407510 00276000
  353. HWMASK EQU 3 MASK TO LOAD HALFWORD @V407510 00277000
  354. ONE EQU 1 INCREMENT VALUE FOR COUNTER @V407510 00278000
  355. * DEFINED STORAGE @V407510 00279000
  356. STKBASE DC A(DMKSTK) COMMON BASE REGISTER VALUE @V407510 00280000
  357. EJECT 00281000
  358. LTORG @V407510 00282000
  359. EJECT 00283000
  360. COPY SAVE @V407510 00284000
  361. COPY IOBLOKS @V407510 00285000
  362. PSA @V407510 00286000
  363. COPY EQU @V407510 00287000
  364. COPY VMBLOK @V407510 00288000
  365. END 00289000