Try to handle "double faults" occuring at more trap levels (ie 4 :)).
This commit is contained in:
parent
597e13d8c5
commit
0679dc5f91
@ -163,26 +163,26 @@
|
|||||||
|
|
||||||
ENTRY(tl1_kstack_fault)
|
ENTRY(tl1_kstack_fault)
|
||||||
rdpr %tl, %g1
|
rdpr %tl, %g1
|
||||||
cmp %g1, 3
|
1: cmp %g1, 2
|
||||||
beq %xcc, 1f
|
be,a 2f
|
||||||
nop
|
nop
|
||||||
blt %xcc, 2f
|
|
||||||
nop
|
|
||||||
sir
|
|
||||||
|
|
||||||
1:
|
|
||||||
#if KTR_COMPILE & KTR_TRAP
|
#if KTR_COMPILE & KTR_TRAP
|
||||||
CATR(KTR_TRAP, "tl1_kstack_fault: tl=%#lx tpc=%#lx tnpc=%#lx"
|
CATR(KTR_TRAP, "tl1_kstack_fault: tl=%#lx tpc=%#lx tnpc=%#lx"
|
||||||
, %g1, %g2, %g3, 7, 8, 9)
|
, %g2, %g3, %g4, 7, 8, 9)
|
||||||
rdpr %tl, %g2
|
rdpr %tl, %g3
|
||||||
stx %g2, [%g1 + KTR_PARM1]
|
stx %g3, [%g2 + KTR_PARM1]
|
||||||
rdpr %tpc, %g2
|
rdpr %tpc, %g3
|
||||||
stx %g2, [%g1 + KTR_PARM1]
|
stx %g3, [%g2 + KTR_PARM1]
|
||||||
rdpr %tnpc, %g2
|
rdpr %tnpc, %g3
|
||||||
stx %g2, [%g1 + KTR_PARM1]
|
stx %g3, [%g2 + KTR_PARM1]
|
||||||
9:
|
9:
|
||||||
#endif
|
#endif
|
||||||
wrpr %g0, 2, %tl
|
|
||||||
|
sub %g1, 1, %g1
|
||||||
|
wrpr %g1, 0, %tl
|
||||||
|
ba,a %xcc, 1b
|
||||||
|
nop
|
||||||
|
|
||||||
2:
|
2:
|
||||||
#if KTR_COMPILE & KTR_TRAP
|
#if KTR_COMPILE & KTR_TRAP
|
||||||
|
@ -163,26 +163,26 @@
|
|||||||
|
|
||||||
ENTRY(tl1_kstack_fault)
|
ENTRY(tl1_kstack_fault)
|
||||||
rdpr %tl, %g1
|
rdpr %tl, %g1
|
||||||
cmp %g1, 3
|
1: cmp %g1, 2
|
||||||
beq %xcc, 1f
|
be,a 2f
|
||||||
nop
|
nop
|
||||||
blt %xcc, 2f
|
|
||||||
nop
|
|
||||||
sir
|
|
||||||
|
|
||||||
1:
|
|
||||||
#if KTR_COMPILE & KTR_TRAP
|
#if KTR_COMPILE & KTR_TRAP
|
||||||
CATR(KTR_TRAP, "tl1_kstack_fault: tl=%#lx tpc=%#lx tnpc=%#lx"
|
CATR(KTR_TRAP, "tl1_kstack_fault: tl=%#lx tpc=%#lx tnpc=%#lx"
|
||||||
, %g1, %g2, %g3, 7, 8, 9)
|
, %g2, %g3, %g4, 7, 8, 9)
|
||||||
rdpr %tl, %g2
|
rdpr %tl, %g3
|
||||||
stx %g2, [%g1 + KTR_PARM1]
|
stx %g3, [%g2 + KTR_PARM1]
|
||||||
rdpr %tpc, %g2
|
rdpr %tpc, %g3
|
||||||
stx %g2, [%g1 + KTR_PARM1]
|
stx %g3, [%g2 + KTR_PARM1]
|
||||||
rdpr %tnpc, %g2
|
rdpr %tnpc, %g3
|
||||||
stx %g2, [%g1 + KTR_PARM1]
|
stx %g3, [%g2 + KTR_PARM1]
|
||||||
9:
|
9:
|
||||||
#endif
|
#endif
|
||||||
wrpr %g0, 2, %tl
|
|
||||||
|
sub %g1, 1, %g1
|
||||||
|
wrpr %g1, 0, %tl
|
||||||
|
ba,a %xcc, 1b
|
||||||
|
nop
|
||||||
|
|
||||||
2:
|
2:
|
||||||
#if KTR_COMPILE & KTR_TRAP
|
#if KTR_COMPILE & KTR_TRAP
|
||||||
|
Loading…
Reference in New Issue
Block a user