[U-Boot] [PATCH 03/10] x86: Permit bootstage and timer data to be used prior to relocation

Simon Glass sjg at chromium.org
Fri Dec 14 22:13:07 CET 2012


It is useful to be able to access the timer before U-Boot has relocated
so that we can fully support bootstage.

Move the relevant variables to the data region to support this.

Signed-off-by: Simon Glass <sjg at chromium.org>
---
 arch/x86/cpu/coreboot/coreboot.c |    4 ++--
 arch/x86/cpu/interrupts.c        |    2 +-
 arch/x86/lib/timer.c             |    2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/x86/cpu/coreboot/coreboot.c b/arch/x86/cpu/coreboot/coreboot.c
index 9c9431e..22474f5 100644
--- a/arch/x86/cpu/coreboot/coreboot.c
+++ b/arch/x86/cpu/coreboot/coreboot.c
@@ -68,8 +68,8 @@ int board_early_init_r(void)
 void show_boot_progress(int val)
 {
 #if MIN_PORT80_KCLOCKS_DELAY
-	static uint32_t prev_stamp;
-	static uint32_t base;
+	static uint32_t prev_stamp __attribute__((section(".data")));
+	static uint32_t base __attribute__((section(".data")));
 
 	/*
 	 * Scale the time counter reading to avoid using 64 bit arithmetics.
diff --git a/arch/x86/cpu/interrupts.c b/arch/x86/cpu/interrupts.c
index dd30a05..60ae950 100644
--- a/arch/x86/cpu/interrupts.c
+++ b/arch/x86/cpu/interrupts.c
@@ -626,7 +626,7 @@ asm(".globl irq_common_entry\n" \
  */
 u64 get_ticks(void)
 {
-	static u64 tick_base;
+	static u64 tick_base __attribute__((section(".data")));
 	u64 now_tick = rdtsc();
 
 	if (!tick_base)
diff --git a/arch/x86/lib/timer.c b/arch/x86/lib/timer.c
index a13424b..6303ca5 100644
--- a/arch/x86/lib/timer.c
+++ b/arch/x86/lib/timer.c
@@ -37,7 +37,7 @@ struct timer_isr_function {
 
 static struct timer_isr_function *first_timer_isr;
 static unsigned long system_ticks;
-static uint64_t base_value;
+static uint64_t base_value __attribute__((section(".data")));
 
 /*
  * register_timer_isr() allows multiple architecture and board specific
-- 
1.7.7.3



More information about the U-Boot mailing list