diff options
| author | Wolfgang Denk <wd@denx.de> | 2011-12-02 00:17:49 +0100 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2011-12-02 00:17:49 +0100 | 
| commit | 7708d8b352e9e595f6f08afd3206af6495c7dc09 (patch) | |
| tree | fb9811040b2b1f55c44fc7274473f2ef0847c19b /common/cmd_bootm.c | |
| parent | d887ad54ca74063338bc3108beed0aa4f15d1f6b (diff) | |
| parent | f008b17f8c2995996b5d100b71f8851d6f74a136 (diff) | |
| download | olio-uboot-2014.01-7708d8b352e9e595f6f08afd3206af6495c7dc09.tar.xz olio-uboot-2014.01-7708d8b352e9e595f6f08afd3206af6495c7dc09.zip | |
Merge branch 'master' of ssh://gemini/home/wd/git/u-boot/master
* 'master' of ssh://gemini/home/wd/git/u-boot/master:
  board/emk/top860/top860.c: Fix GCC 4.6 build warning
  board/sbc405/strataflash.c: Fix GCC 4.6 build warning
  arch/powerpc/cpu/mpc86xx/cpu.c: Fix GCC 4.6 build warning
  board/freescale/mpc8610hpcd/mpc8610hpcd.c: Fix GCC 4.6 build warning
  board/mpl/common/flash.c: Fix GCC 4.6 build warning
  post/board/lwmon5/gdc.c: Fix GCC 4.6 build warning
  drivers/usb/host/sl811-hcd.c: Fix GCC 4.6 build warning
  board/sandburst/common/flash.c: Fix GCC 4.6 build warning
  DB64460: Fix GCC 4.6 build warnings
  DB64360: Fix GCC 4.6 build warnings
  board/cray/L1/flash.c: Fix GCC 4.6 build warning
  drivers/block/sata_dwc.c: Fix GCC 4.6 build warning
  board/amirix/ap1000/flash.c: Fix GCC 4.6 build warning
  alpr board: Fix GCC 4.6 build warnings
  image: Don't detect XIP images as overlapping.
  image: Implement IH_TYPE_KERNEL_NOLOAD
  ppc4xx: Add Io64 board support
  ppc4xx: fix PMC440 painit command
  ppc4xx: remove invalid access to PCI_BRDGOPT2 register
  ppc4xx: use CONFIG_PCI_BOOTDELAY instead of private implementation
  mpc85xx: support for Freescale COM Express P2020
  arch/powerpc/cpu/mpc8xxx/ddr/interactive.c: Fix GCC 4.6 build warning
  mpc85xx: support board-specific reset function
  powerpc/85xx: verify the localbus device tree address before booting the OS
  mpc8xxx: update module_type values from JEDEC DDR3 SPD Specification
  powerpc/p3060qds: Add board related support for P3060QDS platform
  powerpc/85xx: clean up and document the QE/FMAN microcode macros
  powerpc/85xx: always implement the work-around for Erratum SATA_A001
  powerpc/85xx: CONFIG_FSL_SATA_V2 should be defined in config_mpc85xx.h
  powerpc/85xx: Add workaround for erratum A-003474
  powerpc/85xx: fixup flexcan device tree clock-frequency
  powerpc/85xx: Add workaround for erratum CPU-A003999
  x86: Fix some bugs in the i8402 driver when no controller is present
  x86: Make the i8042 driver checkpatch clean
  x86: Wrap small helper functions from libgcc to avoid an ABI mismatch
  x86: Import the glibc memset implementation
  x86: Fix a few recently added bugs
  x86: Don't relocate symbols which point to things that aren't relocated
  x86: Fix how the location of the realmode and bios blobs are calculated
  x86: Misc cleanups
  x86: Misc PCI touchups
  x86: Ensure IDT and GDT remain 16-byte aligned post relocation
  x86: Provide more configuration granularity
  x86: Add multiboot header
  sc520: Create arch asm-offsets
  x86: Punt cold- and warm-boot flags
  cosmetic: checkpatch cleanup of board/eNET/*.c
  cosmetic: checkpatch cleanup of arch/x86/lib/*.c
  cosmetic: checkpatch cleanup of arch/x86/cpu/sc520/*.c
  cosmetic: checkpatch cleanup of arch/x86/cpu/*.c
  x86: Call hang() on unrecoverable exception
  menu.c: use puts() instead of printf() where possible
  MAKEALL: drop obsolete mx31pdk_nand target
  dataflash: fix parameters order in write_dataflash()
  hawkboard: Replace HAWKBOARD_KICK{0, 1}_UNLOCK defines
  davinci_sonata: define CONFIG_MACH_TYPE for davinci_sonata board
  davinci_schmoogie: define CONFIG_MACH_TYPE for davinci_schmoogie board
  arm: a320evb: define mach-type in board config file
  OMAP3: Use sdelay from arch/arm/cpu/armv7/syslib.c instead of cloning that.
  Fix Stelian's email address
  DIU: 1080P and 720P support
  CFB: Fix font rendering on mx5 framebuffer
Diffstat (limited to 'common/cmd_bootm.c')
| -rw-r--r-- | common/cmd_bootm.c | 14 | 
1 files changed, 12 insertions, 2 deletions
| diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index b073f095b..d5745b14e 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -272,7 +272,13 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]  		return 1;  	} +	if (images.os.type == IH_TYPE_KERNEL_NOLOAD) { +		images.os.load = images.os.image_start; +		images.ep += images.os.load; +	} +  	if (((images.os.type == IH_TYPE_KERNEL) || +	     (images.os.type == IH_TYPE_KERNEL_NOLOAD) ||  	     (images.os.type == IH_TYPE_MULTI)) &&  	    (images.os.os == IH_OS_LINUX)) {  		/* find ramdisk */ @@ -314,6 +320,7 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)  	ulong image_start = os.image_start;  	ulong image_len = os.image_len;  	__maybe_unused uint unc_len = CONFIG_SYS_BOOTM_LEN; +	int no_overlap = 0;  #if defined(CONFIG_LZMA) || defined(CONFIG_LZO)  	int ret;  #endif /* defined(CONFIG_LZMA) || defined(CONFIG_LZO) */ @@ -324,6 +331,7 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)  	case IH_COMP_NONE:  		if (load == blob_start || load == image_start) {  			printf("   XIP %s ... ", type_name); +			no_overlap = 1;  		} else {  			printf("   Loading %s ... ", type_name);  			memmove_wd((void *)load, (void *)image_start, @@ -418,7 +426,7 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)  	if (boot_progress)  		show_boot_progress(7); -	if ((load < blob_end) && (*load_end > blob_start)) { +	if (!no_overlap && (load < blob_end) && (*load_end > blob_start)) {  		debug("images.os.start = 0x%lX, images.os.end = 0x%lx\n",  			blob_start, blob_end);  		debug("images.os.load = 0x%lx, load_end = 0x%lx\n", load, @@ -796,7 +804,8 @@ static int fit_check_kernel(const void *fit, int os_noffset, int verify)  	}  	show_boot_progress(106); -	if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL)) { +	if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL) && +	    !fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL_NOLOAD)) {  		puts("Not a kernel image\n");  		show_boot_progress(-106);  		return 0; @@ -874,6 +883,7 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,  		/* get os_data and os_len */  		switch (image_get_type(hdr)) {  		case IH_TYPE_KERNEL: +		case IH_TYPE_KERNEL_NOLOAD:  			*os_data = image_get_data(hdr);  			*os_len = image_get_data_size(hdr);  			break; |