summaryrefslogtreecommitdiff
path: root/src/arch/armv7
diff options
context:
space:
mode:
authorHung-Te Lin <hungte@chromium.org>2013-02-01 01:09:24 +0800
committerRonald G. Minnich <rminnich@gmail.com>2013-02-03 05:45:48 +0100
commitfe18792a0887b5ba1ce8e0c8f9f6f1911395552a (patch)
tree5b0ac579e492647b0ab73cce0fcf6b47f636bdf9 /src/arch/armv7
parente876819975087654c1d3325928b044acf7f89b20 (diff)
downloadcoreboot-fe18792a0887b5ba1ce8e0c8f9f6f1911395552a.tar.xz
armv7: Add 'bootblock' build class.
For ARM platform, the bootblock may need more C source files to initialize UART / SPI for loading romstage. To preventing making complex and implicit dependency by using #include inside bootblock.c, we should add a new build class "bootblock". Also #ifdef __BOOT_BLOCK__ can be used to detect if the source is being compiled for boot block. For x86, the bootblock is limited to fewer assembly files so it's not using this class. (Some files shared by x86 and arm in top level or lib are also changed but nothing should be changed in x86 build process.) Change-Id: Ia81bccc366d2082397d133d9245f7ecb33b8bc8b Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: http://review.coreboot.org/2252 Reviewed-by: Ronald G. Minnich <rminnich@gmail.com> Tested-by: build bot (Jenkins)
Diffstat (limited to 'src/arch/armv7')
-rw-r--r--src/arch/armv7/Makefile.inc9
-rw-r--r--src/arch/armv7/bootblock_simple.c2
-rw-r--r--src/arch/armv7/include/arch/cbfs.h60
-rw-r--r--src/arch/armv7/lib/Makefile.inc1
4 files changed, 8 insertions, 64 deletions
diff --git a/src/arch/armv7/Makefile.inc b/src/arch/armv7/Makefile.inc
index e55f4771f7..715ce1ecbd 100644
--- a/src/arch/armv7/Makefile.inc
+++ b/src/arch/armv7/Makefile.inc
@@ -207,6 +207,9 @@ bootblock_inc += $(src)/arch/armv7/lib/id.inc
bootblock_inc += $(chipset_bootblock_inc)
bootblock_inc += $(objgenerated)/bootblock.inc
+bootblock_custom = $(src)/$(call strip_quotes,$(CONFIG_BOOTBLOCK_CPU_INIT))
+bootblock_custom += $(src)/$(call strip_quotes,$(CONFIG_BOOTBLOCK_MAINBOARD_INIT))
+
$(objgenerated)/bootblock.ld: $$(bootblock_lds) $(obj)/ldoptions
@printf " GEN $(subst $(obj)/,,$(@))\n"
printf '$(foreach ldscript,ldoptions $(bootblock_lds),INCLUDE "$(ldscript)"\n)' > $@
@@ -223,18 +226,18 @@ $(objgenerated)/bootblock.s: $(objgenerated)/bootblock_inc.S $(obj)/config.h $(o
@printf " CC $(subst $(obj)/,,$(@))\n"
$(CC) -MMD -x assembler-with-cpp -E -I$(src)/include -I$(src)/arch/armv7/include -I$(obj) -include $(obj)/build.h -include $(obj)/config.h -I. -I$(src) $< -o $@
-$(objgenerated)/bootblock.inc: $(src)/arch/armv7/$(subst ",,$(CONFIG_BOOTBLOCK_SOURCE)) $(OPTION_TABLE_H)
+$(objgenerated)/bootblock.inc: $(src)/arch/armv7/$(subst ",,$(CONFIG_BOOTBLOCK_SOURCE)) $(bootblock_custom) $(OPTION_TABLE_H)
@printf " CC $(subst $(obj)/,,$(@))\n"
$(CC) $(INCLUDES) -MM -MT$(objgenerated)/bootblock.inc \
$< > $(objgenerated)/bootblock.inc.d
$(CC) -c -S $(CFLAGS) -I. $(INCLUDES) $< -o $@
-$(objcbfs)/bootblock.debug: $(objgenerated)/bootblock.o $(objgenerated)/bootblock.ld
+$(objcbfs)/bootblock.debug: $(objgenerated)/bootblock.o $(objgenerated)/bootblock.ld $$(bootblock-objs) $(stages)
@printf " LINK $(subst $(obj)/,,$(@))\n"
ifeq ($(CONFIG_COMPILER_LLVM_CLANG),y)
$(LD) -m armelf_linux_eabi -static -o $@.tmp -L$(obj) $< -T $(objgenerated)/bootblock.ld
else
- $(CC) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(objgenerated)/bootblock.ld -Wl,--start-group $(objgenerated)/bootblock.o $(stages) $(LIBGCC_FILE_NAME) -Wl,--end-group
+ $(CC) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(objgenerated)/bootblock.ld -Wl,--start-group $(objgenerated)/bootblock.o $(bootblock-objs) $(stages) $(LIBGCC_FILE_NAME) -Wl,--end-group
endif
################################################################################
diff --git a/src/arch/armv7/bootblock_simple.c b/src/arch/armv7/bootblock_simple.c
index 8df7e6a70d..e808edcd35 100644
--- a/src/arch/armv7/bootblock_simple.c
+++ b/src/arch/armv7/bootblock_simple.c
@@ -20,9 +20,9 @@
*/
#include <bootblock_common.h>
-#include <arch/cbfs.h>
#include <arch/hlt.h>
#include <arch/stages.h>
+#include <cbfs.h>
#include "stages.c"
diff --git a/src/arch/armv7/include/arch/cbfs.h b/src/arch/armv7/include/arch/cbfs.h
deleted file mode 100644
index e34a0d2b27..0000000000
--- a/src/arch/armv7/include/arch/cbfs.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2012 The ChromiumOS Authors. All rights reserved.
- *
- * 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
- */
-
-#ifndef __INCLUDE_ARCH_CBFS__
-#define __INCLUDE_ARCH_CBFS__
-
-#include <cbfs_core.h>
-#include <arch/byteorder.h>
-
-// TODO FIXME This file is only for providing CBFS function in bootblock.
-// Should be removed once bootblock can link lib/* files.
-#include "lib/cbfs.c"
-
-// mem* and ulzma are now workarounds for bootblock compilation.
-void *memcpy(void *dest, const void *src, size_t n) {
- char *d = (char *)dest;
- const char *s = (const char*)src;
- while (n-- > 0)
- *d++ = *s++;
- return dest;
-}
-
-void *memset(void *dest, int c, size_t n) {
- char *d = (char*)dest;
- while (n-- > 0)
- *d++ = c;
- return dest;
-}
-
-int memcmp(const void *ptr1, const void *ptr2, size_t n) {
- const char *s1 = (const char*)ptr1, *s2 = (const char*)ptr2;
- int c;
- while (n-- > 0)
- if ((c = *s1++ - *s2++))
- return c;
- return 0;
-}
-
-unsigned long ulzma(unsigned char *src, unsigned char *dest) {
- // TODO remove this.
- return -1;
-}
-
-#endif // __INCLUDE_ARCH_CBFS__
diff --git a/src/arch/armv7/lib/Makefile.inc b/src/arch/armv7/lib/Makefile.inc
index e52bc5412d..2470db2e80 100644
--- a/src/arch/armv7/lib/Makefile.inc
+++ b/src/arch/armv7/lib/Makefile.inc
@@ -21,3 +21,4 @@ ramstage-y += syslib.c
#FIXME(dhendrix): should this be a config option?
romstage-y += eabi_compat.c
ramstage-y += eabi_compat.c
+bootblock-y += eabi_compat.c