Message ID | 1418735242-5801-1-git-send-email-marex@denx.de |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
On 16 December 2014 at 06:07, Marek Vasut <marex@denx.de> wrote: > Add separate image type for the Wittenstein OpenRTOS . > > Signed-off-by: Marek Vasut <marex@denx.de> > Cc: Simon Glass <sjg@chromium.org> > Cc: Tom Rini <trini@ti.com> > --- > common/bootm_os.c | 29 +++++++++++++++++++++++++++++ > common/image.c | 4 ++++ > include/image.h | 1 + > 3 files changed, 34 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org>
On Tuesday, December 16, 2014 at 05:28:55 PM, Simon Glass wrote: > On 16 December 2014 at 06:07, Marek Vasut <marex@denx.de> wrote: > > Add separate image type for the Wittenstein OpenRTOS . > > > > Signed-off-by: Marek Vasut <marex@denx.de> > > Cc: Simon Glass <sjg@chromium.org> > > Cc: Tom Rini <trini@ti.com> > > --- > > > > common/bootm_os.c | 29 +++++++++++++++++++++++++++++ > > common/image.c | 4 ++++ > > include/image.h | 1 + > > 3 files changed, 34 insertions(+) > > Reviewed-by: Simon Glass <sjg@chromium.org> Thank you! I was a bit worried if these patches are really done right and if this is the correct way to integrate the OpenRTOS support. Best regards, Marek Vasut
Hello Marek, On 16-12-14 14:07, Marek Vasut wrote: > Add separate image type for the Wittenstein OpenRTOS . > > Signed-off-by: Marek Vasut <marex@denx.de> > Cc: Simon Glass <sjg@chromium.org> > Cc: Tom Rini <trini@ti.com> > --- > common/bootm_os.c | 29 +++++++++++++++++++++++++++++ > common/image.c | 4 ++++ > include/image.h | 1 + > 3 files changed, 34 insertions(+) > > diff --git a/common/bootm_os.c b/common/bootm_os.c > index 5be4467..72477f0 100644 > --- a/common/bootm_os.c > +++ b/common/bootm_os.c > @@ -404,6 +404,32 @@ static int do_bootm_integrity(int flag, int argc, char * const argv[], > } > #endif > > +#ifdef CONFIG_BOOTM_OPENRTOS > +static int do_bootm_openrtos(int flag, int argc, char * const argv[], > + bootm_headers_t *images) > +{ > + void (*entry_point)(void); > + > + if (flag != BOOTM_STATE_OS_GO) > + return 0; > + > + entry_point = (void (*)(void))images->ep; > + > + printf("## Transferring control to OpenRTOS (at address %08lx) ...\n", > + (ulong)entry_point); > + > + bootstage_mark(BOOTSTAGE_ID_RUN_OS); You might consider adding a prepare function here, similar to e.g. boot_prep_vxworks(images) which eventually calls cleanup_before_linux(), so you end up jumping into the image with caches flushed and disabled (at least on ARM). I don't know if this is needed in your case though... > + > + /* > + * OpenRTOS Parameters: > + * None > + */ > + (*entry_point)(); > + > + return 1; > +} > +#endif Regards, Jeroen
On Tue, Dec 16, 2014 at 02:07:21PM +0100, Marek Vasut wrote: > Add separate image type for the Wittenstein OpenRTOS . > > Signed-off-by: Marek Vasut <marex@denx.de> > Cc: Simon Glass <sjg@chromium.org> > Cc: Tom Rini <trini@ti.com> > Reviewed-by: Simon Glass <sjg@chromium.org> Applied to u-boot/master, thanks!
diff --git a/common/bootm_os.c b/common/bootm_os.c index 5be4467..72477f0 100644 --- a/common/bootm_os.c +++ b/common/bootm_os.c @@ -404,6 +404,32 @@ static int do_bootm_integrity(int flag, int argc, char * const argv[], } #endif +#ifdef CONFIG_BOOTM_OPENRTOS +static int do_bootm_openrtos(int flag, int argc, char * const argv[], + bootm_headers_t *images) +{ + void (*entry_point)(void); + + if (flag != BOOTM_STATE_OS_GO) + return 0; + + entry_point = (void (*)(void))images->ep; + + printf("## Transferring control to OpenRTOS (at address %08lx) ...\n", + (ulong)entry_point); + + bootstage_mark(BOOTSTAGE_ID_RUN_OS); + + /* + * OpenRTOS Parameters: + * None + */ + (*entry_point)(); + + return 1; +} +#endif + static boot_os_fn *boot_os[] = { [IH_OS_U_BOOT] = do_bootm_standalone, #ifdef CONFIG_BOOTM_LINUX @@ -434,6 +460,9 @@ static boot_os_fn *boot_os[] = { #ifdef CONFIG_INTEGRITY [IH_OS_INTEGRITY] = do_bootm_integrity, #endif +#ifdef CONFIG_BOOTM_OPENRTOS + [IH_OS_OPENRTOS] = do_bootm_openrtos, +#endif }; /* Allow for arch specific config before we boot */ diff --git a/common/image.c b/common/image.c index b75a5ce..64b4281 100644 --- a/common/image.c +++ b/common/image.c @@ -120,6 +120,10 @@ static const table_entry_t uimage_os[] = { { IH_OS_SOLARIS, "solaris", "Solaris", }, { IH_OS_SVR4, "svr4", "SVR4", }, #endif +#if defined(CONFIG_BOOTM_OPENRTOS) || defined(USE_HOSTCC) + { IH_OS_OPENRTOS, "openrtos", "OpenRTOS", }, +#endif + { -1, "", "", }, }; diff --git a/include/image.h b/include/image.h index af30d60..ee3afe3 100644 --- a/include/image.h +++ b/include/image.h @@ -152,6 +152,7 @@ struct lmb; #define IH_OS_INTEGRITY 21 /* INTEGRITY */ #define IH_OS_OSE 22 /* OSE */ #define IH_OS_PLAN9 23 /* Plan 9 */ +#define IH_OS_OPENRTOS 24 /* OpenRTOS */ /* * CPU Architecture Codes (supported by Linux)
Add separate image type for the Wittenstein OpenRTOS . Signed-off-by: Marek Vasut <marex@denx.de> Cc: Simon Glass <sjg@chromium.org> Cc: Tom Rini <trini@ti.com> --- common/bootm_os.c | 29 +++++++++++++++++++++++++++++ common/image.c | 4 ++++ include/image.h | 1 + 3 files changed, 34 insertions(+)