Procházet zdrojové kódy

efi_loader: use predefined constants in crt0_*_efi.S

We should use predefined constants instead of magic numbers.

Move some constant definitions from include/pe.h to
include/asm-generic/pe.h.

Use these constants in crt0_*_efi.S.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Heinrich Schuchardt před 4 roky
rodič
revize
a35c33c0dc

+ 4 - 5
arch/arm/lib/crt0_aarch64_efi.S

@@ -17,14 +17,13 @@
 	 */
 	.globl	ImageBase
 ImageBase:
-	.ascii	"MZ"
+	.short	IMAGE_DOS_SIGNATURE		/* 'MZ' */
 	.skip	58				/* 'MZ' + pad + offset == 64 */
 	.long	pe_header - ImageBase		/* Offset to the PE header */
 pe_header:
-	.ascii	"PE"
-	.short	0
+	.long	IMAGE_NT_SIGNATURE		/* 'PE' */
 coff_header:
-	.short	0xaa64				/* AArch64 */
+	.short	IMAGE_FILE_MACHINE_ARM64	/* AArch64 */
 	.short	2				/* nr_sections */
 	.long	0				/* TimeDateStamp */
 	.long	0				/* PointerToSymbolTable */
@@ -36,7 +35,7 @@ coff_header:
 		 IMAGE_FILE_LOCAL_SYMS_STRIPPED | \
 		 IMAGE_FILE_DEBUG_STRIPPED)
 optional_header:
-	.short	0x20b				/* PE32+ format */
+	.short	IMAGE_NT_OPTIONAL_HDR64_MAGIC	/* PE32+ format */
 	.byte	0x02				/* MajorLinkerVersion */
 	.byte	0x14				/* MinorLinkerVersion */
 	.long	_edata - _start			/* SizeOfCode */

+ 4 - 5
arch/arm/lib/crt0_arm_efi.S

@@ -16,14 +16,13 @@
 	 */
 	.globl	image_base
 image_base:
-	.ascii	"MZ"
+	.short	IMAGE_DOS_SIGNATURE		/* 'MZ' */
 	.skip	58				/* 'MZ' + pad + offset == 64 */
 	.long	pe_header - image_base		/* Offset to the PE header */
 pe_header:
-	.ascii	"PE"
-	.short	0
+	.long	IMAGE_NT_SIGNATURE		/* 'PE' */
 coff_header:
-	.short	0x1c2				/* Mixed ARM/Thumb */
+	.short	IMAGE_FILE_MACHINE_THUMB	/* Mixed ARM/Thumb */
 	.short	2				/* nr_sections */
 	.long	0				/* TimeDateStamp */
 	.long	0				/* PointerToSymbolTable */
@@ -36,7 +35,7 @@ coff_header:
 		 IMAGE_FILE_32BIT_MACHINE | \
 		 IMAGE_FILE_DEBUG_STRIPPED)
 optional_header:
-	.short	0x10b				/* PE32 format */
+	.short	IMAGE_NT_OPTIONAL_HDR32_MAGIC	/* PE32 format */
 	.byte	0x02				/* MajorLinkerVersion */
 	.byte	0x14				/* MinorLinkerVersion */
 	.long	_edata - _start			/* SizeOfCode */

+ 5 - 6
arch/riscv/lib/crt0_riscv_efi.S

@@ -14,12 +14,12 @@
 #define SIZE_LONG	8
 #define SAVE_LONG(reg, idx)	sd	reg, (idx*SIZE_LONG)(sp)
 #define LOAD_LONG(reg, idx)	ld	reg, (idx*SIZE_LONG)(sp)
-#define PE_MACHINE	0x5064
+#define PE_MACHINE	IMAGE_FILE_MACHINE_RISCV64
 #else
 #define SIZE_LONG	4
 #define SAVE_LONG(reg, idx)	sw	reg, (idx*SIZE_LONG)(sp)
 #define LOAD_LONG(reg, idx)	lw	reg, (idx*SIZE_LONG)(sp)
