| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * LoongArch binary image header for EFI(PE/COFF) format.
- *
- * Author: Youling Tang <tangyouling@kylinos.cn>
- * 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 */
|