diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/arm/Kconfig | 6 | ||||
-rw-r--r-- | src/arch/arm/armv4/Makefile.inc | 3 | ||||
-rw-r--r-- | src/arch/arm/armv7/Makefile.inc | 6 | ||||
-rw-r--r-- | src/arch/arm/armv7/bootblock_simple.c | 47 | ||||
-rw-r--r-- | src/arch/arm/include/bootblock_common.h | 24 | ||||
-rw-r--r-- | src/arch/arm64/Kconfig | 6 | ||||
-rw-r--r-- | src/arch/arm64/armv8/Makefile.inc | 9 | ||||
-rw-r--r-- | src/arch/arm64/armv8/bootblock_simple.c | 60 | ||||
-rw-r--r-- | src/arch/arm64/include/bootblock_common.h | 11 | ||||
-rw-r--r-- | src/arch/mips/Kconfig | 1 | ||||
-rw-r--r-- | src/arch/mips/bootblock_simple.c | 2 | ||||
-rw-r--r-- | src/arch/mips/include/arch/bootblock_common.h (renamed from src/arch/mips/include/bootblock_common.h) | 0 | ||||
-rw-r--r-- | src/arch/riscv/Kconfig | 7 | ||||
-rw-r--r-- | src/arch/riscv/bootblock_simple.c | 1 | ||||
-rw-r--r-- | src/arch/riscv/include/bootblock_common.h | 16 | ||||
-rw-r--r-- | src/arch/x86/Kconfig | 2 | ||||
-rw-r--r-- | src/arch/x86/bootblock_normal.c | 2 | ||||
-rw-r--r-- | src/arch/x86/bootblock_simple.c | 2 | ||||
-rw-r--r-- | src/arch/x86/include/arch/bootblock_common.h (renamed from src/arch/x86/include/bootblock_common.h) | 0 |
19 files changed, 15 insertions, 190 deletions
diff --git a/src/arch/arm/Kconfig b/src/arch/arm/Kconfig index 2499d2d075..9f14dda4e7 100644 --- a/src/arch/arm/Kconfig +++ b/src/arch/arm/Kconfig @@ -22,12 +22,6 @@ config ARCH_RAMSTAGE_ARM source src/arch/arm/armv4/Kconfig source src/arch/arm/armv7/Kconfig -# If a custom bootblock is necessary, this option should be "select"-ed by -# the thing that needs it, probably the CPU. -config ARM_BOOTBLOCK_CUSTOM - bool - default n - config ARM_LPAE bool default n diff --git a/src/arch/arm/armv4/Makefile.inc b/src/arch/arm/armv4/Makefile.inc index a8c31c8069..ee1879cf8f 100644 --- a/src/arch/arm/armv4/Makefile.inc +++ b/src/arch/arm/armv4/Makefile.inc @@ -24,9 +24,8 @@ armv4_flags = -marm -march=armv4t -I$(src)/arch/arm/include/armv4/ \ ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV4),y) -ifneq ($(CONFIG_ARM_BOOTBLOCK_CUSTOM),y) +ifneq ($(CONFIG_BOOTBLOCK_CUSTOM),y) bootblock-y += bootblock.S -bootblock-y += bootblock_simple.c endif bootblock-y += cache.c diff --git a/src/arch/arm/armv7/Makefile.inc b/src/arch/arm/armv7/Makefile.inc index a4391e9b3e..3a489cb259 100644 --- a/src/arch/arm/armv7/Makefile.inc +++ b/src/arch/arm/armv7/Makefile.inc @@ -31,9 +31,8 @@ ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV7),y) bootblock-c-ccopts += $(armv7-a_flags) bootblock-S-ccopts += $(armv7-a_asm_flags) -ifneq ($(CONFIG_ARM_BOOTBLOCK_CUSTOM),y) +ifneq ($(CONFIG_BOOTBLOCK_CUSTOM),y) bootblock-y += bootblock.S -bootblock-$(CONFIG_BOOTBLOCK_SIMPLE) += bootblock_simple.c endif bootblock-y += cache.c @@ -46,9 +45,8 @@ else ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV7_M),y) bootblock-c-ccopts += $(armv7-m_flags) bootblock-S-ccopts += $(armv7-m_asm_flags) -ifneq ($(CONFIG_ARM_BOOTBLOCK_CUSTOM),y) +ifneq ($(CONFIG_BOOTBLOCK_CUSTOM),y) bootblock-y += bootblock_m.S -bootblock-y += bootblock_simple.c endif bootblock-y += exception_m.c bootblock-y += cache_m.c diff --git a/src/arch/arm/armv7/bootblock_simple.c b/src/arch/arm/armv7/bootblock_simple.c deleted file mode 100644 index 0f4965af04..0000000000 --- a/src/arch/arm/armv7/bootblock_simple.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright 2010 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. - */ - -#include <arch/exception.h> -#include <arch/stages.h> -#include <bootblock_common.h> -#include <console/console.h> -#include <delay.h> -#include <program_loading.h> -#include <smp/node.h> -#include <timestamp.h> - -__attribute__((weak)) void bootblock_mainboard_early_init(void) { /* no-op */ } -__attribute__((weak)) void bootblock_soc_init(void) { /* do nothing */ } -__attribute__((weak)) void bootblock_mainboard_init(void) { /* do nothing */ } - -void main(void) -{ - init_timer(); - if (IS_ENABLED(CONFIG_HAS_PRECBMEM_TIMESTAMP_REGION)) - timestamp_init(timestamp_get()); - - bootblock_mainboard_early_init(); - -#if CONFIG_BOOTBLOCK_CONSOLE - console_init(); - exception_init(); -#endif - - bootblock_soc_init(); - bootblock_mainboard_init(); - - run_romstage(); -} diff --git a/src/arch/arm/include/bootblock_common.h b/src/arch/arm/include/bootblock_common.h deleted file mode 100644 index 874e84a709..0000000000 --- a/src/arch/arm/include/bootblock_common.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright 2014 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. - */ - -#ifndef __ARCH_BOOTBLOCK_COMMON_H -#define __ARCH_BOOTBLOCK_COMMON_H - -/* These are defined as weak no-ops that can be overridden by mainboard/SoC. */ -void bootblock_mainboard_early_init(void); -void bootblock_mainboard_init(void); -void bootblock_soc_init(void); - -#endif /* __ARCH_BOOTBLOCK_COMMON_H */ diff --git a/src/arch/arm64/Kconfig b/src/arch/arm64/Kconfig index 2c8713224c..9b06589f82 100644 --- a/src/arch/arm64/Kconfig +++ b/src/arch/arm64/Kconfig @@ -22,12 +22,6 @@ config ARCH_RAMSTAGE_ARM64 source src/arch/arm64/armv8/Kconfig source src/arch/arm64/cpu/Kconfig -# If a custom bootblock is necessary, this option should be "select"-ed by -# the thing that needs it, probably the CPU. -config ARM64_BOOTBLOCK_CUSTOM - bool - default n - config ARM64_USE_ARM_TRUSTED_FIRMWARE bool default n diff --git a/src/arch/arm64/armv8/Makefile.inc b/src/arch/arm64/armv8/Makefile.inc index 357159d6a7..359a368ab9 100644 --- a/src/arch/arm64/armv8/Makefile.inc +++ b/src/arch/arm64/armv8/Makefile.inc @@ -26,10 +26,6 @@ armv8_asm_flags = $(armv8_flags) ################################################################################ ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV8_64),y) -ifneq ($(CONFIG_ARM64_BOOTBLOCK_CUSTOM),y) -bootblock-y += bootblock.S -bootblock-y += bootblock_simple.c -endif bootblock-y += cache.c bootblock-y += cache_helpers.S bootblock-y += cpu.S @@ -38,6 +34,11 @@ bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += exception.c bootblock-c-ccopts += $(armv8_flags) bootblock-S-ccopts += $(armv8_asm_flags) +# Required to access unaligned timestamp struct members before MMU is active +# (TODO: Maybe use explicit unaligned accesses in timestamp code instead, or +# evaluate redesigning timestamp data structures to avoid misaligned members.) +bootblock-c-ccopts += -mstrict-align + endif ################################################################################ diff --git a/src/arch/arm64/armv8/bootblock_simple.c b/src/arch/arm64/armv8/bootblock_simple.c deleted file mode 100644 index e2002f2a3a..0000000000 --- a/src/arch/arm64/armv8/bootblock_simple.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright 2014 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. - */ - -#include <bootblock_common.h> -#include <arch/cache.h> -#include <arch/stages.h> -#include <arch/exception.h> -#include <cbfs.h> -#include <console/console.h> -#include <program_loading.h> - -static int boot_cpu(void) -{ - /* - * FIXME: This is a stub for now. All non-boot CPUs should be - * waiting for an interrupt. We could move the chunk of assembly - * which puts them to sleep in here... - */ - return 1; -} - -void main(void) -{ - /* Globally disable MMU, caches, and branch prediction (these should - * be disabled by default on reset) */ - mmu_disable(); - - /* - * Re-enable icache and branch prediction. MMU and dcache will be - * set up later. - * - * Note: If booting from USB, we need to disable branch prediction - * before copying from USB into RAM (FIXME: why?) - */ - - if (boot_cpu()) { - //bootblock_cpu_init(); - //bootblock_mainboard_init(); - } - -#if IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE) - console_init(); - exception_init(); -#endif - - run_romstage(); -} diff --git a/src/arch/arm64/include/bootblock_common.h b/src/arch/arm64/include/bootblock_common.h deleted file mode 100644 index 2fa705f5e1..0000000000 --- a/src/arch/arm64/include/bootblock_common.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifdef CONFIG_BOOTBLOCK_CPU_INIT -#include CONFIG_BOOTBLOCK_CPU_INIT -#endif - -#ifdef CONFIG_BOOTBLOCK_MAINBOARD_INIT -#include CONFIG_BOOTBLOCK_MAINBOARD_INIT -#else -static void bootblock_mainboard_init(void) -{ -} -#endif diff --git a/src/arch/mips/Kconfig b/src/arch/mips/Kconfig index b67fa29584..d0489ace4b 100644 --- a/src/arch/mips/Kconfig +++ b/src/arch/mips/Kconfig @@ -22,6 +22,7 @@ config ARCH_BOOTBLOCK_MIPS bool default n select ARCH_MIPS + select BOOTBLOCK_CUSTOM config ARCH_VERSTAGE_MIPS bool diff --git a/src/arch/mips/bootblock_simple.c b/src/arch/mips/bootblock_simple.c index c37e40ce7f..c3bd82dbee 100644 --- a/src/arch/mips/bootblock_simple.c +++ b/src/arch/mips/bootblock_simple.c @@ -14,7 +14,7 @@ * GNU General Public License for more details. */ -#include <bootblock_common.h> +#include <arch/bootblock_common.h> #include <console/console.h> #include <halt.h> #include <program_loading.h> diff --git a/src/arch/mips/include/bootblock_common.h b/src/arch/mips/include/arch/bootblock_common.h index f5c11ba9c5..f5c11ba9c5 100644 --- a/src/arch/mips/include/bootblock_common.h +++ b/src/arch/mips/include/arch/bootblock_common.h diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig index 9618c63577..1849335386 100644 --- a/src/arch/riscv/Kconfig +++ b/src/arch/riscv/Kconfig @@ -6,6 +6,7 @@ config ARCH_BOOTBLOCK_RISCV bool default n select ARCH_RISCV + select BOOTBLOCK_CUSTOM config ARCH_VERSTAGE_RISCV bool @@ -18,9 +19,3 @@ config ARCH_ROMSTAGE_RISCV config ARCH_RAMSTAGE_RISCV bool default n - -# If a custom bootblock is necessary, this option should be "select"-ed by -# the thing that needs it, probably the CPU. -config RISCV_BOOTBLOCK_CUSTOM - bool - default n diff --git a/src/arch/riscv/bootblock_simple.c b/src/arch/riscv/bootblock_simple.c index 3214035bc3..db45ab202a 100644 --- a/src/arch/riscv/bootblock_simple.c +++ b/src/arch/riscv/bootblock_simple.c @@ -14,7 +14,6 @@ * GNU General Public License for more details. */ -#include <bootblock_common.h> #include <arch/cache.h> #include <arch/hlt.h> #include <arch/stages.h> diff --git a/src/arch/riscv/include/bootblock_common.h b/src/arch/riscv/include/bootblock_common.h deleted file mode 100644 index fe2c982dec..0000000000 --- a/src/arch/riscv/include/bootblock_common.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef CONFIG_BOOTBLOCK_CPU_INIT -#include CONFIG_BOOTBLOCK_CPU_INIT -#endif - -// I'm disappointed that we let this kind of thing creep in. -// we null out functions with this kind of stuff, AND weak symbols, -// AND empty cpp function defines. What's next? Ouija boards? -#if 0 -#ifdef CONFIG_BOOTBLOCK_MAINBOARD_INIT -#include CONFIG_BOOTBLOCK_MAINBOARD_INIT -#else -static void bootblock_mainboard_init(void) -{ -} -#endif -#endif diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index 88b259297c..738e7d1c0a 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -24,6 +24,7 @@ config ARCH_BOOTBLOCK_X86_32 bool default n select ARCH_X86 + select BOOTBLOCK_CUSTOM config ARCH_VERSTAGE_X86_32 bool @@ -43,6 +44,7 @@ config ARCH_BOOTBLOCK_X86_64 bool default n select ARCH_X86 + select BOOTBLOCK_CUSTOM config ARCH_VERSTAGE_X86_64 bool diff --git a/src/arch/x86/bootblock_normal.c b/src/arch/x86/bootblock_normal.c index a4dc3c4d25..d5f03b7699 100644 --- a/src/arch/x86/bootblock_normal.c +++ b/src/arch/x86/bootblock_normal.c @@ -1,5 +1,5 @@ #include <smp/node.h> -#include <bootblock_common.h> +#include <arch/bootblock_common.h> #include <pc80/mc146818rtc.h> #include <halt.h> diff --git a/src/arch/x86/bootblock_simple.c b/src/arch/x86/bootblock_simple.c index bb0591fb53..4bff360a08 100644 --- a/src/arch/x86/bootblock_simple.c +++ b/src/arch/x86/bootblock_simple.c @@ -1,5 +1,5 @@ #include <smp/node.h> -#include <bootblock_common.h> +#include <arch/bootblock_common.h> #include <halt.h> static void main(unsigned long bist) diff --git a/src/arch/x86/include/bootblock_common.h b/src/arch/x86/include/arch/bootblock_common.h index 939ba08a67..939ba08a67 100644 --- a/src/arch/x86/include/bootblock_common.h +++ b/src/arch/x86/include/arch/bootblock_common.h |