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 <[email protected]>                   
                                                                                
                                                                                
                         
Acked-by: Marc Jones <[email protected]>

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

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to