/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2020 Western Digital Corporation or its affiliates.
 * Adapted from arch/arm64/kernel/efi-header.S
 */

#include <linux/pe.h>
#include <linux/sizes.h>
#include <asm/set_memory.h>

	.macro	__EFI_PE_HEADER
	.long	IMAGE_NT_SIGNATURE
coff_header:
#ifdef CONFIG_64BIT
	.short	IMAGE_FILE_MACHINE_RISCV64		// Machine
#else
	.short	IMAGE_FILE_MACHINE_RISCV32		// Machine
#endif
	.short	section_count				// NumberOfSections
	.long	0 					// TimeDateStamp
	.long	0					// PointerToSymbolTable
	.long	0					// NumberOfSymbols
	.short	section_table - optional_header		// SizeOfOptionalHeader
	.short	IMAGE_FILE_DEBUG_STRIPPED | \
		IMAGE_FILE_EXECUTABLE_IMAGE | \
		IMAGE_FILE_LINE_NUMS_STRIPPED		// Characteristics

optional_header:
#ifdef CONFIG_64BIT
	.short	IMAGE_NT_OPTIONAL_HDR64_MAGIC		// PE32+ format
#else
	.short	IMAGE_NT_OPTIONAL_HDR32_MAGIC		// PE32 format
#endif
	.byte	0x02					// MajorLinkerVersion
	.byte	0x14					// MinorLinkerVersion
	.long	__pecoff_text_end - efi_header_end	// SizeOfCode
#ifdef __clang__
	.long   __pecoff_data_virt_size			// SizeOfInitializedData
#else
	.long	__pecoff_data_virt_end - __pecoff_text_end	// SizeOfInitializedData
#endif
	.long	0					// SizeOfUninitializedData
	.long	__efistub_efi_pe_entry - _start		// AddressOfEntryPoint
	.long	efi_header_end - _start			// BaseOfCode
#ifdef CONFIG_32BIT
	.long  __pecoff_text_end - _start		// BaseOfData
#endif

extra_header_fields:
	.quad	0					// ImageBase
	.long	PECOFF_SECTION_ALIGNMENT		// SectionAlignment
	.long	PECOFF_FILE_ALIGNMENT			// FileAlignment
	.short	0					// MajorOperatingSystemVersion
	.short	0					// MinorOperatingSystemVersion
	.short	LINUX_EFISTUB_MAJOR_VERSION		// MajorImageVersion
	.short	LINUX_EFISTUB_MINOR_VERSION		// MinorImageVersion
	.short	0					// MajorSubsystemVersion
	.short	0					// MinorSubsystemVersion
	.long	0					// Win32VersionValue

	.long	_end - _start				// SizeOfImage

	// Everything before the kernel image is considered part of the header
	.long	efi_header_end - _start			// SizeOfHeaders
	.long	0					// CheckSum
	.short	IMAGE_SUBSYSTEM_EFI_APPLICATION		// Subsystem
	.short	IMAGE_DLLCHARACTERISTICS_NX_COMPAT	// DllCharacteristics
	.quad	0					// SizeOfStackReserve
	.quad	0					// SizeOfStackCommit
	.quad	0					// SizeOfHeapReserve
	.quad	0					// SizeOfHeapCommit
	.long	0					// LoaderFlags
	.long	(section_table - .) / 8			// NumberOfRvaAndSizes

	.quad	0					// ExportTable
	.quad	0					// ImportTable
	.quad	0					// ResourceTable
	.quad	0					// ExceptionTable
	.quad	0					// CertificationTable
	.quad	0					// BaseRelocationTable

	// Section table
section_table:
	.ascii	".text\0\0\0"
	.long	__pecoff_text_end - efi_header_end	// VirtualSize
	.long	efi_header_end - _start			// VirtualAddress
	.long	__pecoff_text_end - efi_header_end	// SizeOfRawData
	.long	efi_header_end - _start			// PointerToRawData

	.long	0					// PointerToRelocations
	.long	0					// PointerToLineNumbers
	.short	0					// NumberOfRelocations
	.short	0					// NumberOfLineNumbers
	.long	IMAGE_SCN_CNT_CODE | \
		IMAGE_SCN_MEM_READ | \
		IMAGE_SCN_MEM_EXECUTE			// Characteristics

	.ascii	".data\0\0\0"
#ifdef __clang__
	.long   __pecoff_data_virt_size			// VirtualSize
#else
	.long	__pecoff_data_virt_end - __pecoff_text_end	// VirtualSize
#endif
	.long	__pecoff_text_end - _start		// VirtualAddress
#ifdef __clang__
	.long   __pecoff_data_raw_size			// SizeOfRawData
#else
	.long	__pecoff_data_raw_end - __pecoff_text_end	// SizeOfRawData
#endif
	.long	__pecoff_text_end - _start		// PointerToRawData

	.long	0					// PointerToRelocations
	.long	0					// PointerToLineNumbers
	.short	0					// NumberOfRelocations
	.short	0					// NumberOfLineNumbers
	.long	IMAGE_SCN_CNT_INITIALIZED_DATA | \
		IMAGE_SCN_MEM_READ | \
		IMAGE_SCN_MEM_WRITE			// Characteristics

	.set	section_count, (. - section_table) / 40

	.balign	0x1000
efi_header_end:
	.endm
