Bradley D. LaRonde wrote:
> // jump and link to prom_init
> 800007f8: 0c01db5b jal 80076d6c <prom_init>
> 800007fc: 00000000 nop
> ...
> 0000000080076d6c <prom_init>:
> // adjust the stack pointer for local vars
> 80076d6c: 27bdfff0 addiu $sp,$sp,-16
>
> // endless loop
> 80076d70: 0801db5c j 80076d70 <prom_init+4>
> 80076d74: 00000000 nop
>
> How can that possibly except? Any ideas?
None of those instructions should cause an exception (assuming the cache
isn't whacked). What it looks like is that the code you think you're
jumping to (prom_init) isn't really there. Either the bootloader isn't
loading it properly, or it's being overwritten before you get to it. I
think the problem may be where you have the kernel loading. From the looks
of it, the linker is starting at 0x80000000, which I imagine will give the
bootloader problems when it tries to load it over the exception vectors
while WinCE is still trying to run. Try a slightly higher LOADADDR (in
arch/mips/Makefile). I used 0x80002000 in hiworld and gdbstub.
Mike K.
|