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.