mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8
@ 2012-04-28 13:52 Antony Pavlov
  2012-04-28 13:52 ` [RFC 2/2] MIPS: bootm: add "MIPS barebox" handler Antony Pavlov
  2012-04-28 16:04 ` [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8 Antony Pavlov
  0 siblings, 2 replies; 4+ messages in thread
From: Antony Pavlov @ 2012-04-28 13:52 UTC (permalink / raw)
  To: barebox

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
---
 arch/mips/boot/start.S |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/mips/boot/start.S b/arch/mips/boot/start.S
index b756d40..d8f4fd5 100644
--- a/arch/mips/boot/start.S
+++ b/arch/mips/boot/start.S
@@ -52,6 +52,14 @@ _pc:	addiu	\rd, ra, \label - _pc		# label is assumed to be
 	.align 4
 
 EXPORT(_start)
+
+	b	__start
+	 nop
+
+	.ascii  "barebox"
+	.byte   0
+
+__start:
 	/* disable watchpoints */
 	mtc0	zero, CP0_WATCHLO
 	mtc0	zero, CP0_WATCHHI
-- 
1.7.10


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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [RFC 2/2] MIPS: bootm: add "MIPS barebox" handler
  2012-04-28 13:52 [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8 Antony Pavlov
@ 2012-04-28 13:52 ` Antony Pavlov
  2012-04-28 16:04 ` [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8 Antony Pavlov
  1 sibling, 0 replies; 4+ messages in thread
From: Antony Pavlov @ 2012-04-28 13:52 UTC (permalink / raw)
  To: barebox

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
---
 arch/mips/lib/Makefile |    1 +
 arch/mips/lib/bootm.c  |   43 +++++++++++++++++++++++++++++++++++++++++++
 common/filetype.c      |    2 ++
 include/filetype.h     |    1 +
 4 files changed, 47 insertions(+)
 create mode 100644 arch/mips/lib/bootm.c

diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile
index 45fe920..85aa194 100644
--- a/arch/mips/lib/Makefile
+++ b/arch/mips/lib/Makefile
@@ -6,3 +6,4 @@ obj-y += ashrdi3.o
 obj-y += memory.o
 
 obj-$(CONFIG_CMD_MIPS_CPUINFO) += cpuinfo.o
+obj-$(CONFIG_CMD_BOOTM)	+= bootm.o
diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c
new file mode 100644
index 0000000..3d6a4ce
--- /dev/null
+++ b/arch/mips/lib/bootm.c
@@ -0,0 +1,43 @@
+#include <boot.h>
+#include <common.h>
+#include <init.h>
+#include <fs.h>
+#include <errno.h>
+#include <binfmt.h>
+
+#include <asm/byteorder.h>
+
+static int do_bootm_barebox(struct image_data *data)
+{
+	void (*barebox)(void);
+
+	barebox = read_file(data->os_file, NULL);
+	if (!barebox)
+		return -EINVAL;
+
+	shutdown_barebox();
+
+	barebox();
+
+	reset_cpu(0);
+}
+
+static struct image_handler barebox_handler = {
+	.name = "MIPS barebox",
+	.bootm = do_bootm_barebox,
+	.filetype = filetype_mips_barebox,
+};
+
+static struct binfmt_hook binfmt_barebox_hook = {
+	.type = filetype_mips_barebox,
+	.exec = "bootm",
+};
+
+static int mips_register_image_handler(void)
+{
+	register_image_handler(&barebox_handler);
+	binfmt_register(&binfmt_barebox_hook);
+
+	return 0;
+}
+late_initcall(mips_register_image_handler);
diff --git a/common/filetype.c b/common/filetype.c
index 15a3732..04d666c 100644
--- a/common/filetype.c
+++ b/common/filetype.c
@@ -78,6 +78,8 @@ enum filetype file_detect_type(void *_buf)
 		return filetype_oftree;
 	if (strncmp(buf8, "ANDROID!", 8) == 0)
 		return filetype_aimage;
+	if (strncmp(buf8 + 8, "barebox", 8) == 0)
+		return filetype_mips_barebox;
 
 	return filetype_unknown;
 }
diff --git a/include/filetype.h b/include/filetype.h
index 9338793..f5de8ed 100644
--- a/include/filetype.h
+++ b/include/filetype.h
@@ -17,6 +17,7 @@ enum filetype {
 	filetype_oftree,
 	filetype_aimage,
 	filetype_sh,
+	filetype_mips_barebox,
 };
 
 const char *file_type_to_string(enum filetype f);
-- 
1.7.10


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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8
  2012-04-28 13:52 [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8 Antony Pavlov
  2012-04-28 13:52 ` [RFC 2/2] MIPS: bootm: add "MIPS barebox" handler Antony Pavlov
@ 2012-04-28 16:04 ` Antony Pavlov
  2012-04-30 11:51   ` Jean-Christophe PLAGNIOL-VILLARD
  1 sibling, 1 reply; 4+ messages in thread
From: Antony Pavlov @ 2012-04-28 16:04 UTC (permalink / raw)
  To: barebox

On 28 April 2012 17:52, Antony Pavlov <antonynpavlov@gmail.com> wrote:
> Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
> ---
>  arch/mips/boot/start.S |    8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/arch/mips/boot/start.S b/arch/mips/boot/start.S
> index b756d40..d8f4fd5 100644
> --- a/arch/mips/boot/start.S
> +++ b/arch/mips/boot/start.S
> @@ -52,6 +52,14 @@ _pc: addiu   \rd, ra, \label - _pc           # label is assumed to be
>        .align 4
>
>  EXPORT(_start)
> +
> +       b       __start
> +        nop
> +
> +       .ascii  "barebox"

There is the problem with mips64 (thank to Jean-Christophe).
We must set offset for "barebox" string more explicitly.

I will remake the patches.

> +       .byte   0
> +
> +__start:
>        /* disable watchpoints */
>        mtc0    zero, CP0_WATCHLO
>        mtc0    zero, CP0_WATCHHI
> --
> 1.7.10
>


-- 
Best regards,
  Antony Pavlov

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8
  2012-04-28 16:04 ` [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8 Antony Pavlov
@ 2012-04-30 11:51   ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 0 replies; 4+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-04-30 11:51 UTC (permalink / raw)
  To: Antony Pavlov; +Cc: barebox

On 20:04 Sat 28 Apr     , Antony Pavlov wrote:
> On 28 April 2012 17:52, Antony Pavlov <antonynpavlov@gmail.com> wrote:
> > Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
> > ---
> >  arch/mips/boot/start.S |    8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/arch/mips/boot/start.S b/arch/mips/boot/start.S
> > index b756d40..d8f4fd5 100644
> > --- a/arch/mips/boot/start.S
> > +++ b/arch/mips/boot/start.S
> > @@ -52,6 +52,14 @@ _pc: addiu   \rd, ra, \label - _pc           # label is assumed to be
> >        .align 4
> >
> >  EXPORT(_start)
> > +
> > +       b       __start
> > +        nop
> > +
> > +       .ascii  "barebox"
> 
> There is the problem with mips64 (thank to Jean-Christophe).
> We must set offset for "barebox" string more explicitly.
> 
> I will remake the patches.
I double check by building the malta as 64bit it work but it's true it will be
better to specified the offset explecitly

btw we need to discuss with the kernel ML to add a Magic too in the
vmlinux.bin and vmlinu.bin to be able to detect there type automatically

Best Regards,
J.

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-04-30 12:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-28 13:52 [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8 Antony Pavlov
2012-04-28 13:52 ` [RFC 2/2] MIPS: bootm: add "MIPS barebox" handler Antony Pavlov
2012-04-28 16:04 ` [RFC 1/2] MIPS: start.S: add "barebox" label at _start + 8 Antony Pavlov
2012-04-30 11:51   ` Jean-Christophe PLAGNIOL-VILLARD

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox