The memory copy is not inline asm (will lead to subtle
corruption), the memory copy and the stack switching are not in one
inline asm block (gcc is free to insert arbitrary code in between), and
the stack is switched in the middle of a function (gcc may use some
non-clobbered regs to access the old stack, or simply die).
I fixed that with recent patch. Is it what you checked?
Myles, please check
1) If it does work without my patch ;)
2) Add the
static void set_init_ram_access_uc(void)
{
set_var_mtrr(0, 0x00000000, CONFIG_RAMTOP, MTRR_TYPE_UNCACHED);
}
And call the set_init_ram_access_uc instead of set_init_ram_access and call
again set_init_ram_access after the copy.
The CAR code as it is now is doing at least evictions to L2 maybe this will
help.
Rudolf
--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot