mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Trent Piepho <tpiepho@kymetacorp.com>
To: barebox <barebox@lists.infradead.org>
Subject: [PATCH] bootstrap: Boot barebox with kernel calling convention
Date: Thu, 10 Dec 2015 20:00:50 +0000	[thread overview]
Message-ID: <1449777657.26955.70.camel@rtred1test09.kymeta.local> (raw)

In commit 8e3ddc13eb8239177ed20f119e3a3d02518b941d 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>
---
 include/bootstrap.h    | 3 ++-
 lib/bootstrap/common.c | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/include/bootstrap.h b/include/bootstrap.h
index 28852c0..9863ff4 100644
--- a/include/bootstrap.h
+++ b/include/bootstrap.h
@@ -11,7 +11,8 @@
 
 #define bootstrap_err(fmt, arg...) printf(fmt, ##arg)
 
-void bootstrap_boot(int (*func)(void), bool barebox);
+typedef void (*kernel_entry_func)(int zero, int arch, void *params);
+void bootstrap_boot(kernel_entry_func func, bool barebox);
 
 #ifdef CONFIG_BOOTSTRAP_DEVFS
 void* bootstrap_read_devfs(char *devname, bool use_bb, int offset,
diff --git a/lib/bootstrap/common.c b/lib/bootstrap/common.c
index 38ec272..4a61992 100644
--- a/lib/bootstrap/common.c
+++ b/lib/bootstrap/common.c
@@ -9,7 +9,7 @@
 #include <bootstrap.h>
 #include <filetype.h>
 
-void bootstrap_boot(int (*func)(void), bool barebox)
+void bootstrap_boot(kernel_entry_func func, bool barebox)
 {
 	if (!func)
 		return;
@@ -18,7 +18,7 @@ void bootstrap_boot(int (*func)(void), bool barebox)
 		return;
 
 	shutdown_barebox();
-	func();
+	func(0, 0, NULL);
 
 	while (1);
 }
-- 
1.8.3.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

             reply	other threads:[~2015-12-10 20:01 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-10 20:00 Trent Piepho [this message]
2015-12-11  7:25 ` Sascha Hauer
2015-12-14 10:15 ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1449777657.26955.70.camel@rtred1test09.kymeta.local \
    --to=tpiepho@kymetacorp.com \
    --cc=barebox@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox