In commit 8e3ddc13eb
the bootm code was
changed to boot barebox using the same calling convention as the
kernel. Which on ARM is to pass three arguments which are zero, an
architecture code, and a params pointer.
A 2nd stage barebox can be booted using lib/bootstrap, which is
different code from bootm. This code just leaves garbage in the first
three parameters and so doesn't follow the convention.
Change it to be compatible with the ARM kernel booting convention.
This just sends a zero for the architecture, since the code for
architectures depends on boot[zmu] and something using bootstrap
wouldn't have those too. And it just passes NULL for the params since
we don't have a way to pass a device tree from the preloader.
All users of bootstrap are ARM based, but the code is in lib so a
non-ARM board might someday make use of it. If the current code would
work for them, then the change here will be ok too.
Signed-off-by: Trent Piepho <tpiepho@kymetacorp.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
25 lines
414 B
C
25 lines
414 B
C
/*
|
|
* Copyright (C) 2011 Sascha Hauer, Pengutronix
|
|
* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
|
|
*
|
|
* Under GPLv2
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <bootstrap.h>
|
|
#include <filetype.h>
|
|
|
|
void bootstrap_boot(kernel_entry_func func, bool barebox)
|
|
{
|
|
if (!func)
|
|
return;
|
|
|
|
if (barebox && !is_barebox_head((void*)func))
|
|
return;
|
|
|
|
shutdown_barebox();
|
|
func(0, 0, NULL);
|
|
|
|
while (1);
|
|
}
|