I was wondering if anyone else has a problem with reboot not working
on a Au1550? When I issue a reboot, the kernel prints "** Resetting
Integrated Peripherals", but the system doesn't reboot.
My BDI shows that the PC it is in the exception handling in the early
part of the yamon startup code. After taking the exception, if I say
'go 0xBFC00000', then the Au boots up just fine. The PC ends up at
0xbfc00424 which is an jump to self in the exception handling code in
/* 0xBFC00400 Catch other exceptions, except EJTAG debug */
/* Check for interrupt */
MFC0( k0, C0_CAUSE )
and k0, C0_CAUSE_CODE_MSK
srl k0, C0_CAUSE_CODE_SHF
subu k0, C0_CAUSE_CODE_INT
beq k0, zero, interrupt
/* Not an interrupt */
b 1b <=- PC ends up here after reboot.
k0 (reg 26) == 2, which I think is a TLB load or instruction fetch exception.
One difference between the stock db1x00 code and my code is that
arch/mips/au1000/db1x00/board_setup.c:board_reset() does a write to
the BCSR.SYSTEM_CONTROL[SW_RST]. I don't have the FPGA on my hardware,
but it looks like the code is wrong anyway, because the BCSR is at
0xAF000000 on the db1550, not 0xAE000000. If I take my kernel/root
image and run it on the dbau1550 board, reboot works (but in that case
it is running a different version of yamon).
I was wondering if anyone might have a clue what is going on or some
suggestions on what I can do to continue debugging this?