[coreboot-gerrit] New patch to review for coreboot: 7c1f9a9 Drop ELF remains from boot code

Gabe Black (gabeblack@chromium.org) gerrit at coreboot.org
Tue Jul 9 05:29:08 CEST 2013


Gabe Black (gabeblack at chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3660

-gerrit

commit 7c1f9a906ef62564eb348264f362cf6b07216f7d
Author: Stefan Reinauer <reinauer at chromium.org>
Date:   Fri May 24 15:09:36 2013 -0700

    Drop ELF remains from boot code
    
    This stuff is not used, so let's drop it.
    
    Change-Id: I671a5e87855b4c59622cafacdefe466ab3d70143
    Signed-off-by: Stefan Reinauer <reinauer at chromium.org>
    Signed-off-by: Gabe Black <gabeblack at chromium.org>
---
 src/arch/armv7/boot.c                | 202 ++----------------
 src/arch/armv7/include/arch/stages.h |   1 +
 src/arch/armv7/stages.c              |   6 +-
 src/arch/x86/boot/boot.c             |  84 +-------
 src/arch/x86/include/arch/stages.h   |   1 +
 src/include/boot/elf.h               | 403 -----------------------------------
 src/include/boot/elf_boot.h          |  89 --------
 src/lib/hardwaremain.c               |   1 -
 src/lib/selfboot.c                   |   3 +-
 9 files changed, 29 insertions(+), 761 deletions(-)

diff --git a/src/arch/armv7/boot.c b/src/arch/armv7/boot.c
index ab531be..6774802 100644
--- a/src/arch/armv7/boot.c
+++ b/src/arch/armv7/boot.c
@@ -1,189 +1,27 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 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
+ */
+
 #include <console/console.h>
-#include <ip_checksum.h>
-#include <boot/elf.h>
-#include <boot/elf_boot.h>
-#include <string.h>
-#include <cpu/x86/multiboot.h>
 #include <arch/stages.h>
 
-
-#ifndef CMD_LINE
-#define CMD_LINE ""
-#endif
-
-
-
-#define UPSZ(X) ((sizeof(X) + 3) &~3)
-
-static struct {
-	Elf_Bhdr hdr;
-	Elf_Nhdr ft_hdr;
-	unsigned char ft_desc[UPSZ(FIRMWARE_TYPE)];
-	Elf_Nhdr bl_hdr;
-	unsigned char bl_desc[UPSZ(BOOTLOADER)];
-	Elf_Nhdr blv_hdr;
-	unsigned char blv_desc[UPSZ(BOOTLOADER_VERSION)];
-	Elf_Nhdr cmd_hdr;
-	unsigned char cmd_desc[UPSZ(CMD_LINE)];
-} elf_boot_notes = {
-	.hdr = {
-		.b_signature = 0x0E1FB007,
-		.b_size = sizeof(elf_boot_notes),
-		.b_checksum = 0,
-		.b_records = 4,
-	},
-	.ft_hdr = {
-		.n_namesz = 0,
-		.n_descsz = sizeof(FIRMWARE_TYPE),
-		.n_type = EBN_FIRMWARE_TYPE,
-	},
-	.ft_desc = FIRMWARE_TYPE,
-	.bl_hdr = {
-		.n_namesz = 0,
-		.n_descsz = sizeof(BOOTLOADER),
-		.n_type = EBN_BOOTLOADER_NAME,
-	},
-	.bl_desc = BOOTLOADER,
-	.blv_hdr = {
-		.n_namesz = 0,
-		.n_descsz = sizeof(BOOTLOADER_VERSION),
-		.n_type = EBN_BOOTLOADER_VERSION,
-	},
-	.blv_desc = BOOTLOADER_VERSION,
-	.cmd_hdr = {
-		.n_namesz = 0,
-		.n_descsz = sizeof(CMD_LINE),
-		.n_type = EBN_COMMAND_LINE,
-	},
-	.cmd_desc = CMD_LINE,
-};
-
-
-int elf_check_arch(Elf_ehdr *ehdr)
-{
-	return (
-		((ehdr->e_machine == EM_386) ||	(ehdr->e_machine == EM_486)) &&
-		(ehdr->e_ident[EI_CLASS] == ELFCLASS32) &&
-		(ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
-		);
-
-}
-
 void jmp_to_elf_entry(void *entry, unsigned long buffer, unsigned long size)
 {
-	extern unsigned char _ram_seg, _eram_seg;
-	unsigned long lb_start, lb_size;
-	unsigned long adjust, adjusted_boot_notes;
-
-	elf_boot_notes.hdr.b_checksum =
-		compute_ip_checksum(&elf_boot_notes, sizeof(elf_boot_notes));
-
-	lb_start = (unsigned long)&_ram_seg;
-	lb_size = (unsigned long)(&_eram_seg - &_ram_seg);
-	adjust = buffer +  size - lb_start;
-
-	adjusted_boot_notes = (unsigned long)&elf_boot_notes;
-	adjusted_boot_notes += adjust;
-
-	printk(BIOS_SPEW, "entry    = 0x%08lx\n", (unsigned long)entry);
-	printk(BIOS_SPEW, "lb_start = 0x%08lx\n", lb_start);
-	printk(BIOS_SPEW, "lb_size  = 0x%08lx\n", lb_size);
-	printk(BIOS_SPEW, "adjust   = 0x%08lx\n", adjust);
-	printk(BIOS_SPEW, "buffer   = 0x%08lx\n", buffer);
-	printk(BIOS_SPEW, "     elf_boot_notes = 0x%08lx\n", (unsigned long)&elf_boot_notes);
-	printk(BIOS_SPEW, "adjusted_boot_notes = 0x%08lx\n", adjusted_boot_notes);
-
+	printk(BIOS_SPEW, "entry    = %p\n", entry);
 	stage_exit(entry);
-#if 0
-	/* FIXME: do we need any of this? */
-	/* Jump to kernel */
-	__asm__ __volatile__(
-		"	cld	\n\t"
-		/* Save the callee save registers... */
-		"	pushl	%%esi\n\t"
-		"	pushl	%%edi\n\t"
-		"	pushl	%%ebx\n\t"
-		/* Save the parameters I was passed */
-		"	pushl	$0\n\t" /* 20 adjust */
-	        "	pushl	%0\n\t" /* 16 lb_start */
-		"	pushl	%1\n\t" /* 12 buffer */
-		"	pushl	%2\n\t" /*  8 lb_size */
-		"	pushl	%3\n\t" /*  4 entry */
-		"	pushl	%4\n\t" /*  0 elf_boot_notes */
-		/* Compute the adjustment */
-		"	xorl	%%eax, %%eax\n\t"
-		"	subl	16(%%esp), %%eax\n\t"
-		"	addl	12(%%esp), %%eax\n\t"
-		"	addl	 8(%%esp), %%eax\n\t"
-		"	movl	%%eax, 20(%%esp)\n\t"
-		/* Place a copy of coreboot in its new location */
-		/* Move ``longs'' the coreboot size is 4 byte aligned */
-		"	movl	12(%%esp), %%edi\n\t"
-		"	addl	 8(%%esp), %%edi\n\t"
-		"	movl	16(%%esp), %%esi\n\t"
-		"	movl	 8(%%esp), %%ecx\n\n"
-		"	shrl	$2, %%ecx\n\t"
-		"	rep	movsl\n\t"
-
-		/* Adjust the stack pointer to point into the new coreboot image */
-		"	addl	20(%%esp), %%esp\n\t"
-		/* Adjust the instruction pointer to point into the new coreboot image */
-		"	movl	$1f, %%eax\n\t"
-		"	addl	20(%%esp), %%eax\n\t"
-		"	jmp	*%%eax\n\t"
-		"1:	\n\t"
-
-		/* Copy the coreboot bounce buffer over coreboot */
-		/* Move ``longs'' the coreboot size is 4 byte aligned */
-		"	movl	16(%%esp), %%edi\n\t"
-		"	movl	12(%%esp), %%esi\n\t"
-		"	movl	 8(%%esp), %%ecx\n\t"
-		"	shrl	$2, %%ecx\n\t"
-		"	rep	movsl\n\t"
-
-		/* Now jump to the loaded image */
-		"	movl	%5, %%eax\n\t"
-		"	movl	 0(%%esp), %%ebx\n\t"
-		"	call	*4(%%esp)\n\t"
-
-		/* The loaded image returned? */
-		"	cli	\n\t"
-		"	cld	\n\t"
-
-		/* Copy the saved copy of coreboot where coreboot runs */
-		/* Move ``longs'' the coreboot size is 4 byte aligned */
-		"	movl	16(%%esp), %%edi\n\t"
-		"	movl	12(%%esp), %%esi\n\t"
-		"	addl	 8(%%esp), %%esi\n\t"
-		"	movl	 8(%%esp), %%ecx\n\t"
-		"	shrl	$2, %%ecx\n\t"
-		"	rep	movsl\n\t"
-
-		/* Adjust the stack pointer to point into the old coreboot image */
-		"	subl	20(%%esp), %%esp\n\t"
-
-		/* Adjust the instruction pointer to point into the old coreboot image */
-		"	movl	$1f, %%eax\n\t"
-		"	subl	20(%%esp), %%eax\n\t"
-		"	jmp	*%%eax\n\t"
-		"1:	\n\t"
-
-		/* Drop the parameters I was passed */
-		"	addl	$24, %%esp\n\t"
-
-		/* Restore the callee save registers */
-		"	popl	%%ebx\n\t"
-		"	popl	%%edi\n\t"
-		"	popl	%%esi\n\t"
-
-		::
-		"ri" (lb_start), "ri" (buffer), "ri" (lb_size),
-		"ri" (entry),
-#if CONFIG_MULTIBOOT
-		"ri"(mbi), "ri" (MB_MAGIC2)
-#else
-		"ri"(adjusted_boot_notes), "ri" (0x0E1FB007)
-#endif
-		);
-#endif
 }
diff --git a/src/arch/armv7/include/arch/stages.h b/src/arch/armv7/include/arch/stages.h
index 671c02b..3fd54b9 100644
--- a/src/arch/armv7/include/arch/stages.h
+++ b/src/arch/armv7/include/arch/stages.h
@@ -24,5 +24,6 @@ extern void main(void);
 
 void stage_entry(void) __attribute__((section(".text.stage_entry.armv7")));
 void stage_exit(void *);
+void jmp_to_elf_entry(void *entry, unsigned long buffer, unsigned long size);
 
 #endif
diff --git a/src/arch/armv7/stages.c b/src/arch/armv7/stages.c
index e26dbe5..0d2072d 100644
--- a/src/arch/armv7/stages.c
+++ b/src/arch/armv7/stages.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of the coreboot project.
  *
- * Copyright (C) 2012 The ChromiumOS Authors.  All rights reserved.
+ * Copyright 2012 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
@@ -15,7 +15,9 @@
  * 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
- *
+ */
+
+/*
  * This file contains entry/exit functions for each stage during coreboot
  * execution (bootblock entry and ramstage exit will depend on external
  * loading.
diff --git a/src/arch/x86/boot/boot.c b/src/arch/x86/boot/boot.c
index 4892c5e..7fc433d 100644
--- a/src/arch/x86/boot/boot.c
+++ b/src/arch/x86/boot/boot.c
@@ -1,81 +1,14 @@
 #include <console/console.h>
+#include <arch/stages.h>
 #include <ip_checksum.h>
-#include <boot/elf.h>
-#include <boot/elf_boot.h>
 #include <string.h>
 #include <cpu/x86/multiboot.h>
 
-
-#ifndef CMD_LINE
-#define CMD_LINE ""
-#endif
-
-
-
-#define UPSZ(X) ((sizeof(X) + 3) &~3)
-
-static struct {
-	Elf_Bhdr hdr;
-	Elf_Nhdr ft_hdr;
-	unsigned char ft_desc[UPSZ(FIRMWARE_TYPE)];
-	Elf_Nhdr bl_hdr;
-	unsigned char bl_desc[UPSZ(BOOTLOADER)];
-	Elf_Nhdr blv_hdr;
-	unsigned char blv_desc[UPSZ(BOOTLOADER_VERSION)];
-	Elf_Nhdr cmd_hdr;
-	unsigned char cmd_desc[UPSZ(CMD_LINE)];
-} elf_boot_notes = {
-	.hdr = {
-		.b_signature = 0x0E1FB007,
-		.b_size = sizeof(elf_boot_notes),
-		.b_checksum = 0,
-		.b_records = 4,
-	},
-	.ft_hdr = {
-		.n_namesz = 0,
-		.n_descsz = sizeof(FIRMWARE_TYPE),
-		.n_type = EBN_FIRMWARE_TYPE,
-	},
-	.ft_desc = FIRMWARE_TYPE,
-	.bl_hdr = {
-		.n_namesz = 0,
-		.n_descsz = sizeof(BOOTLOADER),
-		.n_type = EBN_BOOTLOADER_NAME,
-	},
-	.bl_desc = BOOTLOADER,
-	.blv_hdr = {
-		.n_namesz = 0,
-		.n_descsz = sizeof(BOOTLOADER_VERSION),
-		.n_type = EBN_BOOTLOADER_VERSION,
-	},
-	.blv_desc = BOOTLOADER_VERSION,
-	.cmd_hdr = {
-		.n_namesz = 0,
-		.n_descsz = sizeof(CMD_LINE),
-		.n_type = EBN_COMMAND_LINE,
-	},
-	.cmd_desc = CMD_LINE,
-};
-
-
-int elf_check_arch(Elf_ehdr *ehdr)
-{
-	return (
-		((ehdr->e_machine == EM_386) ||	(ehdr->e_machine == EM_486)) &&
-		(ehdr->e_ident[EI_CLASS] == ELFCLASS32) &&
-		(ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
-		);
-
-}
-
 #if CONFIG_RELOCATABLE_RAMSTAGE
 /* When the ramstage is relocatable the elf loading ensures an elf image cannot
  * be loaded over the ramstage code. */
 void jmp_to_elf_entry(void *entry, unsigned long unused1, unsigned long unused2)
 {
-	elf_boot_notes.hdr.b_checksum =
-		compute_ip_checksum(&elf_boot_notes, sizeof(elf_boot_notes));
-
 	/* Jump to kernel */
 	__asm__ __volatile__(
 		"	cld	\n\t"
@@ -90,8 +23,6 @@ void jmp_to_elf_entry(void *entry, unsigned long unused1, unsigned long unused2)
 		"r" (entry),
 #if CONFIG_MULTIBOOT
 		"b"(mbi), "a" (MB_MAGIC2)
-#else
-		"b"(&elf_boot_notes), "a" (0x0E1FB007)
 #endif
 		);
 }
@@ -100,25 +31,14 @@ void jmp_to_elf_entry(void *entry, unsigned long buffer, unsigned long size)
 {
 	extern unsigned char _ram_seg, _eram_seg;
 	unsigned long lb_start, lb_size;
-	unsigned long adjust, adjusted_boot_notes;
-
-	elf_boot_notes.hdr.b_checksum =
-		compute_ip_checksum(&elf_boot_notes, sizeof(elf_boot_notes));
 
 	lb_start = (unsigned long)&_ram_seg;
 	lb_size = (unsigned long)(&_eram_seg - &_ram_seg);
-	adjust = buffer +  size - lb_start;
-
-	adjusted_boot_notes = (unsigned long)&elf_boot_notes;
-	adjusted_boot_notes += adjust;
 
 	printk(BIOS_SPEW, "entry    = 0x%08lx\n", (unsigned long)entry);
 	printk(BIOS_SPEW, "lb_start = 0x%08lx\n", lb_start);
 	printk(BIOS_SPEW, "lb_size  = 0x%08lx\n", lb_size);
-	printk(BIOS_SPEW, "adjust   = 0x%08lx\n", adjust);
 	printk(BIOS_SPEW, "buffer   = 0x%08lx\n", buffer);
-	printk(BIOS_SPEW, "     elf_boot_notes = 0x%08lx\n", (unsigned long)&elf_boot_notes);
-	printk(BIOS_SPEW, "adjusted_boot_notes = 0x%08lx\n", adjusted_boot_notes);
 
 	/* Jump to kernel */
 	__asm__ __volatile__(
@@ -206,7 +126,7 @@ void jmp_to_elf_entry(void *entry, unsigned long buffer, unsigned long size)
 #if CONFIG_MULTIBOOT
 		"ri"(mbi), "ri" (MB_MAGIC2)
 #else
-		"ri"(adjusted_boot_notes), "ri" (0x0E1FB007)
+		"ri"(0), "ri" (0)
 #endif
 		);
 }
diff --git a/src/arch/x86/include/arch/stages.h b/src/arch/x86/include/arch/stages.h
index 3dea427..8cbf5da 100644
--- a/src/arch/x86/include/arch/stages.h
+++ b/src/arch/x86/include/arch/stages.h
@@ -23,4 +23,5 @@
 #include <arch/cpu.h>
 
 void asmlinkage copy_and_run(void);
+void jmp_to_elf_entry(void *entry, unsigned long buffer, unsigned long size);
 #endif
diff --git a/src/include/boot/elf.h b/src/include/boot/elf.h
deleted file mode 100644
index 5be96be..0000000
--- a/src/include/boot/elf.h
+++ /dev/null
@@ -1,403 +0,0 @@
-#ifndef ELF_H
-#define	ELF_H
-
-/* Standard ELF types.  */
-
-#include <stdint.h>
-#include <stddef.h>
-#include <arch/boot/boot.h>
-
-/* Type for a 16-bit quantity.  */
-typedef uint16_t Elf32_Half;
-typedef uint16_t Elf64_Half;
-
-/* Types for signed and unsigned 32-bit quantities.  */
-typedef uint32_t Elf32_Word;
-typedef	int32_t  Elf32_Sword;
-typedef uint32_t Elf64_Word;
-typedef	int32_t  Elf64_Sword;
-
-/* Types for signed and unsigned 64-bit quantities.  */
-typedef uint64_t Elf32_Xword;
-typedef	int64_t  Elf32_Sxword;
-typedef uint64_t Elf64_Xword;
-typedef	int64_t  Elf64_Sxword;
-
-/* Type of addresses.  */
-typedef uint32_t Elf32_Addr;
-typedef uint64_t Elf64_Addr;
-
-/* Type of file offsets.  */
-typedef uint32_t Elf32_Off;
-typedef uint64_t Elf64_Off;
-
-/* Type for section indices, which are 16-bit quantities.  */
-typedef uint16_t Elf32_Section;
-typedef uint16_t Elf64_Section;
-
-/* Type of symbol indices.  */
-typedef uint32_t Elf32_Symndx;
-typedef uint64_t Elf64_Symndx;
-
-
-/* The ELF file header.  This appears at the start of every ELF file.  */
-
-#define EI_NIDENT (16)
-
-typedef struct
-{
-  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */
-  Elf32_Half	e_type;			/* Object file type */
-  Elf32_Half	e_machine;		/* Architecture */
-  Elf32_Word	e_version;		/* Object file version */
-  Elf32_Addr	e_entry;		/* Entry point virtual address */
-  Elf32_Off	e_phoff;		/* Program header table file offset */
-  Elf32_Off	e_shoff;		/* Section header table file offset */
-  Elf32_Word	e_flags;		/* Processor-specific flags */
-  Elf32_Half	e_ehsize;		/* ELF header size in bytes */
-  Elf32_Half	e_phentsize;		/* Program header table entry size */
-  Elf32_Half	e_phnum;		/* Program header table entry count */
-  Elf32_Half	e_shentsize;		/* Section header table entry size */
-  Elf32_Half	e_shnum;		/* Section header table entry count */
-  Elf32_Half	e_shstrndx;		/* Section header string table index */
-} Elf32_Ehdr;
-
-typedef struct
-{
-  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */
-  Elf64_Half	e_type;			/* Object file type */
-  Elf64_Half	e_machine;		/* Architecture */
-  Elf64_Word	e_version;		/* Object file version */
-  Elf64_Addr	e_entry;		/* Entry point virtual address */
-  Elf64_Off	e_phoff;		/* Program header table file offset */
-  Elf64_Off	e_shoff;		/* Section header table file offset */
-  Elf64_Word	e_flags;		/* Processor-specific flags */
-  Elf64_Half	e_ehsize;		/* ELF header size in bytes */
-  Elf64_Half	e_phentsize;		/* Program header table entry size */
-  Elf64_Half	e_phnum;		/* Program header table entry count */
-  Elf64_Half	e_shentsize;		/* Section header table entry size */
-  Elf64_Half	e_shnum;		/* Section header table entry count */
-  Elf64_Half	e_shstrndx;		/* Section header string table index */
-} Elf64_Ehdr;
-
-/* Fields in the e_ident array.  The EI_* macros are indices into the
-   array.  The macros under each EI_* macro are the values the byte
-   may have.  */
-
-#define EI_MAG0		0		/* File identification byte 0 index */
-#define ELFMAG0		0x7f		/* Magic number byte 0 */
-
-#define EI_MAG1		1		/* File identification byte 1 index */
-#define ELFMAG1		'E'		/* Magic number byte 1 */
-
-#define EI_MAG2		2		/* File identification byte 2 index */
-#define ELFMAG2		'L'		/* Magic number byte 2 */
-
-#define EI_MAG3		3		/* File identification byte 3 index */
-#define ELFMAG3		'F'		/* Magic number byte 3 */
-
-/* Conglomeration of the identification bytes, for easy testing as a word.  */
-#define	ELFMAG		"\177ELF"
-#define	SELFMAG		4
-
-#define EI_CLASS	4		/* File class byte index */
-#define ELFCLASSNONE	0		/* Invalid class */
-#define ELFCLASS32	1		/* 32-bit objects */
-#define ELFCLASS64	2		/* 64-bit objects */
-#define ELFCLASSNUM	3
-
-#define EI_DATA		5		/* Data encoding byte index */
-#define ELFDATANONE	0		/* Invalid data encoding */
-#define ELFDATA2LSB	1		/* 2's complement, little endian */
-#define ELFDATA2MSB	2		/* 2's complement, big endian */
-#define ELFDATANUM	3
-
-#define EI_VERSION	6		/* File version byte index */
-					/* Value must be EV_CURRENT */
-
-#define EI_OSABI	7		/* OS ABI identification */
-#define ELFOSABI_SYSV		0	/* UNIX System V ABI */
-#define ELFOSABI_HPUX		1	/* HP-UX */
-#define ELFOSABI_ARM		97	/* ARM */
-#define ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */
-
-#define EI_ABIVERSION	8		/* ABI version */
-
-#define EI_PAD		9		/* Byte index of padding bytes */
-
-/* Legal values for e_type (object file type).  */
-
-#define ET_NONE		0		/* No file type */
-#define ET_REL		1		/* Relocatable file */
-#define ET_EXEC		2		/* Executable file */
-#define ET_DYN		3		/* Shared object file */
-#define ET_CORE		4		/* Core file */
-#define	ET_NUM		5		/* Number of defined types */
-#define ET_LOPROC	0xff00		/* Processor-specific */
-#define ET_HIPROC	0xffff		/* Processor-specific */
-
-/* Legal values for e_machine (architecture).  */
-
-#define EM_NONE		 0		/* No machine */
-#define EM_M32		 1		/* AT&T WE 32100 */
-#define EM_SPARC	 2		/* SUN SPARC */
-#define EM_386		 3		/* Intel 80386 */
-#define EM_68K		 4		/* Motorola m68k family */
-#define EM_88K		 5		/* Motorola m88k family */
-#define EM_486		 6		/* Intel 80486 */
-#define EM_860		 7		/* Intel 80860 */
-#define EM_MIPS		 8		/* MIPS R3000 big-endian */
-#define EM_S370		 9		/* Amdahl */
-#define EM_MIPS_RS4_BE	10		/* MIPS R4000 big-endian */
-#define EM_RS6000	11		/* RS6000 */
-
-#define EM_PARISC	15		/* HPPA */
-#define EM_nCUBE	16		/* nCUBE */
-#define EM_VPP500	17		/* Fujitsu VPP500 */
-#define EM_SPARC32PLUS	18		/* Sun's "v8plus" */
-#define EM_960		19		/* Intel 80960 */
-#define EM_PPC		20		/* PowerPC */
-
-#define EM_V800		36		/* NEC V800 series */
-#define EM_FR20		37		/* Fujitsu FR20 */
-#define EM_RH32		38		/* TRW RH32 */
-#define EM_MMA		39		/* Fujitsu MMA */
-#define EM_ARM		40		/* ARM */
-#define EM_FAKE_ALPHA	41		/* Digital Alpha */
-#define EM_SH		42		/* Hitachi SH */
-#define EM_SPARCV9	43		/* SPARC v9 64-bit */
-#define EM_TRICORE	44		/* Siemens Tricore */
-#define EM_ARC		45		/* Argonaut RISC Core */
-#define EM_H8_300	46		/* Hitachi H8/300 */
-#define EM_H8_300H	47		/* Hitachi H8/300H */
-#define EM_H8S		48		/* Hitachi H8S */
-#define EM_H8_500	49		/* Hitachi H8/500 */
-#define EM_IA_64	50		/* Intel Merced */
-#define EM_MIPS_X	51		/* Stanford MIPS-X */
-#define EM_COLDFIRE	52		/* Motorola Coldfire */
-#define EM_68HC12	53		/* Motorola M68HC12 */
-#define EM_NUM		54
-
-/* If it is necessary to assign new unofficial EM_* values, please
-   pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the
-   chances of collision with official or non-GNU unofficial values.  */
-
-#define EM_ALPHA	0x9026
-
-/* Legal values for e_version (version).  */
-
-#define EV_NONE		0		/* Invalid ELF version */
-#define EV_CURRENT	1		/* Current version */
-#define EV_NUM		2
-
-
-/* Program segment header.  */
-
-typedef struct
-{
-  Elf32_Word	p_type;			/* Segment type */
-  Elf32_Off	p_offset;		/* Segment file offset */
-  Elf32_Addr	p_vaddr;		/* Segment virtual address */
-  Elf32_Addr	p_paddr;		/* Segment physical address */
-  Elf32_Word	p_filesz;		/* Segment size in file */
-  Elf32_Word	p_memsz;		/* Segment size in memory */
-  Elf32_Word	p_flags;		/* Segment flags */
-  Elf32_Word	p_align;		/* Segment alignment */
-} Elf32_Phdr;
-
-typedef struct
-{
-  Elf64_Word	p_type;			/* Segment type */
-  Elf64_Word	p_flags;		/* Segment flags */
-  Elf64_Off	p_offset;		/* Segment file offset */
-  Elf64_Addr	p_vaddr;		/* Segment virtual address */
-  Elf64_Addr	p_paddr;		/* Segment physical address */
-  Elf64_Xword	p_filesz;		/* Segment size in file */
-  Elf64_Xword	p_memsz;		/* Segment size in memory */
-  Elf64_Xword	p_align;		/* Segment alignment */
-} Elf64_Phdr;
-
-/* Legal values for p_type (segment type).  */
-
-#define	PT_NULL		0		/* Program header table entry unused */
-#define PT_LOAD		1		/* Loadable program segment */
-#define PT_DYNAMIC	2		/* Dynamic linking information */
-#define PT_INTERP	3		/* Program interpreter */
-#define PT_NOTE		4		/* Auxiliary information */
-#define PT_SHLIB	5		/* Reserved */
-#define PT_PHDR		6		/* Entry for header table itself */
-#define	PT_NUM		7		/* Number of defined types.  */
-#define PT_LOOS		0x60000000	/* Start of OS-specific */
-#define PT_HIOS		0x6fffffff	/* End of OS-specific */
-#define PT_LOPROC	0x70000000	/* Start of processor-specific */
-#define PT_HIPROC	0x7fffffff	/* End of processor-specific */
-
-/* Legal values for p_flags (segment flags).  */
-
-#define PF_X		(1 << 0)	/* Segment is executable */
-#define PF_W		(1 << 1)	/* Segment is writable */
-#define PF_R		(1 << 2)	/* Segment is readable */
-#define PF_MASKPROC	0xf0000000	/* Processor-specific */
-
-
-/* Note section contents.  Each entry in the note section begins with
-   a header of a fixed form.  */
-
-typedef struct
-{
-  Elf32_Word n_namesz;			/* Length of the note's name.  */
-  Elf32_Word n_descsz;			/* Length of the note's descriptor.  */
-  Elf32_Word n_type;			/* Type of the note.  */
-} Elf32_Nhdr;
-
-typedef struct
-{
-  Elf64_Word n_namesz;			/* Length of the note's name.  */
-  Elf64_Word n_descsz;			/* Length of the note's descriptor.  */
-  Elf64_Word n_type;			/* Type of the note.  */
-} Elf64_Nhdr;
-
-/* Known names of notes.  */
-
-/* Solaris entries in the note section have this name.  */
-#define ELF_NOTE_SOLARIS	"SUNW Solaris"
-
-/* Note entries for GNU systems have this name.  */
-#define ELF_NOTE_GNU		"GNU"
-
-
-/* Defined types of notes for Solaris.  */
-
-/* Value of descriptor (one word) is desired pagesize for the binary.  */
-#define ELF_NOTE_PAGESIZE_HINT	1
-
-
-/* Defined note types for GNU systems.  */
-
-/* ABI information.  The descriptor consists of words:
-   word 0: OS descriptor
-   word 1: major version of the ABI
-   word 2: minor version of the ABI
-   word 3: subminor version of the ABI
-*/
-#define ELF_NOTE_ABI		1
-
-/* Known OSes.  These value can appear in word 0 of an ELF_NOTE_ABI
-   note section entry.  */
-#define ELF_NOTE_OS_LINUX	0
-#define ELF_NOTE_OS_GNU		1
-#define ELF_NOTE_OS_SOLARIS2	2
-
-
-/* Motorola 68k specific definitions.  */
-
-/* Intel 80386 specific definitions.  */
-
-/* SUN SPARC specific definitions.  */
-
-/* Values for Elf64_Ehdr.e_flags.  */
-
-#define EF_SPARCV9_MM		3
-#define EF_SPARCV9_TSO		0
-#define EF_SPARCV9_PSO		1
-#define EF_SPARCV9_RMO		2
-#define EF_SPARC_EXT_MASK	0xFFFF00
-#define EF_SPARC_SUN_US1	0x000200
-#define EF_SPARC_HAL_R1		0x000400
-
-/* MIPS R3000 specific definitions.  */
-
-/* Legal values for e_flags field of Elf32_Ehdr.  */
-
-#define EF_MIPS_NOREORDER   1		/* A .noreorder directive was used */
-#define EF_MIPS_PIC	    2		/* Contains PIC code */
-#define EF_MIPS_CPIC	    4		/* Uses PIC calling sequence */
-#define EF_MIPS_XGOT	    8
-#define EF_MIPS_64BIT_WHIRL 16
-#define EF_MIPS_ABI2	    32
-#define EF_MIPS_ABI_ON32    64
-#define EF_MIPS_ARCH	    0xf0000000	/* MIPS architecture level */
-
-/* Legal values for MIPS architecture level.  */
-
-#define EF_MIPS_ARCH_1	    0x00000000	/* -mips1 code.  */
-#define EF_MIPS_ARCH_2	    0x10000000	/* -mips2 code.  */
-#define EF_MIPS_ARCH_3	    0x20000000	/* -mips3 code.  */
-#define EF_MIPS_ARCH_4	    0x30000000	/* -mips4 code.  */
-#define EF_MIPS_ARCH_5	    0x40000000	/* -mips5 code.  */
-
-/* Legal values for p_type field of Elf32_Phdr.  */
-
-#define PT_MIPS_REGINFO	0x70000000	/* Register usage information */
-#define PT_MIPS_RTPROC  0x70000001	/* Runtime procedure table. */
-#define PT_MIPS_OPTIONS 0x70000002
-
-/* Special program header types.  */
-
-#define PF_MIPS_LOCAL	0x10000000
-
-
-/* HPPA specific definitions.  */
-
-/* Legal values for e_flags field of Elf32_Ehdr.  */
-
-#define EF_PARISC_TRAPNL	1	/* Trap nil pointer dereference.  */
-#define EF_PARISC_EXT		2	/* Program uses arch. extensions.  */
-#define EF_PARISC_ARCH		0xffff0000 /* Architecture version.  */
-/* Defined values are:
-				0x020b	PA-RISC 1.0 big-endian
-				0x0210	PA-RISC 1.1 big-endian
-				0x028b	PA-RISC 1.0 little-endian
-				0x0290	PA-RISC 1.1 little-endian
-*/
-
-
-/* Alpha specific definitions.  */
-
-/* Legal values for e_flags field of Elf64_Ehdr.  */
-
-#define EF_ALPHA_32BIT		1	/* All addresses must be < 2GB.  */
-#define EF_ALPHA_CANRELAX	2	/* Relocations for relaxing exist.  */
-
-
-/* PowerPC specific declarations */
-
-/* ARM specific declarations */
-
-/* Processor specific flags for the ELF header e_flags field.  */
-#define EF_ARM_RELEXEC     0x01
-#define EF_ARM_HASENTRY    0x02
-#define EF_ARM_INTERWORK   0x04
-#define EF_ARM_APCS_26     0x08
-#define EF_ARM_APCS_FLOAT  0x10
-#define EF_ARM_PIC         0x20
-#define EF_ALIGN8          0x40		/* 8-bit structure alignment is in use */
-#define EF_NEW_ABI         0x80
-#define EF_OLD_ABI         0x100
-
-/* ARM-specific program header flags */
-#define PF_ARM_SB          0x10000000   /* Segment contains the location
-					   addressed by the static base */
-
-#if ELF_CLASS == ELFCLASS32
-typedef Elf32_Ehdr Elf_ehdr;
-typedef Elf32_Phdr Elf_phdr;
-#endif
-
-#if ELF_CLASS == ELFCLASS64
-typedef Elf64_Ehdr Elf_ehdr;
-typedef Elf64_Phdr Elf_phdr;
-#endif
-
-int elf_check_arch(Elf_ehdr *ehdr);
-void jmp_to_elf_entry(void *entry, unsigned long buffer, unsigned long bounce_size);
-struct lb_memory;
-int elfboot(struct lb_memory *mem);
-/* Temporary compile fix, FILO should be dropped from coreboot */
-int filo(struct lb_memory *mem);
-
-#define FIRMWARE_TYPE "coreboot"
-#define BOOTLOADER "elfboot"
-#define BOOTLOADER_VERSION "1.3"
-
-#endif	/* elf.h */
diff --git a/src/include/boot/elf_boot.h b/src/include/boot/elf_boot.h
deleted file mode 100644
index b119bab..0000000
--- a/src/include/boot/elf_boot.h
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef ELF_BOOT_H
-#define ELF_BOOT_H
-
-#include <stdint.h>
-
-/* This defines the structure of a table of parameters useful for ELF
- * bootable images.  These parameters are all passed and generated
- * by the bootloader to the booted image.  For simplicity and
- * consistency the Elf Note format is reused.
- *
- * All of the information must be Position Independent Data.
- * That is it must be safe to relocate the whole ELF boot parameter
- * block without changing the meaning or correctnes of the data.
- * Additionally it must be safe to permute the order of the ELF notes
- * to any possible permutation without changing the meaning or correctness
- * of the data.
- *
- */
-
-#define ELF_HEAD_SIZE		(8*1024)
-#define ELF_BOOT_MAGIC		0x0E1FB007
-
-typedef uint16_t Elf_Half;
-typedef uint32_t Elf_Word;
-typedef uint64_t Elf_Xword;
-
-typedef struct
-{
-	Elf_Word b_signature; /* "0x0E1FB007" */
-	Elf_Word b_size;
-	Elf_Half b_checksum;
-	Elf_Half b_records;
-} Elf_Bhdr;
-
-typedef struct
-{
-	Elf_Word n_namesz;		/* Length of the note's name.  */
-	Elf_Word n_descsz;		/* Length of the note's descriptor.  */
-	Elf_Word n_type;		/* Type of the note.  */
-} Elf_Nhdr;
-
-
-/* For standard notes n_namesz must be zero */
-/* All of the following standard note types provide a single null
- * terminated string in the descriptor.
- */
-#define EBN_FIRMWARE_TYPE	0x00000001
-/* On platforms that support multiple classes of firmware this field
- * specifies the class of firmware you are loaded under.
- */
-#define EBN_BOOTLOADER_NAME	0x00000002
-/* This specifies just the name of the bootloader for easy comparison */
-#define EBN_BOOTLOADER_VERSION	0x00000003
-/* This specifies the version of the bootlader */
-#define EBN_COMMAND_LINE	0x00000004
-/* This specifies a command line that can be set by user interaction,
- * and is provided as a free form string to the loaded image.
- */
-
-
-/* Standardized Elf image notes for booting... The name for all of these is ELFBoot */
-
-#define ELF_NOTE_BOOT		"ELFBoot"
-
-#define EIN_PROGRAM_NAME	0x00000001
-/* The program in this ELF file */
-#define EIN_PROGRAM_VERSION	0x00000002
-/* The version of the program in this ELF file */
-#define EIN_PROGRAM_CHECKSUM	0x00000003
-/* ip style checksum of the memory image. */
-
-
-/* Linux image notes for booting... The name for all of these is Linux */
-
-#define LINUX_NOTE_BOOT		"Linux"
-
-#define LIN_COMMAND_LINE	0x00000001
-/* The command line to pass to the loaded kernel. */
-#define LIN_ROOT_DEV		0x00000002
-/* The root dev to pass to the loaded kernel. */
-#define LIN_RAMDISK_FLAGS	0x00000003
-/* Various old ramdisk flags */
-#define LIN_INITRD_START	0x00000004
-/* Start of the ramdisk in bytes */
-#define LIN_INITRD_SIZE		0x00000005
-/* Size of the ramdisk in bytes */
-
-
-#endif /* ELF_BOOT_H */
diff --git a/src/lib/hardwaremain.c b/src/lib/hardwaremain.c
index a1803ed..898e910 100644
--- a/src/lib/hardwaremain.c
+++ b/src/lib/hardwaremain.c
@@ -31,7 +31,6 @@
 #include <stdlib.h>
 #include <reset.h>
 #include <boot/tables.h>
-#include <boot/elf.h>
 #include <cbfs.h>
 #include <lib.h>
 #if CONFIG_HAVE_ACPI_RESUME
diff --git a/src/lib/selfboot.c b/src/lib/selfboot.c
index 4ebe109..6d60285 100644
--- a/src/lib/selfboot.c
+++ b/src/lib/selfboot.c
@@ -19,11 +19,10 @@
  */
 
 #include <arch/byteorder.h>
+#include <arch/stages.h>
 #include <console/console.h>
 #include <cpu/cpu.h>
 #include <fallback.h>
-#include <boot/elf.h>
-#include <boot/elf_boot.h>
 #include <boot/coreboot_tables.h>
 #include <stdint.h>
 #include <stdlib.h>



More information about the coreboot-gerrit mailing list