diff options
author | Stefan Reinauer <stefan.reinauer@coreboot.org> | 2011-04-16 00:09:53 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2011-04-16 00:09:53 +0000 |
commit | a7163f1eb9a5461ba7a59c946d841a2b77b4932f (patch) | |
tree | a6f6d3fabb3f7beef7fc24ad77013fa17f40e21b /src/arch/x86/include/bootblock_common.h | |
parent | 6aef5542f8f4c61c571055fe675170fa0d4deaa5 (diff) |
bootblock updates:
- allow CPU to define bootblock code, too.
- drop unneeded __PRE_RAM__ define
- move CBFS specific code out of bootblock_common.h into cbfs.h
Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Acked-by: Marc Jones <marcj303@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6507 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/arch/x86/include/bootblock_common.h')
-rw-r--r-- | src/arch/x86/include/bootblock_common.h | 32 |
1 files changed, 6 insertions, 26 deletions
diff --git a/src/arch/x86/include/bootblock_common.h b/src/arch/x86/include/bootblock_common.h index a808cec7a5..4c4a092e0c 100644 --- a/src/arch/x86/include/bootblock_common.h +++ b/src/arch/x86/include/bootblock_common.h @@ -1,4 +1,3 @@ -#define __PRE_RAM__ #if CONFIG_LOGICAL_CPUS && \ (defined(CONFIG_BOOTBLOCK_NORTHBRIDGE_INIT) || defined(CONFIG_BOOTBLOCK_SOUTHBRIDGE_INIT)) #include <cpu/x86/lapic/boot_cpu.c> @@ -6,6 +5,11 @@ #define boot_cpu(x) 1 #endif +#ifdef CONFIG_BOOTBLOCK_CPU_INIT +#include CONFIG_BOOTBLOCK_CPU_INIT +#else +static void bootblock_cpu_init(void) { } +#endif #ifdef CONFIG_BOOTBLOCK_NORTHBRIDGE_INIT #include CONFIG_BOOTBLOCK_NORTHBRIDGE_INIT #else @@ -17,31 +21,7 @@ static void bootblock_northbridge_init(void) { } static void bootblock_southbridge_init(void) { } #endif -static void *walkcbfs(char *target) -{ - void *entry; - asm volatile ( - "mov $1f, %%esp\n\t" - "jmp walkcbfs_asm\n\t" - "1:\n\t" : "=a" (entry) : "S" (target) : "ebx", "ecx", "edi", "esp"); - return entry; -} - -/* just enough to support findstage. copied because the original version doesn't easily pass through romcc */ -struct cbfs_stage { - unsigned long compression; - unsigned long entry; // this is really 64bit, but properly endianized -}; - -static unsigned long findstage(char* target) -{ - return ((struct cbfs_stage*)walkcbfs(target))->entry; -} - -static void call(unsigned long addr, unsigned long bist) -{ - asm volatile ("jmp *%0\n\t" : : "r" (addr), "a" (bist)); -} +#include <arch/cbfs.h> #if CONFIG_USE_OPTION_TABLE #include <pc80/mc146818rtc.h> |