From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCHv5 5/7] spl: zImage support in Falcon mode
Date: Thu, 21 Jan 2016 07:07:01 +0100 [thread overview]
Message-ID: <56A07585.1070508@denx.de> (raw)
In-Reply-To: <20160117031503.GF28493@localhost.localdomain>
Hello Ladislav,
Am 17.01.2016 um 04:15 schrieb Ladislav Michl:
> Other payload than uImage is currently considered to be raw U-Boot
> image. Check also for zImage in Falcon mode.
>
> Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
> ---
> arch/arm/lib/Makefile | 2 ++
> arch/arm/lib/bootm.c | 32 --------------------------------
> arch/arm/lib/zimage.c | 40 ++++++++++++++++++++++++++++++++++++++++
> common/spl/spl.c | 23 +++++++++++++++++++++++
> 4 files changed, 65 insertions(+), 32 deletions(-)
> create mode 100644 arch/arm/lib/zimage.c
Reviewed-by: Heiko Schocher <hs@denx.de>
bye,
Heiko
>
> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
> index f3db7b5..07a9019 100644
> --- a/arch/arm/lib/Makefile
> +++ b/arch/arm/lib/Makefile
> @@ -26,11 +26,13 @@ endif
> obj-$(CONFIG_CPU_V7M) += cmd_boot.o
> obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o
> obj-$(CONFIG_CMD_BOOTM) += bootm.o
> +obj-$(CONFIG_CMD_BOOTM) += zimage.o
> obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o
> obj-$(CONFIG_USE_ARCH_MEMSET) += memset.o
> obj-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o
> else
> obj-$(CONFIG_SPL_FRAMEWORK) += spl.o
> +obj-$(CONFIG_SPL_FRAMEWORK) += zimage.o
> endif
> obj-$(CONFIG_SEMIHOSTING) += semihosting.o
>
> diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
> index a477cae..fbfc0ad 100644
> --- a/arch/arm/lib/bootm.c
> +++ b/arch/arm/lib/bootm.c
> @@ -348,38 +348,6 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
> return 0;
> }
>
> -#ifdef CONFIG_CMD_BOOTZ
> -
> -struct zimage_header {
> - uint32_t code[9];
> - uint32_t zi_magic;
> - uint32_t zi_start;
> - uint32_t zi_end;
> -};
> -
> -#define LINUX_ARM_ZIMAGE_MAGIC 0x016f2818
> -
> -int bootz_setup(ulong image, ulong *start, ulong *end)
> -{
> - struct zimage_header *zi;
> -
> - zi = (struct zimage_header *)map_sysmem(image, 0);
> - if (zi->zi_magic != LINUX_ARM_ZIMAGE_MAGIC) {
> - puts("Bad Linux ARM zImage magic!\n");
> - return 1;
> - }
> -
> - *start = zi->zi_start;
> - *end = zi->zi_end;
> -
> - printf("Kernel image @ %#08lx [ %#08lx - %#08lx ]\n", image, *start,
> - *end);
> -
> - return 0;
> -}
> -
> -#endif /* CONFIG_CMD_BOOTZ */
> -
> #if defined(CONFIG_BOOTM_VXWORKS)
> void boot_prep_vxworks(bootm_headers_t *images)
> {
> diff --git a/arch/arm/lib/zimage.c b/arch/arm/lib/zimage.c
> new file mode 100644
> index 0000000..f870d72
> --- /dev/null
> +++ b/arch/arm/lib/zimage.c
> @@ -0,0 +1,40 @@
> +/*
> + * Copyright (C) 2016
> + * Ladislav Michl <ladis@linux-mips.org>
> + *
> + * bootz code:
> + * Copyright (C) 2012 Marek Vasut <marek.vasut@gmail.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +#include <common.h>
> +
> +#define LINUX_ARM_ZIMAGE_MAGIC 0x016f2818
> +
> +struct arm_z_header {
> + uint32_t code[9];
> + uint32_t zi_magic;
> + uint32_t zi_start;
> + uint32_t zi_end;
> +} __attribute__ ((__packed__));
> +
> +int bootz_setup(ulong image, ulong *start, ulong *end)
> +{
> + struct arm_z_header *zi = (struct arm_z_header *) image;
> +
> + if (zi->zi_magic != LINUX_ARM_ZIMAGE_MAGIC) {
> +#ifndef CONFIG_SPL_FRAMEWORK
> + puts("Bad Linux ARM zImage magic!\n");
> +#endif
> + return 1;
> + }
> +
> + *start = zi->zi_start;
> + *end = zi->zi_end;
> +#ifndef CONFIG_SPL_FRAMEWORK
> + printf("Kernel image @ %#08lx [ %#08lx - %#08lx ]\n", image, *start,
> + *end);
> +#endif
> +
> + return 0;
> +}
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index b945a48..7fd8e5d 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -52,6 +52,15 @@ __weak int spl_start_uboot(void)
> puts("SPL: Direct Linux boot not active!\n");
> return 1;
> }
> +
> +/*
> + * Weak default function for arch specific zImage check. Return zero
> + * and fill start and end address if image is recognized.
> + */
> +int __weak bootz_setup(ulong image, ulong *start, ulong *end)
> +{
> + return 1;
> +}
> #endif
>
> /*
> @@ -112,6 +121,20 @@ void spl_parse_image_header(const struct image_header *header)
> */
> panic("** no mkimage signature but raw image not supported");
> #else
> +#ifdef CONFIG_SPL_OS_BOOT
> + ulong start, end;
> +
> + if (!bootz_setup((ulong)header, &start, &end)) {
> + spl_image.name = "Linux";
> + spl_image.os = IH_OS_LINUX;
> + spl_image.load_addr = CONFIG_SYS_LOAD_ADDR;
> + spl_image.entry_point = CONFIG_SYS_LOAD_ADDR;
> + spl_image.size = end - start;
> + debug("spl: payload zImage, load addr: 0x%x size: %d\n",
> + spl_image.load_addr, spl_image.size);
> + return;
> + }
> +#endif
> /* Signature not found - assume u-boot.bin */
> debug("mkimage signature not found - ih_magic = %x\n",
> header->ih_magic);
>
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
next prev parent reply other threads:[~2016-01-21 6:07 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-17 3:09 [U-Boot] [PATCHv4 0/7] spl: Lightweight UBI and UBI fastmap support Ladislav Michl
2016-01-17 3:11 ` [U-Boot] [PATCHv4 1/7] mtd: Sort subsystem directories aplhabeticaly in Makefile Ladislav Michl
2016-01-21 6:04 ` Heiko Schocher
2016-01-17 3:12 ` [U-Boot] [PATCHv4 2/7] nand_spl_simple: Add a simple NAND read function Ladislav Michl
2016-01-21 6:05 ` Heiko Schocher
2016-01-17 3:13 ` [U-Boot] [PATCHv4 3/7] spl: Lightweight UBI and UBI fastmap support Ladislav Michl
2016-01-17 3:13 ` [U-Boot] [PATCHv4 4/7] spl: support loading from UBI volumes Ladislav Michl
2016-01-21 6:06 ` Heiko Schocher
2016-01-17 3:15 ` [U-Boot] [PATCHv5 5/7] spl: zImage support in Falcon mode Ladislav Michl
2016-01-21 6:07 ` Heiko Schocher [this message]
2016-01-17 3:16 ` [U-Boot] [PATCHv7 6/7] igep00x0: UBIize Ladislav Michl
2016-01-21 6:07 ` Heiko Schocher
2016-01-22 22:35 ` Enric Balletbo Serra
2016-01-24 13:44 ` Ladislav Michl
2016-01-25 6:39 ` Heiko Schocher
2016-01-25 7:26 ` Enric Balletbo Serra
2016-01-25 8:13 ` Heiko Schocher
2016-01-25 15:56 ` Ladislav Michl
2016-01-25 16:56 ` Enric Balletbo Serra
2016-04-13 5:19 ` Heiko Schocher
2016-04-13 11:39 ` Enric Balletbo Serra
2016-04-19 10:15 ` Enric Balletbo Serra
2016-06-04 20:48 ` [U-Boot] [RFC] runtime mtdparts_default; was: " Ladislav Michl
2016-01-25 15:13 ` [U-Boot] [PATCHv7 6/7] " Tom Rini
2016-01-25 15:35 ` Heiko Schocher
2016-01-17 3:16 ` [U-Boot] [PATCHv4 7/7] igep00x0: Falcon mode Ladislav Michl
2016-01-21 6:08 ` Heiko Schocher
2016-01-22 22:38 ` Enric Balletbo Serra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56A07585.1070508@denx.de \
--to=hs@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.