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 123871cf2..6f95d4fba 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 8b32f1cef..c3d62cb8c 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 1008925c7..dc2fcb193 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 13ba63b94..86ed58421 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 8bd0e64e3..615b2171c 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)  { |