1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 2431889d6SLadislav Michl /* 3431889d6SLadislav Michl * Copyright (C) 2016 4431889d6SLadislav Michl * Ladislav Michl <ladis@linux-mips.org> 5431889d6SLadislav Michl * 6431889d6SLadislav Michl * bootz code: 7431889d6SLadislav Michl * Copyright (C) 2012 Marek Vasut <marek.vasut@gmail.com> 8431889d6SLadislav Michl */ 9431889d6SLadislav Michl #include <common.h> 10431889d6SLadislav Michl 11431889d6SLadislav Michl #define LINUX_ARM_ZIMAGE_MAGIC 0x016f2818 12431889d6SLadislav Michl 13431889d6SLadislav Michl struct arm_z_header { 14431889d6SLadislav Michl uint32_t code[9]; 15431889d6SLadislav Michl uint32_t zi_magic; 16431889d6SLadislav Michl uint32_t zi_start; 17431889d6SLadislav Michl uint32_t zi_end; 18431889d6SLadislav Michl } __attribute__ ((__packed__)); 19431889d6SLadislav Michl 20431889d6SLadislav Michl int bootz_setup(ulong image, ulong *start, ulong *end) 21431889d6SLadislav Michl { 22431889d6SLadislav Michl struct arm_z_header *zi = (struct arm_z_header *)image; 23431889d6SLadislav Michl 24431889d6SLadislav Michl if (zi->zi_magic != LINUX_ARM_ZIMAGE_MAGIC) { 25431889d6SLadislav Michl #ifndef CONFIG_SPL_FRAMEWORK 26431889d6SLadislav Michl puts("Bad Linux ARM zImage magic!\n"); 27431889d6SLadislav Michl #endif 28431889d6SLadislav Michl return 1; 29431889d6SLadislav Michl } 30431889d6SLadislav Michl 31431889d6SLadislav Michl *start = zi->zi_start; 32431889d6SLadislav Michl *end = zi->zi_end; 33431889d6SLadislav Michl #ifndef CONFIG_SPL_FRAMEWORK 34431889d6SLadislav Michl printf("Kernel image @ %#08lx [ %#08lx - %#08lx ]\n", 35431889d6SLadislav Michl image, *start, *end); 36431889d6SLadislav Michl #endif 37431889d6SLadislav Michl 38431889d6SLadislav Michl return 0; 39431889d6SLadislav Michl } 40