[U-Boot-Users] MPC8xx boards broken by commit some weeks ago
Martin Krause
Martin.Krause at tqs.de
Mon Jul 16 10:31:41 CEST 2007
Hi all,
support for - at least some - MPC8xx boards seems broken. To prepare some
new patches, I build a current U-Boot (top of tree) for our TQM885D board.
With this U-Boot, some time after relocation to RAM the board hangs:
U-Boot 1.2.0-g668229de-dirty (Jul 13 2007 - 14:41:16)
CPU: MPC885ZPnn at 133 MHz [15.0...133.0 MHz]
8 kB I-Cache 8 kB D-Cache FEC present
Board: TQM885DGEAAD39-E133
I2C: ready
DRAM: 128 MB
Top of RAM usable for U-Boot at: 08000000
Reserving 199k for U-Boot at: 07fce000
Reserving 288k for malloc() at: 07f86000
Reserving 60 Bytes for Board Info at: 07f85fc4
Reserving 52 Bytes for Global Data at: 07f85f90
Stack Pointer at: 07f85f78
New Stack Pointer is: 07f85f78
Now running in RAM - U-Boot at: 07fce000
-> board hangs
U-Boot runs till line 974 in function board_init_r() in lib_ppc/board.c:
/* Initialize from environment */
if ((s = getenv ("loadaddr")) != NULL) {
load_addr = simple_strtoul (s, NULL, 16);
}
Somewhere (at varying positions) in the getenv("loadaddr") function,
the cpu gets stuck (the single step command in gdb does not return,
and/or a SIGSTOP is received).
I tracked the problem down (git bisect is great!) to the commit "ppc4xx:
Clean up 440 exceptions handling" from Stefan Roese on 15 Jun 2007
(efa35cf12d914d4caba942acd5a6c45f217de302).
More precisely to the following patch:
--- a/include/ppc_asm.tmpl
+++ b/include/ppc_asm.tmpl
@@ -217,7 +217,7 @@
* We assume sprg3 has the physical address of the current
* task's thread_struct.
*/
-#define EXCEPTION_PROLOG \
+#define EXCEPTION_PROLOG(reg1, reg2) \
mtspr SPRG0,r20; \
mtspr SPRG1,r21; \
mfcr r20; \
@@ -235,8 +235,10 @@
stw r22,_CTR(r21); \
mfspr r20,XER; \
stw r20,_XER(r21); \
- mfspr r22,SRR0; \
- mfspr r23,SRR1; \
+ mfspr r20,DEAR; \ <--
+ stw r20,_DAR(r21); \ <--
+ mfspr r22,reg1; \
+ mfspr r23,reg2; \
stw r0,GPR0(r21); \
stw r1,GPR1(r21); \
stw r2,GPR2(r21); \
If I remove the marked assembler instructions, the board runs again.
I could reproduce the same behaviour with a TQM866M board (without
the marked instuctions, the board runs fine, with the instructions the
board gets stuck some time after relocation to RAM).
Has someone encountered similar problems?
What are the two newly added assembler commands good for?
Regards
Martin Krause
--
Entwicklung
Tel. +49 8153 93 08-157, Fax +49 8153 93 08-7157
mailto:martin.krause at tqs.de
TQ-Systems GmbH
Muehlstrasse 2, Gut Delling, D-82229 Seefeld
Amtsgericht Muenchen, HRB 105 018, UST-IdNr. DE 811 607 913
Geschaeftsfuehrer: Dipl.-Ing. (FH) Detlef Schneider, Dipl.-Ing. (FH) Ruediger Stahl
http://www.tq-group.com
More information about the U-Boot
mailing list