10f327f2aSAtish Patra /* SPDX-License-Identifier: GPL-2.0 */ 20f327f2aSAtish Patra 36b57ba8eSZong Li #ifndef _ASM_RISCV_IMAGE_H 46b57ba8eSZong Li #define _ASM_RISCV_IMAGE_H 50f327f2aSAtish Patra 6474efecbSPaul Walmsley #define RISCV_IMAGE_MAGIC "RISCV\0\0\0" 7474efecbSPaul Walmsley #define RISCV_IMAGE_MAGIC2 "RSC\x05" 80f327f2aSAtish Patra 90f327f2aSAtish Patra #define RISCV_IMAGE_FLAG_BE_SHIFT 0 100f327f2aSAtish Patra #define RISCV_IMAGE_FLAG_BE_MASK 0x1 110f327f2aSAtish Patra 120f327f2aSAtish Patra #define RISCV_IMAGE_FLAG_LE 0 130f327f2aSAtish Patra #define RISCV_IMAGE_FLAG_BE 1 140f327f2aSAtish Patra 150f327f2aSAtish Patra #ifdef CONFIG_CPU_BIG_ENDIAN 160f327f2aSAtish Patra #error conversion of header fields to LE not yet implemented 170f327f2aSAtish Patra #else 180f327f2aSAtish Patra #define __HEAD_FLAG_BE RISCV_IMAGE_FLAG_LE 190f327f2aSAtish Patra #endif 200f327f2aSAtish Patra 210f327f2aSAtish Patra #define __HEAD_FLAG(field) (__HEAD_FLAG_##field << \ 220f327f2aSAtish Patra RISCV_IMAGE_FLAG_##field##_SHIFT) 230f327f2aSAtish Patra 240f327f2aSAtish Patra #define __HEAD_FLAGS (__HEAD_FLAG(BE)) 250f327f2aSAtish Patra 260f327f2aSAtish Patra #define RISCV_HEADER_VERSION_MAJOR 0 27474efecbSPaul Walmsley #define RISCV_HEADER_VERSION_MINOR 2 280f327f2aSAtish Patra 290f327f2aSAtish Patra #define RISCV_HEADER_VERSION (RISCV_HEADER_VERSION_MAJOR << 16 | \ 300f327f2aSAtish Patra RISCV_HEADER_VERSION_MINOR) 310f327f2aSAtish Patra 320f327f2aSAtish Patra #ifndef __ASSEMBLY__ 330f327f2aSAtish Patra /** 340f327f2aSAtish Patra * struct riscv_image_header - riscv kernel image header 350f327f2aSAtish Patra * @code0: Executable code 360f327f2aSAtish Patra * @code1: Executable code 370f327f2aSAtish Patra * @text_offset: Image load offset (little endian) 380f327f2aSAtish Patra * @image_size: Effective Image size (little endian) 390f327f2aSAtish Patra * @flags: kernel flags (little endian) 400f327f2aSAtish Patra * @version: version 410f327f2aSAtish Patra * @res1: reserved 420f327f2aSAtish Patra * @res2: reserved 43474efecbSPaul Walmsley * @magic: Magic number (RISC-V specific; deprecated) 44474efecbSPaul Walmsley * @magic2: Magic number 2 (to match the ARM64 'magic' field pos) 45*1d5c17e4SAtish Patra * @res3: reserved (will be used for PE COFF offset) 460f327f2aSAtish Patra * 470f327f2aSAtish Patra * The intention is for this header format to be shared between multiple 480f327f2aSAtish Patra * architectures to avoid a proliferation of image header formats. 490f327f2aSAtish Patra */ 500f327f2aSAtish Patra 510f327f2aSAtish Patra struct riscv_image_header { 520f327f2aSAtish Patra u32 code0; 530f327f2aSAtish Patra u32 code1; 540f327f2aSAtish Patra u64 text_offset; 550f327f2aSAtish Patra u64 image_size; 560f327f2aSAtish Patra u64 flags; 570f327f2aSAtish Patra u32 version; 580f327f2aSAtish Patra u32 res1; 590f327f2aSAtish Patra u64 res2; 600f327f2aSAtish Patra u64 magic; 61474efecbSPaul Walmsley u32 magic2; 62*1d5c17e4SAtish Patra u32 res3; 630f327f2aSAtish Patra }; 640f327f2aSAtish Patra #endif /* __ASSEMBLY__ */ 656b57ba8eSZong Li #endif /* _ASM_RISCV_IMAGE_H */ 66