diff options
| author | Markus Klotzbuecher <mk@denx.de> | 2008-10-21 09:18:01 +0200 | 
|---|---|---|
| committer | Markus Klotzbuecher <mk@denx.de> | 2008-10-21 09:18:01 +0200 | 
| commit | 50bd0057ba8fceeb48533f8b1a652ccd0e170838 (patch) | |
| tree | ea1a183343573c2a48248923b96d316c0956727c /lib_sh/bootm.c | |
| parent | 9dbc366744960013965fce8851035b6141f3b3ae (diff) | |
| parent | f82642e33899766892499b163e60560fbbf87773 (diff) | |
| download | olio-uboot-2014.01-50bd0057ba8fceeb48533f8b1a652ccd0e170838.tar.xz olio-uboot-2014.01-50bd0057ba8fceeb48533f8b1a652ccd0e170838.zip | |
Merge git://git.denx.de/u-boot into x1
Conflicts:
	drivers/usb/usb_ohci.c
Diffstat (limited to 'lib_sh/bootm.c')
| -rw-r--r-- | lib_sh/bootm.c | 47 | 
1 files changed, 20 insertions, 27 deletions
| diff --git a/lib_sh/bootm.c b/lib_sh/bootm.c index bc1c3da9e..078a24dea 100644 --- a/lib_sh/bootm.c +++ b/lib_sh/bootm.c @@ -2,6 +2,9 @@   * (C) Copyright 2003   * Wolfgang Denk, DENX Software Engineering, wd@denx.de.   * + * (c) Copyright 2008 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> + * (c) Copyright 2008 Renesas Solutions Corp. + *   * See file CREDITS for list of people who contributed to this   * project.   * @@ -25,47 +28,37 @@  #include <command.h>  #include <asm/byteorder.h> -/* The SH kernel reads arguments from the empty zero page at location - * 0 at the start of SDRAM. The following are copied from - * arch/sh/kernel/setup.c and may require tweaking if the kernel sources - * change. - */ -#define PARAM	((unsigned char *)CFG_SDRAM_BASE + 0x1000) - -#define MOUNT_ROOT_RDONLY (*(unsigned long *) (PARAM+0x000)) -#define RAMDISK_FLAGS (*(unsigned long *) (PARAM+0x004)) -#define ORIG_ROOT_DEV (*(unsigned long *) (PARAM+0x008)) -#define LOADER_TYPE (*(unsigned long *) (PARAM+0x00c)) -#define INITRD_START (*(unsigned long *) (PARAM+0x010)) -#define INITRD_SIZE (*(unsigned long *) (PARAM+0x014)) -/* ... */ -#define COMMAND_LINE ((char *) (PARAM+0x100)) - -#define RAMDISK_IMAGE_START_MASK	0x07FF - -#ifdef CFG_DEBUG -static void hexdump (unsigned char *buf, int len) +#ifdef CONFIG_SYS_DEBUG +static void hexdump(unsigned char *buf, int len)  {  	int i;  	for (i = 0; i < len; i++) {  		if ((i % 16) == 0) -			printf ("%s%08x: ", i ? "\n" : "", (unsigned int) &buf[i]); -		printf ("%02x ", buf[i]); +			printf("%s%08x: ", i ? "\n" : "", +							(unsigned int)&buf[i]); +		printf("%02x ", buf[i]);  	} -	printf ("\n"); +	printf("\n");  }  #endif  int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)  { -	char	*bootargs = getenv("bootargs"); - +	/* Linux kernel load address */  	void (*kernel) (void) = (void (*)(void))images->ep; +	/* empty_zero_page */ +	unsigned char *param +		= (unsigned char *)image_get_load(images->legacy_hdr_os); +	/* Linux kernel command line */ +	char *cmdline = (char *)param + 0x100; +	/* PAGE_SIZE */ +	unsigned long size = images->ep - (unsigned long)param; +	char *bootargs = getenv("bootargs");  	/* Setup parameters */ -	memset(PARAM, 0, 0x1000);	/* Clear zero page */ -	strcpy(COMMAND_LINE, bootargs); +	memset(param, 0, size);	/* Clear zero page */ +	strcpy(cmdline, bootargs);  	kernel();  	/* does not return */ |