|
|
1.1 root 1: .globl excep_norm
2: excep_norm:
3: ORW2 &0x1e000,%psw # IPL up to 15
4: TSTW %r0 # let psw bits settle
5: PUSHW %r0 # save temporary registers
6: PUSHW %r1 # save temporary registers
7: PUSHW %r2 # save temporary registers
8: PUSHW &3 # type = NORMAL
9: PUSHAW -24(%sp) # push address of saved pc -(24)
10: PUSHAW -24(%sp) # push address of saved psw -24 off of new stack
11: PUSHW -28(%sp) # push saved psw -28 off of new stack (PUSH)
12: PUSHW %pcbp # push saved pcbp (not used!)
13: call &5,*(Sys+(4*153)) # /* trap */trap will decide to return or not
14: POPW %r2 #restore temporary registers
15: POPW %r1 #restore temporary registers
16: POPW %r0 #restore temporary registers
17: RETG # resume of trap allows (brkpt or trace )
18:
19: .globl excep_stack
20: excep_stack:
21: MOVW -0x4(%isp),%r0 # get saved %pcbp
22: PUSHW &2 # type = STACK
23: PUSHAW 0x4(%r0) # push address of saved pc
24: PUSHAW 0x0(%r0) # push address of saved psw
25: PUSHW 0x0(%r0) # push saved psw
26: PUSHW %r0 # push saved pcbp
27: call &5,*(Sys+(4*153)) # /* trap */ let trap handle the situation
28: RETPS # if trap returns
29:
30: .globl excep_proc
31: excep_proc:
32: PUSHW &1 # type = PROCESS
33: PUSHW &0 # push address of saved pc (NONE!)
34: PUSHW &0 # push address of saved psw (NONE!)
35: PUSHW %psw # push psw of current proc!!!
36: PUSHW -0x4(%isp) # push saved %pcbp
37: call &5,*(Sys+(4*153)) # /* trap */ let trap handle the situation
38: RETPS # if trap returns
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.