[coreboot] [commit] r6507 - in trunk/src/arch/x86: include include/arch init

repository service svn at coreboot.org
Sat Apr 16 02:09:54 CEST 2011


Author: stepan
Date: Sat Apr 16 02:09:53 2011
New Revision: 6507
URL: https://tracker.coreboot.org/trac/coreboot/changeset/6507

Log:
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 at coreboot.org>                                                                                                                                                                                                            
Acked-by: Marc Jones <marcj303 at gmail.com>

Added:
   trunk/src/arch/x86/include/arch/cbfs.h
Modified:
   trunk/src/arch/x86/include/bootblock_common.h
   trunk/src/arch/x86/init/bootblock_normal.c
   trunk/src/arch/x86/init/bootblock_simple.c

Added: trunk/src/arch/x86/include/arch/cbfs.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/src/arch/x86/include/arch/cbfs.h	Sat Apr 16 02:09:53 2011	(r6507)
@@ -0,0 +1,26 @@
+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_restricted {
+	unsigned long compression;
+	unsigned long entry; // this is really 64bit, but properly endianized
+};
+
+static inline unsigned long findstage(char* target)
+{
+	return ((struct cbfs_stage_restricted *)walkcbfs(target))->entry;
+}
+
+static inline void call(unsigned long addr, unsigned long bist)
+{
+	asm volatile ("jmp *%0\n\t" : : "r" (addr), "a" (bist));
+}
+

Modified: trunk/src/arch/x86/include/bootblock_common.h
==============================================================================
--- trunk/src/arch/x86/include/bootblock_common.h	Fri Apr 15 11:01:42 2011	(r6506)
+++ trunk/src/arch/x86/include/bootblock_common.h	Sat Apr 16 02:09:53 2011	(r6507)
@@ -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_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>

Modified: trunk/src/arch/x86/init/bootblock_normal.c
==============================================================================
--- trunk/src/arch/x86/init/bootblock_normal.c	Fri Apr 15 11:01:42 2011	(r6506)
+++ trunk/src/arch/x86/init/bootblock_normal.c	Sat Apr 16 02:09:53 2011	(r6507)
@@ -6,6 +6,7 @@
 	if (boot_cpu()) {
 		bootblock_northbridge_init();
 		bootblock_southbridge_init();
+		bootblock_cpu_init();
 	}
 
 #if CONFIG_USE_OPTION_TABLE

Modified: trunk/src/arch/x86/init/bootblock_simple.c
==============================================================================
--- trunk/src/arch/x86/init/bootblock_simple.c	Fri Apr 15 11:01:42 2011	(r6506)
+++ trunk/src/arch/x86/init/bootblock_simple.c	Sat Apr 16 02:09:53 2011	(r6507)
@@ -5,6 +5,7 @@
 	if (boot_cpu()) {
 		bootblock_northbridge_init();
 		bootblock_southbridge_init();
+		bootblock_cpu_init();
 	}
 
 #if CONFIG_USE_OPTION_TABLE




More information about the coreboot mailing list