* [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