Rudolf Marek ([email protected]) just uploaded a new patch set to gerrit, 
which you can find at http://review.coreboot.org/925

-gerrit

commit 1896e2a19c848725a30833eabe0f12b10a714527
Author: Rudolf Marek <[email protected]>
Date:   Tue Apr 24 16:01:24 2012 +0200

    Make timestamp collection conditional in hardwaremain.c
    
    Otherwise it breaks 486 boards without RDTSC, ending with
    exception 6.
    
    It ends like this on bifferboard:
    
    Jumping to image.
    Unexpected Exception: 6 @ 10:001007e3 - Halting
    Code: 0 eflags: 00000016
    eax: 001001fe ebx: 00100118 ecx: 00000000 edx: 00108e00
    edi: 0010aaf8 esi: 00000000 ebp: 00117ff4 esp: 00117fd8
    
    Please keep in mind 486, dont use rdtsc/cpuid in generic code, or if you do 
make sure make it non-default option.
    
    Change that broke it: 
http://review.coreboot.org/#/c/749/7/src/boot/hardwaremain.c
    
    Change-Id: I974b25377c20a11430b35b24dcc275d8cbfd2b9a
    Signed-off-by: Rudolf Marek <[email protected]>
---
 src/boot/hardwaremain.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/src/boot/hardwaremain.c b/src/boot/hardwaremain.c
index 489caa3..532135f 100644
--- a/src/boot/hardwaremain.c
+++ b/src/boot/hardwaremain.c
@@ -57,9 +57,10 @@ void hardwaremain(int boot_complete);
 void hardwaremain(int boot_complete)
 {
        struct lb_memory *lb_mem;
+#if CONFIG_COLLECT_TIMESTAMPS
        tsc_t timestamps[6];
-
        timestamps[0] = rdtsc();
+#endif
        post_code(POST_ENTRY_RAMSTAGE);
 
        /* console_init() MUST PRECEDE ALL printk()! */
@@ -81,26 +82,37 @@ void hardwaremain(int boot_complete)
        /* FIXME: Is there a better way to handle this? */
        init_timer();
 
+#if CONFIG_COLLECT_TIMESTAMPS
        timestamps[1] = rdtsc();
+#endif
        /* Find the devices we don't have hard coded knowledge about. */
        dev_enumerate();
        post_code(POST_DEVICE_ENUMERATION_COMPLETE);
 
+#if CONFIG_COLLECT_TIMESTAMPS
        timestamps[2] = rdtsc();
+#endif
        /* Now compute and assign the bus resources. */
        dev_configure();
        post_code(POST_DEVICE_CONFIGURATION_COMPLETE);
 
+#if CONFIG_COLLECT_TIMESTAMPS
        timestamps[3] = rdtsc();
+#endif
        /* Now actually enable devices on the bus */
        dev_enable();
 
+#if CONFIG_COLLECT_TIMESTAMPS
        timestamps[4] = rdtsc();
+#endif
        /* And of course initialize devices on the bus */
        dev_initialize();
        post_code(POST_DEVICES_ENABLED);
 
+#if CONFIG_COLLECT_TIMESTAMPS
        timestamps[5] = rdtsc();
+#endif
+
 #if CONFIG_WRITE_HIGH_TABLES == 1
        cbmem_initialize();
 #if CONFIG_CONSOLE_CBMEM

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

Reply via email to