
On Mon, 2008-10-13 at 00:53 +0200, Wolfgang Denk wrote:
Dear Ed Swarthout,
In message 1220862412-16162-1-git-send-email-Ed.Swarthout@freescale.com you wrote:
Fixes boot crash from bad string pointers in get_table_entry_name when flash is erased or differs from current u-boot image.
Signed-off-by: Ed Swarthout Ed.Swarthout@freescale.com
Fix was pointed out by Peter Tyser in Image.c get_table_entry_name thread.
This redoes Grant Likey's relocation change, but leaves control to each board. This also fixes the "mii dump" command when flash is erased. Tested with gcc 4.2
Just wanted to point out that the problems from Grants relocation change might come from something I found a while back, quoting from previous mail:
For fun I had a look into eabi.asm code at http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/eabi.asm?rev=1.1... and I noticed one difference: The __eabi_uconvert() function skips NULL ptrs.
Perhaps this is the missing piece needed in start.S for PPC?
__eabi_convert pasted below for convenience.
Jocke
FUNC_START(__eabi_convert) cmplw 1,3,4 /* any pointers to convert? */ subf 5,3,4 /* calculate number of words to convert */ bclr 4,4 /* return if no pointers */
srawi 5,5,2 addi 3,3,-4 /* start-4 for use with lwzu */ mtctr 5
.Lcvt: lwzu 6,4(3) /* pointer to convert */ cmpwi 0,6,0 beq- .Lcvt2 /* if pointer is null, don't convert */
add 6,6,12 /* convert pointer */ stw 6,0(3) .Lcvt2: bdnz+ .Lcvt blr