Subject: re: SIR Reset with todays sources
To: Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
From: matthew green <mrg@eterna.com.au>
List: port-sparc64
Date: 03/20/2007 07:51:48
As the `SIR Reset' is not solved yet I tried this:
- Replace all `sir' opcodes to `nop' in locore.s.
- Put them back until I get the `SIR Reset' instead of a hard lock.
Thus tracked it down to this `sir'.
--- locore.s 2007-02-23 02:06:38.000000000 +0100
+++ locore.s 2007-03-19 13:01:54.000000000 +0100
@@ -2099,5 +2099,5 @@ winfix:
!!
wrpr %g2, %tl ! Restore trap level.
- sir ! Just issue a reset and don't try to recover.
+ nop ! Just issue a reset and don't try to recover.
mov %fp, %l6 ! Save the frame pointer
set EINTSTACK+USPACE+CC64FSZ-STKB, %fp ! Set the frame pointer to the middle of the idle stack
Is it really possible to reach this statement?
Any chance to get a trace or otherwise debug it?
what does "ctrace" from the prom say at this point? that should
give you a stack trace you can feed addresses back to GDB for
to get line numbers.
the above code fires when a *second* datafault occurs while
trying to process a datafault. it normally means that the
stack is corrupted or that %sp is wrong. yuck. (this is
one of the problems that can occur on SMP kernels...)
.mrg.