arm: fix arm kernel boot for non zero start addr

Booting an arm kernel has been broken a while when booting from non zero start
address. This is due to the order of events: board init loads the kernel and
sets register 15 to the start address and then qemu_system_reset reset the cpu
making register 15 zero again.

This patch fixes the usage of the register 15 start address trick in
combination with arm_load_kernel.

Signed-off-by: Lars Munch <lars@segv.dk>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
Lars Munch 2010-05-08 22:43:35 +02:00 committed by Aurelien Jarno
parent 0f89cc7b6c
commit e03c22a98c
9 changed files with 1 additions and 30 deletions

View file

@ -187,6 +187,7 @@ static void main_cpu_reset(void *opaque)
env->regs[15] = info->entry & 0xfffffffe;
env->thumb = info->entry & 1;
} else {
env->regs[15] = info->loader_start;
if (old_param) {
set_kernel_args_old(info, info->initrd_size,
info->loader_start);