Bjørnar Syverstad <[email protected]> writes: > Hello, > I use the phy3250 configuration. I try to debug the u-boot from the > 256k internal ram. > > I have: > - Undefined the CFG_BOOT_USES1L in include/configs/phy3250.h > - Set the location counter to . = 0x00000000 in board/phy3250/u-boot.lds > - In the board/phy3250/config.mk changed the TEXT_BASE = 0x00000000 > - Added the compiler flags -fno-schedule-insns -fno-schedule-insns2
Why those flags? > The problem is that when debugging cpu/arm926ejs/start.S : > > ip (r12) seems to be used by the c code that is called by some > subrutine under lowlevel_init. So when returning from lowlevel_init > ip (r12) is have got another value. > > So the jump out of cpu_init_crit fails. > > I could change the code in start.S. But I do assume that it used a > lot, and that it is not a bug. Could the problem be that the > compiling of the c files? That there is a way to tell the compiler > to not use the ip (r12) register? R12 is a call-clobbered register. Expecting it to retain its value across calls is a mistake. Specifying the flag -ffixed-REG makes the compiler never use register REG. This would probably fix your immediate issue without changing any code, but I would prefer to see this addressed properly. > mov ip, lr /* perserve link reg > across call */ > bl lowlevel_init /* go setup pll,mux,memory */ > mov lr, ip /* restore link */ This definitely looks wrong. Only r4-r11 are preserved across function calls. -- Måns Rullgård [email protected] _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

