
Hi All,
I have been making some progress with porting U-Boot to a 7400/107 board. I now have serial out, but crash before the code is relocated to RAM. Can anyone help me please?
The last thing I see on the serial console is:
Reserving 48 Bytes for Global Data at: 03fc9f98
I think the address looks OK as I have 64MB RAM on this board so Global Data is just below the top of that.
This is where I get to in lib_ppc/board.c:
/* * Finally, we set up a new (bigger) stack. * * Leave some safety gap for SP, force alignment on 16 byte boundary * Clear initial stack frame */ addr_sp -= 16; fff036b4 subi r31,r26,0x1078 fff036b8 crclr cr6 fff036bc bl printf debug ("Reserving %d Bytes for Global Data at: %08lx\n", fff036c0 li r4,0x30 fff036c4 lwz r3,-0x7FC4(r30) fff036c8 mr r5,r24 addr_sp &= ~0xF; fff036cc clrrwi r31,r31,4 fff036d0 crclr cr6 fff036d4 bl printf fff036d8 mr r11,r31 fff036dc subi r31,r31,4 fff036e0 stw r25,__fixup_entries(r11) <== Crash here *((ulong *) addr_sp)-- = 0; debug ("Stack Pointer at: %08lx\n", addr_sp); fff036e4 lwz r3,-0x7FC0(r30) fff036e8 stw r25,__fixup_entries(r31) fff036ec subi r31,r31,4 fff036f0 mr r4,r31 fff036f4 crclr cr6 fff036f8 bl printf
When I step through the instruction at fff036e0 I end up at 700, which is the Program Exception vector (srr0 = 0x800, srr1 = 80000) which implies an illegal instruction?
From the System.map file I can see that __fixup_entries is 0. Is this correct?
Can anyone suggest where I should be looking to fix this? I appreciate I have not given much info, I can send more if you let me know what you need.
Thanks Rich