Skip to content

Commit

Permalink
arm64: efi: replace open coded constants with symbolic ones
Browse files Browse the repository at this point in the history
Replace open coded constants with symbolic ones throughout the
Image and the EFI headers. No binary level changes are intended.

Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
  • Loading branch information
Ard Biesheuvel authored and Catalin Marinas committed Apr 4, 2017
1 parent effc7b0 commit f1eb542
Showing 1 changed file with 21 additions and 17 deletions.
38 changes: 21 additions & 17 deletions arch/arm64/kernel/efi-header.S
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,24 @@
* published by the Free Software Foundation.
*/

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

.macro __EFI_PE_HEADER
.ascii "PE"
.short 0
.long PE_MAGIC
coff_header:
.short 0xaa64 // AArch64
.short 1 // nr_sections
.short IMAGE_FILE_MACHINE_ARM64 // Machine
.short section_count // NumberOfSections
.long 0 // TimeDateStamp
.long 0 // PointerToSymbolTable
.long 0 // NumberOfSymbols
.short section_table - optional_header // SizeOfOptionalHeader
.short 0x206 // Characteristics.
// IMAGE_FILE_DEBUG_STRIPPED |
// IMAGE_FILE_EXECUTABLE_IMAGE |
// IMAGE_FILE_LINE_NUMS_STRIPPED
.short IMAGE_FILE_DEBUG_STRIPPED | \
IMAGE_FILE_EXECUTABLE_IMAGE | \
IMAGE_FILE_LINE_NUMS_STRIPPED // Characteristics

optional_header:
.short 0x20b // PE32+ format
.short PE_OPT_MAGIC_PE32PLUS // PE32+ format
.byte 0x02 // MajorLinkerVersion
.byte 0x14 // MinorLinkerVersion
.long _end - efi_header_end // SizeOfCode
Expand All @@ -33,7 +35,7 @@ optional_header:

extra_header_fields:
.quad 0 // ImageBase
.long 0x1000 // SectionAlignment
.long SZ_4K // SectionAlignment
.long PECOFF_FILE_ALIGNMENT // FileAlignment
.short 0 // MajorOperatingSystemVersion
.short 0 // MinorOperatingSystemVersion
Expand All @@ -48,7 +50,7 @@ extra_header_fields:
// Everything before the kernel image is considered part of the header
.long efi_header_end - _head // SizeOfHeaders
.long 0 // CheckSum
.short 0xa // Subsystem (EFI application)
.short IMAGE_SUBSYSTEM_EFI_APPLICATION // Subsystem
.short 0 // DllCharacteristics
.quad 0 // SizeOfStackReserve
.quad 0 // SizeOfStackCommit
Expand All @@ -71,10 +73,7 @@ extra_header_fields:

// Section table
section_table:
.ascii ".text"
.byte 0
.byte 0
.byte 0 // end of 0 padding of section name
.ascii ".text\0\0\0"
.long _end - efi_header_end // VirtualSize
.long efi_header_end - _head // VirtualAddress
.long _edata - efi_header_end // SizeOfRawData
Expand All @@ -84,7 +83,12 @@ section_table:
.long 0 // PointerToLineNumbers
.short 0 // NumberOfRelocations
.short 0 // NumberOfLineNumbers
.long 0xe0000020 // Characteristics
.long IMAGE_SCN_CNT_CODE | \
IMAGE_SCN_MEM_EXECUTE | \
IMAGE_SCN_MEM_READ | \
IMAGE_SCN_MEM_WRITE // Characteristics

.set section_count, (. - section_table) / 40

#ifdef CONFIG_DEBUG_EFI
/*
Expand All @@ -106,7 +110,7 @@ efi_debug_table:
.long 0 // TimeDateStamp
.short 0 // MajorVersion
.short 0 // MinorVersion
.long 2 // Type == EFI_IMAGE_DEBUG_TYPE_CODEVIEW
.long IMAGE_DEBUG_TYPE_CODEVIEW // Type
.long efi_debug_entry_size // SizeOfData
.long 0 // RVA
.long efi_debug_entry - _head // FileOffset
Expand Down

0 comments on commit f1eb542

Please sign in to comment.