Try to handle "double faults" occuring at more trap levels (ie 4 :)).

This commit is contained in:
Jake Burkholder 2002-05-25 01:45:11 +00:00
parent 597e13d8c5
commit 0679dc5f91
2 changed files with 28 additions and 28 deletions

View File

@ -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

View File

@ -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