/* SPDX-License-Identifier: GPL-2.0 */ /* * LoongArch binary image header for EFI(PE/COFF) format. * * Author: Youling Tang * Copyright (C) 2025 KylinSoft Corporation. */ #ifndef __ASM_IMAGE_H #define __ASM_IMAGE_H #ifndef __ASSEMBLER__ /** * struct loongarch_image_header * * @dos_sig: Optional PE format 'MZ' signature. * @padding_1: Reserved. * @kernel_entry: Kernel image entry pointer. * @kernel_asize: An estimated size of the memory image size in LSB byte order. * @text_offset: The image load offset in LSB byte order. * @padding_2: Reserved. * @pe_header: Optional offset to a PE format header. **/ struct loongarch_image_header { uint8_t dos_sig[2]; uint16_t padding_1[3]; uint64_t kernel_entry; uint64_t kernel_asize; uint64_t text_offset; uint32_t padding_2[7]; uint32_t pe_header; }; /* * loongarch_header_check_dos_sig - Helper to check the header * * Returns true (non-zero) if 'MZ' signature is found. */ static inline int loongarch_header_check_dos_sig(const struct loongarch_image_header *h) { if (!h) return 0; return (h->dos_sig[0] == 'M' && h->dos_sig[1] == 'Z'); } #endif /* __ASSEMBLER__ */ #endif /* __ASM_IMAGE_H */