reboot gets stuck in a TLB exception on Au1550 based board

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
yamon:

.org 0x400
        /* 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
        nop
        /* Not an interrupt */
1:
        b       1b             <=- PC ends up here after reboot.
        nop

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?

                               Thanks,
                               Clem


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux