/*
 * This file is part of the coreboot project.
 *
 * Copyright (C) 2013 Google, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 2 of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 */

#define DOS_MAGIC 0x5a4d
typedef struct {
	 uint16_t signature;
	 uint16_t lastsize;
	 uint16_t nblocks;
	 uint16_t nreloc;
	 uint16_t hdrsize;
	 uint16_t minalloc;
	 uint16_t maxalloc;
	 uint16_t ss;
	 uint16_t sp;
	 uint16_t checksum;
	 uint16_t ip;
	 uint16_t cs;
	 uint16_t relocpos;
	 uint16_t noverlay;
	 uint16_t reserved1[4];
	 uint16_t oem_id;
	 uint16_t oem_info;
	 uint16_t reserved2[10];
	 uint32_t e_lfanew;
} dos_header_t;

#define MACHINE_TYPE_X86 0x014c
#define MACHINE_TYPE_X64 0x8664
typedef struct {
	uint8_t  signature[4];
	uint16_t machine;
	uint16_t num_sections;
	uint32_t timestamp;
	uint32_t symboltable;
	uint32_t num_symbols;
	uint16_t opt_header_size;
	uint16_t characteristics;
} coff_header_t;

#define PE_HDR_32_MAGIC 0x10b
typedef struct {
	uint16_t signature;
	uint8_t  major_linker_version;
	uint8_t  minor_linker_version;
	uint32_t code_size;
	uint32_t data_size;
	uint32_t bss_size;
	uint32_t entry_point;
	uint32_t code_offset;
	uint32_t data_offset;
	uint32_t image_addr;
	uint32_t section_alignment;
	uint32_t file_alignment;
	uint16_t major_os_version;
	uint16_t minor_os_version;
	uint16_t major_image_version;
	uint16_t minor_image_version;
	uint16_t major_subsystem_version;
	uint16_t minor_subsystem_version;
	uint32_t reserved;
	uint32_t image_size;
	uint32_t header_size;
	uint32_t checksum;
	uint16_t subsystem;
	uint16_t characteristics;
	uint32_t stack_reserve_size;
	uint32_t stack_commit_size;
	uint32_t heap_reserve_size;
	uint32_t heap_commit_size;
	uint32_t loader_flags;
	uint32_t number_of_va_and_sizes;
	/* data directory not needed */
} pe_opt_header_32_t;

#define PE_HDR_64_MAGIC 0x20b
typedef struct {
	uint16_t signature;
	uint8_t  major_linker_version;
	uint8_t  minor_linker_version;
	uint32_t code_size;
	uint32_t data_size;
	uint32_t bss_size;
	uint32_t entry_point;
	uint32_t code_offset;
	uint64_t image_addr;
	uint32_t section_alignment;
	uint32_t file_alignment;
	uint16_t major_os_version;
	uint16_t minor_os_version;
	uint16_t major_image_version;
	uint16_t minor_image_version;
	uint16_t major_subsystem_version;
	uint16_t minor_subsystem_version;
	uint32_t reserved;
	uint32_t image_size;
	uint32_t header_size;
	uint32_t checksum;
	uint16_t subsystem;
	uint16_t characteristics;
	uint64_t stack_reserve_size;
	uint64_t stack_commit_size;
	uint64_t heap_reserve_size;
	uint64_t heap_commit_size;
	uint32_t loader_flags;
	uint32_t number_of_va_and_sizes;
	/* data directory not needed */
} pe_opt_header_64_t;

