diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/Makefile | 2 | ||||
-rw-r--r-- | common/cmd_bootm.c | 31 | ||||
-rw-r--r-- | common/command.c | 2 | ||||
-rw-r--r-- | common/console.c | 9 | ||||
-rw-r--r-- | common/devices.c | 5 |
5 files changed, 46 insertions, 3 deletions
diff --git a/common/Makefile b/common/Makefile index 123871c..6f95d4f 100644 --- a/common/Makefile +++ b/common/Makefile @@ -28,7 +28,7 @@ LIB = libcommon.a AOBJS = COBJS = main.o altera.o bedbug.o \ - cmd_autoscript.o cmd_bedbug.o cmd_boot.o \ + cmd_autoscript.o cmd_bedbug.o cmd_bmp.o cmd_boot.o \ cmd_bootm.o cmd_cache.o cmd_console.o cmd_date.o \ cmd_dcr.o cmd_diag.o cmd_doc.o cmd_nand.o cmd_dtt.o \ cmd_eeprom.o cmd_elf.o cmd_fdc.o cmd_fdos.o cmd_flash.o \ diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index 8b32f1c..c3d62cb 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -98,6 +98,7 @@ static boot_os_Fcn do_bootm_linux; extern boot_os_Fcn do_bootm_linux; #endif static boot_os_Fcn do_bootm_netbsd; +static boot_os_Fcn do_bootm_rtems; #if (CONFIG_COMMANDS & CFG_CMD_ELF) static boot_os_Fcn do_bootm_vxworks; static boot_os_Fcn do_bootm_qnxelf; @@ -321,6 +322,12 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) do_bootm_netbsd (cmdtp, flag, argc, argv, addr, len_ptr, verify); break; + + case IH_OS_RTEMS: + do_bootm_rtems (cmdtp, flag, argc, argv, + addr, len_ptr, verify); + break; + #if (CONFIG_COMMANDS & CFG_CMD_ELF) case IH_OS_VXWORKS: do_bootm_vxworks (cmdtp, flag, argc, argv, @@ -831,6 +838,7 @@ print_type (image_header_t *hdr) case IH_OS_VXWORKS: os = "VxWorks"; break; case IH_OS_QNX: os = "QNX"; break; case IH_OS_U_BOOT: os = "U-Boot"; break; + case IH_OS_RTEMS: os = "RTEMS"; break; default: os = "Unknown OS"; break; } @@ -953,6 +961,29 @@ int gunzip(void *dst, int dstlen, unsigned char *src, int *lenp) return (0); } +static void +do_bootm_rtems (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], + ulong addr, ulong *len_ptr, int verify) +{ + DECLARE_GLOBAL_DATA_PTR; + image_header_t *hdr = &header; + void (*entry_point)(bd_t *); + + entry_point = (void (*)(bd_t *)) hdr->ih_ep; + + printf ("## Transferring control to RTEMS (at address %08lx) ...\n", + (ulong)entry_point); + + SHOW_BOOT_PROGRESS (15); + + /* + * RTEMS Parameters: + * r3: ptr to board info data + */ + + (*entry_point ) ( gd->bd ); +} + #if (CONFIG_COMMANDS & CFG_CMD_ELF) static void do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], diff --git a/common/command.c b/common/command.c index 1008925..dc2fcb1 100644 --- a/common/command.c +++ b/common/command.c @@ -72,6 +72,7 @@ #include <cmd_vfd.h> /* load a bitmap to the VFDs on TRAB */ #include <cmd_log.h> #include <cmd_fdos.h> +#include <cmd_bmp.h> #ifdef CONFIG_AMIGAONEG3SE #include <cmd_menu.h> @@ -231,6 +232,7 @@ cmd_tbl_t cmd_tbl[] = { CMD_TBL_AUTOSCRIPT CMD_TBL_BASE CMD_TBL_BDINFO + CMD_TBL_BMP #ifdef CONFIG_AMIGAONEG3SE CMD_TBL_BOOTA #endif diff --git a/common/console.c b/common/console.c index 13ba63b..86ed584 100644 --- a/common/console.c +++ b/common/console.c @@ -355,7 +355,7 @@ int console_init_f (void) return (0); } -#ifdef CFG_CONSOLE_IS_IN_ENV +#if defined(CFG_CONSOLE_IS_IN_ENV) || defined(CONFIG_SPLASH_SCREEN) /* search a device */ device_t *search_device (int flags, char *name) { @@ -374,7 +374,7 @@ device_t *search_device (int flags, char *name) } return dev; } -#endif /* CFG_CONSOLE_IS_IN_ENV */ +#endif /* CFG_CONSOLE_IS_IN_ENV || CONFIG_SPLASH_SCREEN */ #ifdef CFG_CONSOLE_IS_IN_ENV /* Called after the relocation - use desired console functions */ @@ -469,6 +469,11 @@ int console_init_r (void) device_t *inputdev = NULL, *outputdev = NULL; int i, items = ListNumItems (devlist); +#ifdef CONFIG_SPLASH_SCREEN + /* suppress all output if splash screen is enabled */ + outputdev = search_device (DEV_FLAGS_OUTPUT, "nulldev"); +#endif + /* Scan devices looking for input and output devices */ for (i = 1; (i <= items) && ((inputdev == NULL) || (outputdev == NULL)); diff --git a/common/devices.c b/common/devices.c index 8bd0e64..615b217 100644 --- a/common/devices.c +++ b/common/devices.c @@ -37,6 +37,11 @@ list_t devlist = 0; device_t *stdio_devices[] = { NULL, NULL, NULL }; char *stdio_names[MAX_FILES] = { "stdin", "stdout", "stderr" }; +#if defined(CONFIG_SPLASH_SCREEN) && !defined(CFG_DEVICE_NULLDEV) +#define CFG_DEVICE_NULLDEV 1 +#endif + + #ifdef CFG_DEVICE_NULLDEV void nulldev_putc(const char c) { |