Table of Contents

DMMPRG Source

References

Source Listing

DMMPRG.ASSEMBLE.txt
  1. PRG TITLE 'DMMPRG (IPCS) VM/370 - RELEASE 6' 00001000
  2. * 00002000
  3. * MODULE NAME: DMMPRG 00003000
  4. * 00004000
  5. * 00005000
  6. * FUNCTION: HANDLE CP PROGRAM CHECK PROCESSING. 00006000
  7. * 00007000
  8. * 00008000
  9. * ATTRIBUTES: NON-REENTRANT 00009000
  10. * NON-REUSABLE 00010000
  11. * 00011000
  12. * 00012000
  13. * ENTRY POINTS: DMMPRG 00013000
  14. * 00014000
  15. * 00015000
  16. * ENTRY CONDITIONS: SHARED CONSTANT AREA CONTAINS INFORMATION 00016000
  17. * ABOUT THE FAILURE. 00017000
  18. * 00018000
  19. * 00019000
  20. * EXIT CONDITIONS: TO DMMPRM (PROMPTING SUBROUTINE) WITH THE 00020000
  21. * TEXT AREA CONTAINING THE FAILING CODE. 00021000
  22. * 00022000
  23. * 00023000
  24. * CALLS TO OTHER ROUTINES: DMMRMV TO PUT REGISTERS IN OUTPUT 00024000
  25. * DMMGRC TO GET DUMP REC.CONTAINING CODE 00025000
  26. * DMMTRN TO TRANSLATE FAILING CODE 00026000
  27. * DMMPRM WHEN DONE PROCESSING 00027000
  28. * 00028000
  29. * 00029000
  30. * EXTERNAL REFERENCES: SHARECON (SHARED CONSTANT AREA) 00030000
  31. * EXTINREC (DUMP INFORMATION RECORD) 00031000
  32. * EXTPSA (PREFIX STORAGE AREA IN DUMP) 00032000
  33. * 00033000
  34. * 00034000
  35. * TABLES/WORKAREAS: 00035000
  36. * 00036000
  37. * 00037000
  38. * REGISTER USAGE: R13 SAVEAREA 00038000
  39. * R12 BASE REGISTER 00039000
  40. * R11 PSA IN DUMP 00040000
  41. * R10 EXTINREC DUMP INFORMATION RECORD 00041000
  42. * R7 SHARECON (SHARED CONSTANT AREA) 00042000
  43. * R2-R6 WORK 00043000
  44. * 00044000
  45. * 00045000
  46. * NOTES: A 200 BYTE PATCH AREA EXISTS AT LABEL 'PATCH' 00046000
  47. * 00047000
  48. * 00048000
  49. * OPERATION: 00049000
  50. * I. DETERMINE THE LENGTH OF THE FAILING INSTR. AND SET UP 00050000
  51. * THE TEXT AREA BUFFERS AND VMFAILURE KEYWORD 00051000
  52. * II. CALL DMMIDM TO DETERMINE THE FAILING MODULE AND THE 00052000
  53. * DISPLACEMENT WITHIN THAT MODULE. 00053000
  54. * III. GET THE ADDRESS OF THE FAILING INSTR. AND BACK UP 20 00054000
  55. * BYTES OR TO THE BEGINNING OF THE MODULE WHICHEVER IS LESS. 00055000
  56. * IV. CALL DMMRMV TO PUT THE PRINTABLE REGS.IN THE OUTPUT 00056000
  57. * V. CALL DMMGRC TO READ IN THE DUMP REC. CONTAINING THE 00057000
  58. * FAILING CODE. 00058000
  59. * VI. CALL DMMTRN TO TRANS.THE FAILING CODE TO PRINTABLE. 00059000
  60. * VII. MOVE THE FAILING CODE TO THE OUTPUT TEXT AREA IN THE 00060000
  61. * FOLLOWING FORMAT: 00061000
  62. * 00062000
  63. * PRECEDING CODE XXXX XXXX XXXX XXXX XXXX VMINSTR=XXXXXXXX 00063000
  64. * 00064000
  65. * VIII. EXIT BY CALLING DMMPRM WHO WILL RETURN TO DMMEDM 00065000
  66. * 00066000
  67. * 00067000
  68. * ERROR MESSAGES: NONE 00068000
  69. * 00069000
  70. *************************************************************** 00070000
  71. EJECT 00071000
  72. DMMPRG CSECT @VA04250 00072000
  73. USING *,R15 TEMPORARY ADDRESSABILITY @VA04250 00073000
  74. B START BRANCH AROUND EYECATCHER @VA04250 00074000
  75. DS 0D @VA04250 00075000
  76. MODNAME DC C'DMMPRG ' MODULE NAME @VA04250 00076000
  77. RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00077000
  78. START STM R14,R12,12(R13) SAVE CALLERS REGISTERS @VA04250 00078000
  79. LR R12,R15 LOAD OUR BASE @VA04250 00079000
  80. DROP R15 @VA04250 00080000
  81. USING DMMPRG,R12 ESTABLISH ADDRESSABILITY @VA04250 00081000
  82. ST R13,SAVEAREA+8 SAVE POINTER TO CALLER'S SAVEAREA@VA04250 00082000
  83. LA R13,SAVEAREA ESTABLISH SAVE AREA @VA04250 00083000
  84. L R11,VPSA POINT TO PSA @VA04250 00084000
  85. USING PSA,R11 @VA04250 00085000
  86. L R10,VDMPIN POINT TO DUMP INFO REC @VA04250 00086000
  87. USING DMPINREC,R10 @VA04250 00087000
  88. L R7,VSHARE SHARED CONSTANT AREA @VA04250 00088000
  89. USING SHARECON,R7 @VA04250 00089000
  90. *************************************************************** 00090000
  91. * FIRST PROCESS THE FAILURE CODE 00091000
  92. *************************************************************** 00092000
  93. LH R5,INTPRL GET INSTRUCTION LENGTH CODE @VA04250 00093000
  94. SLL R5,29 STRIP HI ORDER BITS @VA04250 00094000
  95. SRL R5,29 ADJUST BACK TO NORMAL @VA04250 00095000
  96. STH R5,ILENGTH AND SAVE LENGTH IN BYTES @VA04250 00096000
  97. MVC VMFAIL1(L'CPA),CPA GET SYMPTOM CODE @VA04250 00097000
  98. MVC VMFAIL1+L'CPA(PREFLEN),DMPABEND ABEND PREFIX @V4075A1 00098000
  99. MVC ABCODE(CODELEN),DMPABEND ABEND CODE TO WRK AREA @V4075A1 00099000
  100. NC ABCODE,ABMASK KNOCK OFF 'PRG'LEAVE 'XX' @VA04250 00100000
  101. L R5,ABCODE CONVERT ABEND CODE SUFFIX @VA04250 00101000
  102. CVD R5,ABCODE TO DECIMAL @VA04250 00102000
  103. UNPK FAILCODE(UNPKLN),DECODE(DECLEN) MOVE TO TEXT @VA04250 00103000
  104. OI VMFAIL+DISP20,NUMERIC FIX UP SO IT PRINTS OK @VA04250 00104000
  105. MVC TEXT1(L'EHEADER3),EHEADER3 GET GEN REG HEADER @VA04250 00105000
  106. MVC TEXT5(L'EHEADER4),EHEADER4 GET HEADER @VA04250 00106000
  107. *************************************************************** 00107000
  108. * CALL DMMIDM TO GET THE MODULE NAME AND DISPLACEMENT 00108000
  109. *************************************************************** 00109000
  110. LA R3,PROPSW+DISP4 GET PROG CHK ADDRESS @VA04250 00110000
  111. ST R3,TRNPARM1 DATA ADDRESS FOR DMMTRN @VA04250 00111000
  112. L R3,FOUR BYTE COUNT TO FOUR @VA04250 00112000
  113. ST R3,TRNPARM BYTE COUNT FOR TRANSLATE @VA04250 00113000
  114. CALL DMMTRN CALL TRANSLATE RTN. @VA04250 00114000
  115. MVC TEXTA+RUNUSE(L'PCHK),PCHK PROG CHK HEADING @VA04250 00115000
  116. MVC TEXTA+RUNUSE+L'PCHK(EIGHT),0(R1) PRG CHK ADDR. @VA04250 00116000
  117. LA R1,PROPSW+DISP4 GET PROG. OLD PSW ADDR. @VA04250 00117000
  118. CALL DMMIDM CALL MODULE SEARCH RTN. @VA04250 00118000
  119. *************************************************************** 00119000
  120. * CALL DMMRMV TO GET THE GPRS TRANSLATED AND MOVED TO OUTPUT 00120000
  121. *************************************************************** 00121000
  122. LA R1,DMPGPRS GET ADDR. OF GENERAL REGISTERS @VA04250 00122000
  123. CALL DMMRMV CALL REGISTER MOVE ROUTINE @VA04250 00123000
  124. ************************************************ 00124000
  125. * CALL DMMGRC TO GET THE CODE WHERE THE FAILURE OCCURRED 00125000
  126. ************************************************ 00126000
  127. PRGINSTR L R2,PROPSW+DISP4 PICK UP PROG.CHK ADDRESS @VA04250 00127000
  128. LA R2,0(R2) CLEAR HIGH ORDER BYTE @VA04250 00128000
  129. ST R2,GRCPARM RECORD ADDRESS FOR GRC @VA04250 00129000
  130. CALL DMMGRC CALL THE RECORD READ RTN. @VA04250 00130000
  131. *************************************************************** 00131000
  132. * WE NOW HAVE THE CODE WHERE THE FAILURE OCCURRED 00132000
  133. * TRANSLATE IT TO PRINTABLE FORMAT BEFORE MOVING IT TO THE 00133000
  134. * OUTPUT TEXT AREA. DO SOME PRELIMINARY CALCULATIONS TO INSURE 00134000
  135. * WE STAY WITHIN THE MODULE WHERE THE FAILURE OCCURRED 00135000
  136. *************************************************************** 00136000
  137. LR R2,R1 RECORD ADDRESS FROM GRC @VA04250 00137000
  138. LA R4,DISP20 MAXIMUM NUMBER OF BYTES @VA04250 00138000
  139. L R5,MODDISP GET DISPLACEMENT @VA04250 00139000
  140. LA R5,0(R5) CLEAR HIGH ORDER BYTE IN CASE @VA04250 00140000
  141. LTR R5,R5 IF MODDISP IS ZERO @VA05442 00140100
  142. BNZ DISPNZ FORCE IT @VA05442 00140200
  143. LA R5,1(R5) TO BE ONE @VA05442 00140300
  144. ST R5,MODDISP @VA05442 00140400
  145. DISPNZ EQU * @VA05442 00140500
  146. CR R5,R4 IS DISP LESS THAN 20 @VA04250 00141000
  147. BL PRGLESS YES @VA04250 00142000
  148. MVC EXCOUNT,TWENTY GET COUNT FOR TRANS @VA04250 00143000
  149. B PRGMVCDE BYPASS DISPLACEMENT LESS THAN 20 @VA04250 00144000
  150. PRGLESS MVC EXCOUNT,MODDISP GET COUNT FOR TRANS @VA04250 00145000
  151. PRGMVCDE L R4,EXCOUNT SET LENGTH FOR EXECUTE @VA04250 00146000
  152. BCTR R4,R0 AND MAKE IT RIGHT @VA04250 00147000
  153. LR R5,R2 GET FAILING ADDRESS @VA04250 00148000
  154. S R5,EXCOUNT BACK UP BY DISPLACEMENT @VA04250 00149000
  155. EX R4,PRGMVEX MOVE THE CODE @VA04250 00150000
  156. B PRGTRAN CONTINUE @VA04250 00151000
  157. PRGMVEX MVC ESTART(0),0(R5) SUBJECT MOVE @VA04250 00152000
  158. PRGTRAN L R3,EXCOUNT GET COUNT OF DATA @VA04250 00153000
  159. ST R3,TRNPARM SAVE IT FOR TRANSLATE ROUTINE @VA04250 00154000
  160. SLL R3,1 MULTIPLY COUNT BY 2 @VA04250 00155000
  161. ST R3,HBCOUNT SAVE IT FOR LATER HERE TOO @VA04250 00156000
  162. LA R4,ESTART POINT TO DATA @VA04250 00157000
  163. ST R4,TRNPARM1 SAVE DATA POINTER FOR TRANSLATE @VA04250 00158000
  164. *************************************************************** 00159000
  165. * TRANSLATE THE FAILING CODE TO PRINTABLE (USING DMMTRN) 00160000
  166. *************************************************************** 00161000
  167. CALL DMMTRN GO TRNASLATE THE DATA TO READABLE@VA04250 00162000
  168. *************************************************************** 00163000
  169. * MOVE FAILING CODE TO THE OUTPUT AREA IN THE FOLLOWING FORMAT: 00164000
  170. * 00165000
  171. * PRECEDING CODE XXXX XXXX XXXX XXXX XXXX VMINSTR=XXXX XXXX 00166000
  172. * 00167000
  173. *************************************************************** 00168000
  174. LR R5,R1 GET ADDRESS OF TRANSLATED DATA @VA04250 00169000
  175. MVI TARG,BLANK CLEAR TARGET @VA04250 00170000
  176. MVC TARG+1(L'TARG-1),TARG @VA04250 00171000
  177. LH R2,ILENGTH GET INSTRUCTION LENGTH @VA04250 00172000
  178. SLL R2,1 MULTIPLY X 2 TO GET PRINTABLE AMT@VA04250 00173000
  179. LA R3,0(,R5) POINT TO OUTPUT @VA04250 00174000
  180. A R3,HBCOUNT GO TO END OF O/P @VA04250 00175000
  181. SR R3,R2 BACK UP TO BAD INSTR. @VA04250 00176000
  182. LA R6,TARG START OF PADDED CELL @VA04250 00177000
  183. AH R6,FIFTY END OF SAME @VA04250 00178000
  184. SR R6,R2 START OF BAD INSTR @VA04250 00179000
  185. BCTR R2,R0 CORRECT IT @VA04250 00180000
  186. LA R4,SHIFT9 SET UP TO SHIFT OUTPUT BY NINE @VA04250 00181000
  187. AR R6,R4 BUMP R6 BY 9 @VA04250 00182000
  188. EX R2,PRGMVINS MOVE THE INSTR @VA04250 00183000
  189. SR R6,R4 PUT IT BACK IN SYNC @VA04250 00184000
  190. MVC SPACE1(EIGHT,R6),VMINSTR INSERT KEYWORD @VA04250 00185000
  191. LA R2,0(,R5) GET LIMIT FOR MOVES @VA04250 00186000
  192. PRGMORCD S R3,FOUR DECREMENT INPUT PTR @VA04250 00187000
  193. SH R6,FIVE DITTO OUTPUT @VA04250 00188000
  194. MVC 0(DISP4,R6),0(R3) MOVE STUFF @VA04250 00189000
  195. CR R2,R3 DONE YET ? @VA04250 00190000
  196. BL PRGMORCD NOT YET - MOVE MORE @VA04250 00191000
  197. MVC PRECODE(L'TARG),TARG MOVE FAIL PADDED CODE @VA04250 00192000
  198. *************************************************************** 00193000
  199. * WE ARE DONE HERE. CALL DMMPRM (HE WILL EXIT TO DMMEDM) 00194000
  200. * 00195000
  201. *************************************************************** 00196000
  202. CALL DMMPRM CALL PROMPTING ROUTINE @VA04250 00197000
  203. PRGMVINS MVC 0(0,R6),0(R3) SUBJECT FOR MOVE @VA04250 00198000
  204. EJECT 00199000
  205. *************************************************************** 00200000
  206. * CONSTANTS SAVEAREAS AND EQUATES 00201000
  207. *************************************************************** 00202000
  208. SAVEAREA DS 18F OUR SAVEAREA @VA04250 00203000
  209. ESTART DC 16F'0' WORK AREA FOR FAILING CODE @VA04250 00204000
  210. VSHARE DC V(SHARECON) POINTER TO SHARED CONSTANT AREA @VA04250 00205000
  211. VDMPIN DC V(EXTINREC) POINTER TO DUMP INFO. RECORD @VA04250 00206000
  212. VPSA DC V(EXTPSA) POINTER TO PSA IN DUMP @VA04250 00207000
  213. ABMASK DC X'000000FF' USED TO ISOLATE ABEND CODE @VA04250 00208000
  214. FOUR DC X'00000004' @VA04250 00209000
  215. CPA DC C'ABEND' CP CODED ABEND @VA04250 00210000
  216. VMINSTR DC C'VMINSTR=' KEYWORD I.D. FOR FAILING INSTR. @VA04250 00211000
  217. DS 0F @VA04250 00212000
  218. HBCOUNT DS CL4 LENGTH OF TRANSLATED DATA @VA04250 00213000
  219. EHEADER3 DC C'GR 0-15' GENERAL REGISTER HEADER FOR TEXT @VA04250 00214000
  220. EHEADER4 DC C'PRECEDING CODE' I.D. FOR CODE PREC.PROG. CHK. @VA04250 00215000
  221. ABCODE DS D WORK AREA TO PROCESS ABEND CODE @VA04250 00216000
  222. EXCOUNT DC F'0' NUMBER OF BYTES OF PRECEDING CODE@VA04250 00217000
  223. TWENTY DC X'00000014' @VA04250 00218000
  224. TARG DS CL60 TEMP AREA FOR PROCESSED CODE @VA04250 00219000
  225. FIVE DC H'5' @VA04250 00220000
  226. FIFTY DC H'50' @VA04250 00221000
  227. ILENGTH DS H INSTRUCTION LENGTH OF FAIL INSTR @VA04250 00222000
  228. PCHK DC C'PROGRAM CHECK AT ' PRG. CHK. TEXT HEADING @VA04250 00223000
  229. PATCH DC 50F'0' PATCH AREA @VA04250 00224000
  230. COPY EXCONST @VA04250 00225000
  231. NUMERIC EQU X'F0' MAKE UNPACKED PRINTABLE @VA04250 00226000
  232. RUNUSE EQU 48 @VA04250 00227000
  233. BLANK EQU X'40' USED TO CLEAR AREAS TO BLANKS @VA04250 00228000
  234. PREFLEN EQU 3 LENGTH OF ABEND PREFIX @VA04250 00229000
  235. FAILCODE EQU VMFAIL+18 LOCATION OF FAILURE IN KEY @VA04250 00230000
  236. UNPKLN EQU 3 BYTE LENGTH OF UNPACK WORK AREA @VA04250 00231000
  237. DECODE EQU ABCODE+6 ABEND CODE IN DECIMAL FIELD @VA04250 00232000
  238. PRECODE EQU TEXT5+17 TEXT FOR CODE PRECEDING FAILURE @VA04250 00233000
  239. DECLEN EQU 2 LENGTH OF DECIMAL FIELD @VA04250 00234000
  240. SHIFT9 EQU 9 INCREMENT OUTPUT AMOUNT @VA04250 00235000
  241. SPACE1 EQU 1 OUTPUT SPACE AMOUNT @VA04250 00236000
  242. CODELEN EQU 4 LENGTH OF ABEND CODE @VA04250 00237000
  243. EIGHTEEN EQU 18 18 FOR LOAD ADDRESS ETC. @VA04250 00238000
  244. DISP20 EQU 20 20 FOR LOAD ADDRESS ETC. @VA04250 00239000
  245. SIX EQU 6 6 FOR LOAD ADDRESS ETC. @VA04250 00240000
  246. DISP4 EQU 4 4 FOR LOAD ADDRESS ETC. @VA04250 00241000
  247. EIGHT EQU 8 8 FOR LOAD ADDRESS ETC. @VA04250 00242000
  248. R0 EQU 0 R0 EQUALS REGISTER 0 @VA04250 00243000
  249. R1 EQU 1 R1 EQUALS REGISTER 1 @VA04250 00244000
  250. R2 EQU 2 R2 EQUALS REGISTER 2 @VA04250 00245000
  251. R3 EQU 3 R3 EQUALS REGISTER 3 @VA04250 00246000
  252. R4 EQU 4 R4 EQUALS REGISTER 4 @VA04250 00247000
  253. R5 EQU 5 R5 EQUALS REGISTER 5 @VA04250 00248000
  254. R6 EQU 6 R6 EQUALS REGISTER 6 @VA04250 00249000
  255. R7 EQU 7 R7 EQUALS REGISTER 7 @VA04250 00250000
  256. R8 EQU 8 R8 EQUALS REGISTER 8 @VA04250 00251000
  257. R9 EQU 9 R9 EQUALS REGISTER 9 @VA04250 00252000
  258. R10 EQU 10 R10 EQUALS REGISTER 10 @VA04250 00253000
  259. R11 EQU 11 R11 EQUALS REGISTER 11 @VA04250 00254000
  260. R12 EQU 12 R12 EQUALS REGISTER 12 @VA04250 00255000
  261. R13 EQU 13 R13 EQUALS REGISTER 13 @VA04250 00256000
  262. R14 EQU 14 R14 EQUALS REGISTER 14 @VA04250 00257000
  263. R15 EQU 15 R15 EQUALS REGISTER 15 @VA04250 00258000
  264. PSA @VA04250 00259000
  265. COPY DMPBLOKS @VA04250 00260000
  266. END 00261000