blob: 45e9c4506a97b9def389c595ed9f8fa0f405bc79 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Ladislav Michl9c743722016-07-12 20:28:14 +02002/*
3 * Copyright (C) 2016
4 * Ladislav Michl <ladis@linux-mips.org>
5 *
6 * bootz code:
7 * Copyright (C) 2012 Marek Vasut <marek.vasut@gmail.com>
Ladislav Michl9c743722016-07-12 20:28:14 +02008 */
9#include <common.h>
Simon Glass2dc9c342020-05-10 11:40:01 -060010#include <image.h>
Ladislav Michl9c743722016-07-12 20:28:14 +020011
12#define LINUX_ARM_ZIMAGE_MAGIC 0x016f2818
Christoph Fritz54e855f2019-05-03 13:19:49 +020013#define BAREBOX_IMAGE_MAGIC 0x00786f62
Ladislav Michl9c743722016-07-12 20:28:14 +020014
15struct arm_z_header {
16 uint32_t code[9];
17 uint32_t zi_magic;
18 uint32_t zi_start;
19 uint32_t zi_end;
20} __attribute__ ((__packed__));
21
22int bootz_setup(ulong image, ulong *start, ulong *end)
23{
24 struct arm_z_header *zi = (struct arm_z_header *)image;
25
Christoph Fritz54e855f2019-05-03 13:19:49 +020026 if (zi->zi_magic != LINUX_ARM_ZIMAGE_MAGIC &&
27 zi->zi_magic != BAREBOX_IMAGE_MAGIC) {
Samuel Holland3b2ae6a2021-04-17 09:34:37 -050028 if (!IS_ENABLED(CONFIG_SPL_BUILD))
29 puts("zimage: Bad magic!\n");
Ladislav Michl9c743722016-07-12 20:28:14 +020030 return 1;
31 }
32
33 *start = zi->zi_start;
34 *end = zi->zi_end;
Samuel Holland3b2ae6a2021-04-17 09:34:37 -050035 if (!IS_ENABLED(CONFIG_SPL_BUILD))
36 printf("Kernel image @ %#08lx [ %#08lx - %#08lx ]\n",
37 image, *start, *end);
Ladislav Michl9c743722016-07-12 20:28:14 +020038
39 return 0;
40}