1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * LoongArch binary image header for EFI(PE/COFF) format. 4 * 5 * Author: Youling Tang <tangyouling@kylinos.cn> 6 * Copyright (C) 2025 KylinSoft Corporation. 7 */ 8 9 #ifndef __ASM_IMAGE_H 10 #define __ASM_IMAGE_H 11 12 #ifndef __ASSEMBLER__ 13 14 /** 15 * struct loongarch_image_header 16 * 17 * @dos_sig: Optional PE format 'MZ' signature. 18 * @padding_1: Reserved. 19 * @kernel_entry: Kernel image entry pointer. 20 * @kernel_asize: An estimated size of the memory image size in LSB byte order. 21 * @text_offset: The image load offset in LSB byte order. 22 * @padding_2: Reserved. 23 * @pe_header: Optional offset to a PE format header. 24 **/ 25 26 struct loongarch_image_header { 27 uint8_t dos_sig[2]; 28 uint16_t padding_1[3]; 29 uint64_t kernel_entry; 30 uint64_t kernel_asize; 31 uint64_t text_offset; 32 uint32_t padding_2[7]; 33 uint32_t pe_header; 34 }; 35 36 /* 37 * loongarch_header_check_dos_sig - Helper to check the header 38 * 39 * Returns true (non-zero) if 'MZ' signature is found. 40 */ 41 loongarch_header_check_dos_sig(const struct loongarch_image_header * h)42static inline int loongarch_header_check_dos_sig(const struct loongarch_image_header *h) 43 { 44 if (!h) 45 return 0; 46 47 return (h->dos_sig[0] == 'M' && h->dos_sig[1] == 'Z'); 48 } 49 50 #endif /* __ASSEMBLER__ */ 51 52 #endif /* __ASM_IMAGE_H */ 53