-#define PE_MACHINE	0x5032
+#define PE_MACHINE	IMAGE_FILE_MACHINE_RISCV32
 #endif
 
 
@@ -30,12 +30,11 @@
 	 */
 	.globl	ImageBase
 ImageBase:
-	.ascii	"MZ"
+	.short	IMAGE_DOS_SIGNATURE		/* 'MZ' */
 	.skip	58				/* 'MZ' + pad + offset == 64 */
 	.long	pe_header - ImageBase		/* Offset to the PE header */
 pe_header:
-	.ascii	"PE"
-	.short	0
+	.long	IMAGE_NT_SIGNATURE		/* 'PE' */
 coff_header:
 	.short	PE_MACHINE			/* RISC-V 64/32-bit */
 	.short	2				/* nr_sections */
@@ -49,7 +48,7 @@ coff_header:
 		 IMAGE_FILE_LOCAL_SYMS_STRIPPED | \
 		 IMAGE_FILE_DEBUG_STRIPPED)
 optional_header:
-	.short	0x20b				/* PE32+ format */
+	.short	IMAGE_NT_OPTIONAL_HDR64_MAGIC	/* PE32+ format */
 	.byte	0x02				/* MajorLinkerVersion */
 	.byte	0x14				/* MinorLinkerVersion */
 	.long	_edata - _start			/* SizeOfCode */

+ 16 - 0
include/asm-generic/pe.h

@@ -29,6 +29,22 @@
 #define IMAGE_FILE_UP_SYSTEM_ONLY		0x4000
 #define IMAGE_FILE_BYTES_REVERSED_HI		0x8000
 
+/* Machine types */
+#define IMAGE_FILE_MACHINE_I386			0x014c
+#define IMAGE_FILE_MACHINE_ARM			0x01c0
+#define IMAGE_FILE_MACHINE_THUMB		0x01c2
+#define IMAGE_FILE_MACHINE_ARMNT		0x01c4
+#define IMAGE_FILE_MACHINE_AMD64		0x8664
+#define IMAGE_FILE_MACHINE_ARM64		0xaa64
+#define IMAGE_FILE_MACHINE_RISCV32		0x5032
+#define IMAGE_FILE_MACHINE_RISCV64		0x5064
+
+/* Header magic constants */
+#define IMAGE_NT_OPTIONAL_HDR32_MAGIC		0x010b
+#define IMAGE_NT_OPTIONAL_HDR64_MAGIC		0x020b
+#define IMAGE_DOS_SIGNATURE			0x5a4d     /* MZ   */
+#define IMAGE_NT_SIGNATURE			0x00004550 /* PE00 */
+
 /* Subsystem type */
 #define IMAGE_SUBSYSTEM_EFI_APPLICATION		10
 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER	11

+ 0 - 15
include/pe.h

@@ -34,21 +34,6 @@ typedef struct _IMAGE_DOS_HEADER {
 	uint32_t e_lfanew;	/* 3c: Offset to extended header */
 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
 
-#define IMAGE_DOS_SIGNATURE		0x5A4D     /* MZ   */
-#define IMAGE_NT_SIGNATURE		0x00004550 /* PE00 */
-
-#define IMAGE_FILE_MACHINE_I386		0x014c
-#define IMAGE_FILE_MACHINE_ARM		0x01c0
-#define IMAGE_FILE_MACHINE_THUMB	0x01c2
-#define IMAGE_FILE_MACHINE_ARMNT	0x01c4
-#define IMAGE_FILE_MACHINE_AMD64	0x8664
-#define IMAGE_FILE_MACHINE_ARM64	0xaa64
-#define IMAGE_FILE_MACHINE_RISCV32	0x5032
-#define IMAGE_FILE_MACHINE_RISCV64	0x5064
-
-#define IMAGE_NT_OPTIONAL_HDR32_MAGIC	0x10b
-#define IMAGE_NT_OPTIONAL_HDR64_MAGIC	0x20b
-
 typedef struct _IMAGE_FILE_HEADER {
 	uint16_t Machine;
 	uint16_t NumberOfSections;