Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/cex/cexsge.lst
There are no other files named cexsge.lst in the archive.
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23
CEXSGE.M11 30-DEC-82 00:25 TABLE OF CONTENTS
2673 DECLARATIONS
2756 $DBGDL - Singal Routine Entry/Exit
2807 $ETUNW - Initiate Unwind Processing
2849 $HANDL - Call a User Condition Handling Routine
2954 $IGNAL - Initiate Condition Handling
3012 $STOP - Initiate Condition Handling
3058 DBGCHK - Signal Routine Entry/Exit If Asked
3103 SIGNAL - Signal to the Next Exception Handler
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 1
CEXSGE.M11 30-DEC-82 00:25
1 .TITLE CEXSGE - BLISS-16 CONDITION HANDLING FACILITY
2 .IDENT /003220/
3 .ENABL LC
4
5 ;
6 ; COPYRIGHT (c) 1980, 1981, 1982
7 ; DIGITAL EQUIPMENT CORPORATION
8 ; Maynard, Massachusetts
9 ;
10 ; This software is furnished under a license and may be used
11 ; and copied only in accordance with the terms of such license
12 ; and with the inclusion of the above copyright notice. This
13 ; software or any other copies thereof may not be provided or
14 ; otherwise made available to any other person. No title to
15 ; and ownership of the software is hereby transferred.
16 ;
17 ; The information in this software is subject to change
18 ; without notice and should not be construed as a commitment
19 ; by DIGITAL EQUIPMENT CORPORATION.
20 ;
21 ; DIGITAL assumes no responsibility for the use or reliability
22 ; of its software on equipment which is not supplied by
23 ; DIGITAL.
24 ;
25
26 ;++
27 ; FACILITY:
28 ; MCB Communications Executive
29 ;
30 ; ABSTRACT:
31 ; This module provides signal and enable support for
32 ; the Bliss-16 condition handling facility.
33 ;
34 ; ENVIRONMENT:
35 ; RSX kernel mode with EIS
36 ;
37 ; AUTHOR: Bose S. Ghanta CREATION DATE: 26-Jan-78
38 ;
39 ; MODIFIED BY:
40 ;
41 ; 1. 14-Feb-80 DGF Now conforms to software standards.
42 ;
43 ; 2. 4-Apr-80 DL SS$.UN is now a global literal, it may be
44 ; accessed from Bliss-16 programs using the
45 ; VMS standard name SS$_UNWIND. The name is
46 ; truncated to 6 rad50 characters: SS$.UN
47 ; EXTERNAL LITERAL SS$_UNWIND
48 ; Also, SS$UNWIND (RAD50-11 SS$UNW) is defined.
49 ;
50 ; 3. 8-Apr-80 DL The value set in the MECH vector is now used.
51 ;
52 ; Alan D. Peckham, 1-Jul-80: VERSION 3.0
53 ; 01 - Set to operate within the MCB environment.
54 ; Conditionalize the handler and unwind coding.
55 ; 02 - Insert external global declarations to pull in BLISS library
56 ; modules of universal utility...
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 1-1
CEXSGE.M11 30-DEC-82 00:25
57 ; 03 - Moved global data to seperate module.
58 ; Eliminated local data (module can now be made read-only).
59 ; 04 - Put meaningful data in registers on IOT.
60 ; 05 - Remove that meaningful data.
61 ; 06 - Add Comm/Exec $CRSH entry point.
62 ; Enable UNWIND coding.
63 ; 07 - Rewritten to compact coding and eliminate stack handling bug.
64 ; 08 - Add $INTR routine for CEXINT to do exception handling.
65 ; Save PANIC context and call panic process if existant.
66 ; Added call to debug process before exception handling.
67 ; 09 - Correct exception handlers $INTR, $CRSH, $STOP to be able to
68 ; continue after a call to the debug process.
69 ; 10 - Bugs in previous fix.
70 ; 11 - Allow the debug process to UNWIND into a panic dump.
71 ; Do not attempt to save PC or PS in panic dump.
72 ; 12 - Correct debug UNWIND coding.
73 ; 13 - Re-organize resignalling strategy.
74 ; Move panic dumper to CEX process.
75 ; 14 - Remove unneeded definitions.
76 ; Correct M.EXR address bug in SETSIG.
77 ; 15 - Correct context restoration in RETSIG.
78 ; 16 - $STOP should go to SIGNAL, not to $IGNAL.
79 ; 17 - Add $DBGDL for BLISS call tracing (/DEBUG).
80 ; Alan D. Peckham, 12-Dec-80: VERSION 3.1
81 ; 18 - Add support for enable vector address in exception vectors.
82 ; Alan D. Peckham, 30-Jan-80: VERSION 3.2
83 ; 19 - Fix status code pickup bug in DBGCHK.
84 ; Change excpetion data base in SIGNAL, $ETEXV.
85 ; Remove HALT instruction from $STOP code.
86 ; New method for translating PIX to process descriptor in $ETEXV.
87 ; Add default process exception handler coding in SIGNAL.
88 ; Move $INTR to CEXINT.
89 ; Move $CRSH to CEXSCH.
90 ; 20 - Remap to calling process after exception in SIGNAL.
91 ; 21 - Conditionalize out UNWIND coding.
92 ; 22 - More conditionalizing.
93 ; Comment out process signal handling dispatch - nobody uses it!
94 ;--
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 2
CEXSGE.M11 30-DEC-82 00:25 DECLARATIONS
96 .SBTTL DECLARATIONS
97
98 ;
99 ; INCLUDE FILES:
100 ;
101
102 .MCALL POP$S,PUSH$S,SAV5$S
103 .GLOBL KISAR5,KISAR6,PS,.CRPIX
104 ; .GLOBL BL$ABS ; B16ABS
105 .GLOBL BL$CMP,BL$EQL,BL$GEQ,BL$GTR,BL$LEQ,BL$LSS,BL$NEQ ; B16CH1
106 .GLOBL BL$CPY ; B16CH2
107 .GLOBL BL$FCH,BL$FNC ; B16CH3
108 .GLOBL BL$FSB ; B16CH4
109 .GLOBL BL$FIL,BL$MOV ; B16CH5
110 ; .GLOBL BL$TRN ; B16CH6
111 ; .GLOBL BL$GT1 ; B16PG1
112 ; .GLOBL BL$GT2 ; B16PG2
113 ; .GLOBL BL$PU1 ; B16PG3
114 ; .GLOBL BL$PU2 ; B16PG4
115 ; .GLOBL BL$ROT ; B16ROT
116 .GLOBL $SAVE2,$SAVE3,$SAVE4,$SAVE5 ; B16SAV
117
118 ;
119 ; MACROS:
120 ;
121 ; None
122 ;
123 ; EQUATED SYMBOLS:
124
125 ;
126 000000 C$$UNW = 0 ; No unwinding allowed
127
128 077777 SS$.UN == 7!<<7777>*10> ; UNWIND SIGNAL VALUE. A BLISS-16
129 ; program can reference this symbol
130 ; as EXTERNAL LITERAL SS$_UNWIND;
131 077777 SS$UNW == 7!<<7777>*10> ; ALSO, SS$UNWIND (10/20 standard)
132 ;
133 ; Mechanism vector
134 ;
135 000000 .ASECT
136 000000 . = 0
137 000000 000001 .BLKW 1 ; Constant = 1
138 000002 000001 M.R0:: .BLKW 1 ; Saved R0
139 000004 000001 M.AR5:: .BLKW 1 ; Saved KISAR5
140 000006 000001 M.HSP:: .BLKW 1 ; Copy of $HANSP at time of SIGNAL
141 000010 000001 M.FRM:: .BLKW 1 ; Copy of $IGREG at time of SIGNAL
142 000012 000001 M.MCH:: .BLKW 1 ; Address of next MeCHanism frame
143 000014 000001 M.SIG:: .BLKW 1 ; Address of current SIGnal vector
144 000016 000001 M.EXR:: .BLKW 1 ; Next exception processor.
145 000020 000001 M.LVL:: .BLKW 1 ; Frame level:
146 177775 ML.LST == -3 ; Last chance
147 177776 ML.PRI == -2 ; Primary
148 177777 ML.SEC == -1 ; Secondary
149
150 000022 000000 M.LNG:: .BLKW 0 ; Length of mechanism frame
151 000000 . = 0
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 2-1
CEXSGE.M11 30-DEC-82 00:25 DECLARATIONS
152 000000' .PSECT
153
154 ;
155 ; OWN STORAGE:
156 ;
157
158 .GLOBL $IGREG ; Enable frame pointer
159 .GLOBL $HANSP ; Global used by ENABLE code
160 .GLOBL .DBGFP ; Debug frame pointer for call tracing.
161 .GLOBL .DBGST ; Non-zero for call tracing
162 .GLOBL .UNWLV ; Non-zero if UNWIND requested
163 .GLOBL .MCHVC ; Address of current MeCHanism vector
164 .GLOBL .MEXV1 ; Primary MCB exception vector.
165 .GLOBL .MEXV2 ; Secondary MCB exception vector.
166 .GLOBL .MEXVL ; Last chance MCB exception vector.
167 .GLOBL .MEXVD ; MCB dumper exception vector.
168
169 001 .IF NE,C$$UNW
170 .PSECT $PLIT$,D,RO
171 UNWSIG: .WORD 1,SS$UNW ; UNWIND SIGNAL vector.
172 000 .ENDC
173 .IIF NE,<E.LVL-0>,.ERROR E.LVL; must be first word in EXV
174 .IIF NE,<E.PDB-2-E.LVL>,.ERROR E.PDB; must follow level
175 .IIF NE,<E.DSP-2-E.PDB>,.ERROR E.DSP; must follow PDB
176 .IIF NE,<E.ENA-2-E.DSP>,.ERROR E.ENA; must follow dispatch
177 .IIF NE,<Z.DSP-0>,.ERROR Z.DSP; must be first word in PD
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 3
CEXSGE.M11 30-DEC-82 00:25 $DBGDL - SINGAL ROUTINE ENTRY/EXIT
179 .SBTTL $DBGDL - Singal Routine Entry/Exit
180 ;++
181 ; FUNCTIONAL DESCRIPTION:
182 ;
183 ; None
184 ;
185 ; CALLING SEQUENCE:
186 ;
187 ; CALL $DBGDL
188 ; .
189 ; :
190 ; BR .+22
191 ; .ASCII /modulnam/
192 ; .ASCII /routinam/
193 ;
194 ; INPUT PARAMETERS:
195 ;
196 ; None
197 ;
198 ; IMPLICIT INPUTS:
199 ;
200 ; None
201 ;
202 ; OUTPUT PARAMETERS:
203 ;
204 ; None
205 ;
206 ; IMPLICIT OUTPUTS:
207 ;
208 ; None
209 ;
210 ; CONDITION CODES:
211 ;
212 ; None
213 ;
214 ; SIDE EFFECTS:
215 ;
216 ; None
217 ;--
218
219 000000' .PSECT $CODE$,I,RO
220 000000' $DBGDL::PUSH$S <@#KISAR5,.DBGFP> ; Link us
221 000010' 010667 000000G MOV SP,.DBGFP ; into frame list.
222 000014' 004767 000244 CALL DBGCHK ; If asked,
223 000020' 000000G CE$RCL ; indicate that the routine is being called.
224 000022' 004776 000002 CALL @2(SP) ; Invoke the routine.
225 000026' 004767 000232 CALL DBGCHK ; If asked,
226 000032' 000000G CE$RRT ; indicate that the routine is returning.
227 000034' POP$S <.DBGFP,,> ; Remove from frame list
228 000044' 000207 RETURN ; and drop out of routine.
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 4
CEXSGE.M11 30-DEC-82 00:25 $ETUNW - INITIATE UNWIND PROCESSING
230 .SBTTL $ETUNW - Initiate Unwind Processing
231 ;++
232 ; FUNCTIONAL DESCRIPTION:
233 ;
234 ; Invoked by:
235 ; SETUNWIND ();
236 ;
237 ; CALLING SEQUENCE:
238 ;
239 ; $ETUNW ()
240 ;
241 ; INPUT PARAMETERS:
242 ;
243 ; None
244 ;
245 ; IMPLICIT INPUTS:
246 ;
247 ; None
248 ;
249 ; OUTPUT PARAMETERS:
250 ;
251 ; None
252 ;
253 ; IMPLICIT OUTPUTS:
254 ;
255 ; None
256 ;
257 ; CONDITION CODES:
258 ;
259 ; None
260 ;
261 ; SIDE EFFECTS:
262 ;
263 ; None
264 ;--
265
266 000046' .PSECT $CODE$,I,RO
267 001 .IF NE,C$$UNW
268 $ETUNW::MOVB #1,.UNWLV ; Set unwind level
269 RETURN ; and return.
270 000 .ENDC
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 5
CEXSGE.M11 30-DEC-82 00:25 $HANDL - CALL A USER CONDITION HANDLING ROUTINE
272 .SBTTL $HANDL - Call a User Condition Handling Routine
273 ;++
274 ; FUNCTIONAL DESCRIPTION:
275 ;
276 ; None
277 ;
278 ; CALLING SEQUENCE:
279 ;
280 ; $HANDL (arg1, arg2, ..., number_of_args, handler_routine)
281 ;
282 ; INPUT PARAMETERS:
283 ;
284 ;
285 ;
286 ; IMPLICIT INPUTS:
287 ;
288 ; None
289 ;
290 ; OUTPUT PARAMETERS:
291 ;
292 ; None
293 ;
294 ; IMPLICIT OUTPUTS:
295 ;
296 ; None
297 ;
298 ; CONDITION CODES:
299 ;
300 ; None
301 ;
302 ; SIDE EFFECTS:
303 ;
304 ; None
305 ;--
306
307 000046' .PSECT $CODE$,I,RO
308 000046' 016700 000000G $HANDL::MOV .MCHVC,R0 ; Get mechanism vector
309 000052' PUSH$S <M.SIG(R0),R0,#3.*2+4> ; and set up
310 000064' 060616 ADD SP,(SP) ; condition handler arguments.
311 001 .IF NE,C$$UNW
312 CLRB .UNWLV ; Assume no UNWINDing and
313 000 .ENDC
314 000066' 004776 000010 CALL @3.*2+2(SP) ; call the user handler routine.
315 000072' HANDL: POP$S ,2 ; Remove enable and mechanism addresses
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 5-1
CEXSGE.M11 30-DEC-82 00:25 $HANDL - CALL A USER CONDITION HANDLING ROUTINE
317 ;
318 ; There are now four options:
319 ;
320 ; 1) An unwind is already in progress
321 ; 2) An unwind has been requested
322 ; 3) Resignalling is being requested
323 ; 4) The signalling routine is to be continued
324 ;
325
326 001 .IF NE,C$$UNW
327 CMP #UNWSIG,(SP)+ ; If UNWIND already in progress
328 BEQ UNWIN2 ; then go see if finished.
329 .IFTF
330
331 000074' 016706 000000G MOV .MCHVC,SP ; Recover SIGNAL stack pointer.
332 .IFT
333 TSTB .UNWLV ; If user has requested UNWIND
334 BNE UNWIND ; then start processing.
335 000 .ENDC
336
337 000100' 006200 ASR R0 ; If no resignalling requested
338 000102' 103433 BCS RETSIG ; then complete the SIGNAL call
339 000104' 000167 000204 JMP SIGNAL ; otherwise go on to next frame.
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 5-2
CEXSGE.M11 30-DEC-82 00:25 $HANDL - CALL A USER CONDITION HANDLING ROUTINE
341 ;
342 ; This handler has requested an unwind. Unwinding is done by
343 ; scanning back through the stack and calling each handler
344 ; until we match the handler that requested unwind. The $IGREG
345 ; will point to next outer enable frame when we return.
346 ; In this unwind process, the value returned by the handler
347 ; is ignored.
348 ;
349
350 001 .IF NE,C$$UNW
351 UNWIND: MOV M.FRM(SP),R0 ; Get starting frame pointer,
352 MOV $IGREG,M.FRM(SP) ; Exchange with current one.
353 MOV R0,$IGREG
354 MOV #UNWSIG,M.SIG(SP) ; Set up the SS$UNW signal vector,
355 UNWIN1: MOV .MCHVC,SP ; recover signal stack
356 JMP SIGNAL ; and invoke the handler.
357
358 ;
359 ; An unwind is in progress.
360 ;
361
362 UNWIN2: MOV .MCHVC,R0 ; Get MeCHanism vector
363 CMP $IGREG,M.FRM(R0) ; and if we are backed to UNWIND requestor
364 BNE UNWIN1 ; then
365
366 ;
367 ; Now, we return from the routine which established this handler.
368 ;
369
370 MOV (SP),(R0) ; Get return address,
371 ADD $HANSP,SP ; adjust the stack
372 MOV (R0)+,(SP) ; and reset address.
373 MOV (R0),R0 ; Get routine value from mechanism vector,
374 RETURN ; and let him exit.
375 000 .ENDC
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 6
CEXSGE.M11 30-DEC-82 00:25 $IGNAL - INITIATE CONDITION HANDLING
377 .SBTTL $IGNAL - Initiate Condition Handling
378 ;++
379 ; FUNCTIONAL DESCRIPTION:
380 ;
381 ; Invoked by:
382 ; SIGNAL (arg1, arg2, ...);
383 ;
384 ; CALLING SEQUENCE:
385 ;
386 ; $IGNAL (arg1, arg2, ..., number_of_args)
387 ;
388 ; INPUT PARAMETERS:
389 ;
390 ; None
391 ;
392 ; IMPLICIT INPUTS:
393 ;
394 ; None
395 ;
396 ; OUTPUT PARAMETERS:
397 ;
398 ; None
399 ;
400 ; IMPLICIT OUTPUTS:
401 ;
402 ; None
403 ;
404 ; CONDITION CODES:
405 ;
406 ; None
407 ;
408 ; SIDE EFFECTS:
409 ;
410 ; None
411 ;--
412
413 000110' .PSECT $CODE$,I,RO
414 000110' 004767 000004 $IGNAL::CALL SETSIG ; Set up MeCHanism vector
415 000114' 000167 000174 JMP SIGNAL ; and start signalling.
416
417 ;
418 ; Set up MeCHanism vector for SIGnal
419 ;
420
421 000120' SETSIG: PUSH$S <#MEXV,#M.LNG+2,.MCHVC,$IGREG,$HANSP>
422 000144' PUSH$S <@#KISAR5,R0,#1>
423 000156' 060666 000014 ADD SP,M.SIG(SP)
424 000162' 010667 000000G MOV SP,.MCHVC
425 000166' 000176 000020 JMP @M.LVL(SP)
426 ;
427 ; Return from the signal
428 ;
429
430 000172' RETSIG: POP$S <,R0,@#KISAR5>
431 000202' POP$S <$HANSP,$IGREG,.MCHVC>
432 000216' POP$S ,3
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 6-1
CEXSGE.M11 30-DEC-82 00:25 $IGNAL - INITIATE CONDITION HANDLING
433 000222' 000207 RETURN
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 7
CEXSGE.M11 30-DEC-82 00:25 $STOP - INITIATE CONDITION HANDLING
435 .SBTTL $STOP - Initiate Condition Handling
436 ;++
437 ; FUNCTIONAL DESCRIPTION:
438 ;
439 ; Invoked by:
440 ; SIGNAL_STOP (arg1, arg2, ...);
441 ;
442 ; CALLING SEQUENCE:
443 ;
444 ; $STOP (arg1, arg2, ..., number_of_args)
445 ;
446 ; INPUT PARAMETERS:
447 ;
448 ; None
449 ;
450 ; IMPLICIT INPUTS:
451 ;
452 ; None
453 ;
454 ; OUTPUT PARAMETERS:
455 ;
456 ; None
457 ;
458 ; IMPLICIT OUTPUTS:
459 ;
460 ; None
461 ;
462 ; CONDITION CODES:
463 ;
464 ; None
465 ;
466 ; SIDE EFFECTS:
467 ;
468 ; None
469 ;--
470
471 000224' .PSECT $CODE$,I,RO
472 000224' 004767 000016 $STOP:: CALL 20$ ; Spring the signal
473 000230' 10$: PUSH$S <#SS$STP,#1> ; and if he continues
474 000240' 004767 177644 CALL $IGNAL ; admonish him
475 000244' 000771 BR 10$ ; again and again.
476
477 000246' 004767 177646 20$: CALL SETSIG ; Set the signal context,
478 000252' 062766 000002 000014 ADD #2,M.SIG(SP) ; adjust the signal vector address
479 000260' 000167 000030 JMP SIGNAL ; and spring the SIGNAL.
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 8
CEXSGE.M11 30-DEC-82 00:25 DBGCHK - SIGNAL ROUTINE ENTRY/EXIT IF ASKED
481 .SBTTL DBGCHK - Signal Routine Entry/Exit If Asked
482 ;++
483 ; FUNCTIONAL DESCRIPTION:
484 ;
485 ; None
486 ;
487 ; CALLING SEQUENCE:
488 ;
489 ; JMP DBGCHK
490 ; .WORD status_code
491 ;
492 ; INPUT PARAMETERS:
493 ;
494 ; None
495 ;
496 ; IMPLICIT INPUTS:
497 ;
498 ; None
499 ;
500 ; OUTPUT PARAMETERS:
501 ;
502 ; None
503 ;
504 ; IMPLICIT OUTPUTS:
505 ;
506 ; None
507 ;
508 ; CONDITION CODES:
509 ;
510 ; None
511 ;
512 ; SIDE EFFECTS:
513 ;
514 ; None
515 ;--
516
517 000264' .PSECT $CODE$,I,RO
518 000264' 105767 000000G DBGCHK: TSTB .DBGST ; If no call tracing
519 000270' 001003 BNE 70$ ; then
520 000272' 062716 000002 ADD #2,(SP) ; bypass the status code.
521 000276' 000207 RETURN
522 000300' 70$: PUSH$S @(SP) ; Otherwise set status code
523 000304' 061766 000002 ADD (PC),2(SP) ; and return addresses,
524 000310' 000167 000000G JMP $CRSH ; and do the signal.
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 9
CEXSGE.M11 30-DEC-82 00:25 SIGNAL - SIGNAL TO THE NEXT EXCEPTION HANDLER
526 .SBTTL SIGNAL - Signal to the Next Exception Handler
527 ;++
528 ; FUNCTIONAL DESCRIPTION:
529 ;
530 ; None
531 ;
532 ; CALLING SEQUENCE:
533 ;
534 ; JMP SIGNAL
535 ;
536 ; INPUT PARAMETERS:
537 ;
538 ; None
539 ;
540 ; IMPLICIT INPUTS:
541 ;
542 ; None
543 ;
544 ; OUTPUT PARAMETERS:
545 ;
546 ; None
547 ;
548 ; IMPLICIT OUTPUTS:
549 ;
550 ; None
551 ;
552 ; CONDITION CODES:
553 ;
554 ; None
555 ;
556 ; SIDE EFFECTS:
557 ;
558 ; None
559 ;--
560
561 000314' .PSECT $CODE$,I,RO
562 000314' 000176 000016 SIGNAL: JMP @M.EXR(SP) ; Go to next processor.
563
564 000320' 012700 000000G MEXV: MOV #.MEXV1,R0 ; Primary exception.
565 000324' 004767 000060 CALL 60$
566
567 000330' 012700 000000G MOV #.MEXV2,R0 ; Secondary exception.
568 000334' 004767 000050 CALL 60$
569
570 000340' 005266 000020 20$: INC M.LVL(SP) ; Bump exception depth
571 000344' 100775 BMI 20$ ; and make sure it starts at zero.
572 000346' 016700 000000G MOV $IGREG,R0 ; Get next handler frame
573 000352' 001407 BEQ 22$ ; (if there is one)
574 000354' 012067 000000G MOV (R0)+,$IGREG ; and pop to next.
575 000360' 012067 000000G MOV (R0)+,$HANSP ; Put SP for the ENABLE body in a global place
576 000364' 160667 000000G SUB SP,$HANSP ; to get offset for locals on enable stack
577 000370' 000130 JMP @(R0)+ ; and go to ENABLE code (ie) $HANDL.
578
579 000372' 22$:; CALL 50$ ;UNUSED
580
581 000372' 012700 000000G 30$: MOV #.MEXVL,R0 ; Last chance exception.
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 9-1
CEXSGE.M11 30-DEC-82 00:25 SIGNAL - SIGNAL TO THE NEXT EXCEPTION HANDLER
582 000376' 004767 000006 CALL 60$
583
584 000402' 012700 000000G MOV #.MEXVD,R0 ; MCB dumper exception.
585 000406' 000402 BR 62$
586
587 000410' 50$:; POP$S M.EXR(SP) ; Set next exception processor. ;UNUSED
588 ; MOV @.CRPDB,@#KISAR5 ; Set process mapping ;UNUSED
589 ; MOV #PHDSIG,R0 ; get signal address ;UNUSED
590 ; TST (R0)+ ; and check address ;UNUSED
591 ; BEQ SIGNAL ; if it is there. ;UNUSED
592 ; CLR $HANSP ; No stack offset ;UNUSED
593 ; PUSH$S <M.SIG(SP),.MCHVC,#0> ;UNUSED
594 ; ; Set exception handler parameters ;UNUSED
595 ; BR 68$ ; and do the signal. ;UNUSED
596
597 000410' 60$: POP$S M.EXR(SP) ; Set next exception processor.
598 000414' 012066 000020 62$: MOV (R0)+,M.LVL(SP) ; Exception level
599 000420' 013037 000000G MOV @(R0)+,@#KISAR5 ; process mapping
600 000424' 005720 TST (R0)+ ; and check address
601 000426' 001732 BEQ SIGNAL ; if it is there.
602 000430' 005067 000000G CLR $HANSP ; No stack offset
603 000434' PUSH$S <M.SIG(SP),.MCHVC,(R0)>
604 ; Set exception handler parameters
605 000446' 68$:
606 001 .IF NE,C$$UNW
607 CLRB .UNWLV ; assume no UNWINDing and
608 000 .ENDC
609 000446' 004750 CALL @-(R0) ; call the user handler routine.
610 000450' 016637 000012 000000G MOV 6+M.AR5(SP),@#KISAR5 ; Remap to original process
611 000456' 000167 177410 JMP HANDL ; and see how called handler did.
612
613 000001 .END
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 10
CEXSGE.M11 30-DEC-82 00:25 CROSS REFERENCE TABLE -- USER SYMBOLS
BL$CMP= ****** G 105#
BL$CPY= ****** G 106#
BL$EQL= ****** G 105#
BL$FCH= ****** G 107#
BL$FIL= ****** G 109#
BL$FNC= ****** G 107#
BL$FSB= ****** G 108#
BL$GEQ= ****** G 105#
BL$GTR= ****** G 105#
BL$LEQ= ****** G 105#
BL$LSS= ****** G 105#
BL$MOV= ****** G 109#
BL$NEQ= ****** G 105#
CE$RCL= ****** G 223
CE$RRT= ****** G 226
C$$UNW= 000000 126# 169 267 311 326 350 606
DBGCHK 000264R 002 222* 225* 518#
E.DSP 000004 175 176
E.ENA 000006 176
E.LVL 000000 173 174
E.PDB 000002 174 175
HANDL 000072R 002 315# 611
KISAR5= ****** G 103# 220 422 430* 599* 610*
KISAR6= ****** G 103#
MEXV 000320R 002 421 564#
ML.LST= 177775 G 146#
ML.PRI= 177776 G 147#
ML.SEC= 177777 G 148#
M.AR5 000004 G 139# 610
M.EXR 000016 G 144# 562 597*
M.FRM 000010 G 141#
M.HSP 000006 G 140#
M.LNG 000022 G 150# 421
M.LVL 000020 G 145# 425 570* 598*
M.MCH 000012 G 142#
M.R0 000002 G 138#
M.SIG 000014 G 143# 309 423* 478* 603
PS = ****** G 103#
RETSIG 000172R 002 338 430#
SETSIG 000120R 002 414* 421# 477*
SIGNAL 000314R 002 339 415 479 562# 601
SS$STP= ****** G 473
SS$UNW= 077777 G 131#
SS$.UN= 077777 G 128#
Z.DSP 000000 177
$CRSH = ****** GX 524
$DBGDL 000000RG 002 220#
$HANDL 000046RG 002 308#
$HANSP= ****** G 159# 421 431* 575* 576* 602*
$IGNAL 000110RG 002 414# 474*
$IGREG= ****** G 158# 421 431* 572 574*
$SAVE2= ****** G 116#
$SAVE3= ****** G 116#
$SAVE4= ****** G 116#
$SAVE5= ****** G 116#
$STOP 000224RG 002 472#
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 10-1
CEXSGE.M11 30-DEC-82 00:25 CROSS REFERENCE TABLE -- USER SYMBOLS
. = 000462R 002 136# 137# 138# 139# 140# 141# 142# 143# 144# 145# 150# 151#
.CRPIX= ****** G 103#
.DBGFP= ****** G 160# 220 221* 227*
.DBGST= ****** G 161# 518
.MCHVC= ****** G 163# 308 331 421 424* 431* 603
.MEXVD= ****** G 167# 584
.MEXVL= ****** G 166# 581
.MEXV1= ****** G 164# 564
.MEXV2= ****** G 165# 567
.UNWLV= ****** G 162#
CEXSGE - BLISS-16 CONDITION HANDLING FACILITY DNMAC X24.07-563 28-MAY-85 14:23 PAGE 11
CEXSGE.M11 30-DEC-82 00:25 CROSS REFERENCE TABLE -- MACRO NAMES
POP$S 102# 227 315 430 431 432 597
PUSH$S 102# 220 309 421 422 473 522 603
SAV5$S 102#
. ABS. 000022 000 CON RO ABS LCL I
000000 001 CON RW REL LCL I
$CODE$ 000462 002 CON RO REL LCL I
ERRORS DETECTED: 0
DEFAULT GLOBALS GENERATED: 1
CEXSGE,CEXSGE/CR=MCB:RSXLIB/PA:1,MCBLIB/PA:1,CEX:CEXLIB/PA:1,CEXSGE
RUN-TIME: 4 1 .3 SECONDS
RUN-TIME RATIO: 15/6=2.3
CORE USED: 15K (29 PAGES)