[coreboot-gerrit] Patch set updated for filo: Add ARM support

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Sat Apr 16 00:29:43 CEST 2016


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14370

-gerrit

commit 59ff20750aa945f0a2a457398dbc4d872d94448e
Author: Stefan Reinauer <stefan.reinauer at coreboot.org>
Date:   Thu Apr 14 15:48:17 2016 -0700

    Add ARM support
    
    Change-Id: I9325f6df06cf85ecd77abef5c0a7b4d2742466f4
    Signed-off-by: Stefan Reinauer <stefan.reinauer at coreboot.org>
---
 Kconfig                | 19 +++++++++++++++----
 Makefile               |  6 ++++--
 arm/Makefile.inc       | 20 ++++++++++++++++++++
 arm/elf.c              | 29 +++++++++++++++++++++++++++++
 arm/include/arch/elf.h |  5 +++++
 arm/sys_info.c         | 35 +++++++++++++++++++++++++++++++++++
 main/grub/builtins.c   | 12 ++++++++++++
 main/grub/grub.c       |  7 +++++++
 8 files changed, 127 insertions(+), 6 deletions(-)

diff --git a/Kconfig b/Kconfig
index cc48bd3..21a718d 100644
--- a/Kconfig
+++ b/Kconfig
@@ -4,13 +4,21 @@
 
 mainmenu "FILO Configuration"
 
-# When (if) we support multiple architectures, this will become an option.
+choice
+	prompt "Build for architecture"
+	default TARGET_I386
+
 config TARGET_I386
-	bool
-	default y
+	bool "x86"
+
+config TARGET_ARM
+	bool "ARM"
+
+endchoice
 
 config MULTIBOOT_IMAGE
 	bool "Include a MultiBoot header"
+	depends on TARGET_I386
 	default y
 	help
 	  Including a MultiBoot header makes FILO chainloadable by MultiBoot
@@ -103,6 +111,7 @@ menu "Drivers"
 
 config IDE_DISK
 	bool "IDE DISK support"
+	depends on TARGET_I386
 	default y
 	help
 	  Driver for hard disk, CompactFlash, and CD-ROM on IDE bus
@@ -138,6 +147,7 @@ config PCMCIA_CF
 
 config IDE_NEW_DISK
 	bool "New IDE driver"
+	depends on TARGET_I386
 	default n
 	depends on !IDE_DISK
 	help
@@ -165,6 +175,7 @@ config FLASH_DISK
 config SUPPORT_PCI
 	bool "PCI support"
 	default y
+	depends on TARGET_I386
 
 config PCI_BRUTE_SCAN
 	bool "Scan all PCI busses"
@@ -234,7 +245,7 @@ config FSYS_ISO9660
 config ELTORITO
 	bool "El Torito bootable CDROMs"
 	default y
-	depends on FSYS_ISO9660
+	depends on FSYS_ISO9660 && TARGET_I386
 	help
 	  Support for boot disk image in bootable CD-ROM (El Torito)
 
diff --git a/Makefile b/Makefile
index 39e477b..1a9430d 100644
--- a/Makefile
+++ b/Makefile
@@ -81,6 +81,8 @@ $(if $(wildcard .xcompile),,$(shell bash util/xcompile/xcompile > .xcompile))
 include .xcompile
 
 ARCH-$(CONFIG_TARGET_I386) := x86_32
+ARCH-$(CONFIG_TARGET_ARM) := arm
+
 CC := $(CC_$(ARCH-y))
 AS := $(AS_$(ARCH-y))
 LD := $(LD_$(ARCH-y))
@@ -104,6 +106,7 @@ LPGCC = $(LIBPAYLOAD_PREFIX)/bin/lpgcc
 LPAS = $(LIBPAYLOAD_PREFIX)/bin/lpas
 
 ARCHDIR-$(CONFIG_TARGET_I386) := x86
+ARCHDIR-$(CONFIG_TARGET_ARM) := arm
 
 CPPFLAGS := -nostdinc -imacros $(obj)/config.h
 CPPFLAGS += -I$(INCPAYLOAD) -I$(INCPAYLOAD)/$(ARCHDIR-y)
@@ -116,8 +119,7 @@ CFLAGS += $(call cc-option, -fno-stack-protector,)
 
 LIBS := $(LIBPAYLOAD) $(LIBGCC)
 
-SUBDIRS-y += main/ fs/ drivers/
-SUBDIRS-$(CONFIG_TARGET_I386) += x86/
+SUBDIRS-y += main fs drivers $(ARCHDIR-y)
 
 $(foreach subdir,$(SUBDIRS-y),$(eval include $(subdir)/Makefile.inc))
 
diff --git a/arm/Makefile.inc b/arm/Makefile.inc
new file mode 100644
index 0000000..8009ec2
--- /dev/null
+++ b/arm/Makefile.inc
@@ -0,0 +1,20 @@
+#
+# Copyright (C) 2016 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; either version 2 of the License, or
+# (at your option) any later version.
+#
+# 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+
+TARGETS-$(CONFIG_TARGET_ARM) += arm/sys_info.o arm/elf.o
+
diff --git a/arm/elf.c b/arm/elf.c
new file mode 100644
index 0000000..5db5227
--- /dev/null
+++ b/arm/elf.c
@@ -0,0 +1,29 @@
+/*
+ * This file is part of FILO.
+ *
+ * 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 <stdint.h>
+
+void relocate(void)
+{
+	// Not supported
+}
+
+u32 start_elf(u32 entry_point, u32 param)
+{
+	// Not supported	
+	return 0;
+}
diff --git a/arm/include/arch/elf.h b/arm/include/arch/elf.h
new file mode 100644
index 0000000..2a5bbbf
--- /dev/null
+++ b/arm/include/arch/elf.h
@@ -0,0 +1,5 @@
+#define ARCH_ELF_CLASS ELFCLASS32
+#define ARCH_ELF_DATA ELFDATA2LSB
+#define ARCH_ELF_MACHINE_OK(x) ((x)==EM_ARM)
+typedef Elf32_Ehdr Elf_ehdr;
+typedef Elf32_Phdr Elf_phdr;
diff --git a/arm/sys_info.c b/arm/sys_info.c
new file mode 100644
index 0000000..45dd44f
--- /dev/null
+++ b/arm/sys_info.c
@@ -0,0 +1,35 @@
+/*
+ * This file is part of FILO.
+ *
+ * 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 <libpayload.h>
+#include <config.h>
+#include <sys_info.h>
+#define DEBUG_THIS CONFIG_DEBUG_SYS_INFO
+#include <debug.h>
+
+void collect_sys_info(struct sys_info *info)
+{
+	// Nothing yet
+}
+
+const char *get_cb_version()
+{
+	const char *cb_version = lib_sysinfo.cb_version ?
+		lib_sysinfo.cb_version : "<unknown version>";
+
+	return cb_version;
+}
diff --git a/main/grub/builtins.c b/main/grub/builtins.c
index 58d6855..f53fe79 100644
--- a/main/grub/builtins.c
+++ b/main/grub/builtins.c
@@ -1030,6 +1030,7 @@ static struct builtin builtin_lock = {
 };
 
 #ifdef CONFIG_DEVELOPER_TOOLS
+#ifdef CONFIG_SUPPORT_PCI
 static int lspci_indent = 0;
 static void lspci_scan_bus(int bus)
 {
@@ -1139,6 +1140,7 @@ static struct builtin builtin_lspci = {
 	"Show PCI devices or dump PCI config space"
 };
 #endif
+#endif
 
 #ifdef CONFIG_USE_MD5_PASSWORDS
 /* md5crypt */
@@ -1194,6 +1196,7 @@ static struct builtin builtin_md5crypt = {
 #endif				/* CONFIG_USE_MD5_PASSWORDS */
 
 #if CONFIG_DEVELOPER_TOOLS
+#if CONFIG_TARGET_I386
 /* nvram */
 static int nvram_func(char *arg, int flags)
 {
@@ -1256,6 +1259,7 @@ static struct builtin builtin_nvram = {
 	    "image on the next boot."
 };
 #endif
+#endif
 
 /* password */
 static int password_func(char *arg, int flags)
@@ -1561,6 +1565,7 @@ static struct builtin builtin_serial = {
 };
 
 #ifdef CONFIG_DEVELOPER_TOOLS
+#ifdef CONFIG_SUPPORT_PCI
 static int setpci_func(char *arg, int flags)
 {
 	char *walk = arg;
@@ -1716,6 +1721,7 @@ static struct builtin builtin_setpci = {
 	"Show/change PCI config space values"
 };
 #endif
+#endif
 
 /* terminal */
 static int terminal_func(char *arg, int flags)
@@ -1945,14 +1951,18 @@ struct builtin *builtin_table[] = {
 	&builtin_keymap,
 	&builtin_lock,
 #ifdef CONFIG_DEVELOPER_TOOLS
+#ifdef CONFIG_SUPPORT_PCI
 	&builtin_lspci,
 #endif
+#endif
 #ifdef CONFIG_USE_MD5_PASSWORDS
 	&builtin_md5crypt,
 #endif
 #ifdef CONFIG_DEVELOPER_TOOLS
+#ifdef CONFIG_TARGET_I386
 	&builtin_nvram,
 #endif
+#endif
 	&builtin_password,
 	&builtin_pause,
 	&builtin_poweroff,
@@ -1963,8 +1973,10 @@ struct builtin *builtin_table[] = {
 	&builtin_root,
 	&builtin_serial,
 #ifdef CONFIG_DEVELOPER_TOOLS
+#ifdef CONFIG_SUPPORT_PCI
 	&builtin_setpci,
 #endif
+#endif
 	&builtin_terminal,
 	&builtin_timeout,
 	&builtin_title,
diff --git a/main/grub/grub.c b/main/grub/grub.c
index 2c8595b..ad8d7e5 100644
--- a/main/grub/grub.c
+++ b/main/grub/grub.c
@@ -47,6 +47,13 @@ static char configs[16384];
 int flashrom_lockdown = 1;
 #endif
 
+#ifndef CONFIG_TARGET_I386
+int get_option(void *dest, const char *name)
+{
+	return 1;
+}
+#endif
+
 int using_grub_interface = 0;
 
 #define ENTER '\r'



More information about the coreboot-gerrit mailing list