x86: Permit bootstage and timer data to be used prior to relocation

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

Add new global_data members to support this.

Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/arch/x86/cpu/coreboot/coreboot.c b/arch/x86/cpu/coreboot/coreboot.c
index 9c9431e..f8e28f0 100644
--- a/arch/x86/cpu/coreboot/coreboot.c
+++ b/arch/x86/cpu/coreboot/coreboot.c
@@ -68,24 +68,21 @@
 void show_boot_progress(int val)
 {
 #if MIN_PORT80_KCLOCKS_DELAY
-	static uint32_t prev_stamp;
-	static uint32_t base;
-
 	/*
 	 * Scale the time counter reading to avoid using 64 bit arithmetics.
 	 * Can't use get_timer() here becuase it could be not yet
 	 * initialized or even implemented.
 	 */
-	if (!prev_stamp) {
-		base = rdtsc() / 1000;
-		prev_stamp = 0;
+	if (!gd->arch.tsc_prev) {
+		gd->arch.tsc_base_kclocks = rdtsc() / 1000;
+		gd->arch.tsc_prev = 0;
 	} else {
 		uint32_t now;
 
 		do {
-			now = rdtsc() / 1000 - base;
-		} while (now < (prev_stamp + MIN_PORT80_KCLOCKS_DELAY));
-		prev_stamp = now;
+			now = rdtsc() / 1000 - gd->arch.tsc_base_kclocks;
+		} while (now < (gd->arch.tsc_prev + MIN_PORT80_KCLOCKS_DELAY));
+		gd->arch.tsc_prev = now;
 	}
 #endif
 	outb(val, 0x80);
diff --git a/arch/x86/cpu/interrupts.c b/arch/x86/cpu/interrupts.c
index dd30a05..6dc74e3 100644
--- a/arch/x86/cpu/interrupts.c
+++ b/arch/x86/cpu/interrupts.c
@@ -626,13 +626,12 @@
  */
 u64 get_ticks(void)
 {
-	static u64 tick_base;
 	u64 now_tick = rdtsc();
 
-	if (!tick_base)
-		tick_base = now_tick;
+	if (!gd->arch.tsc_base)
+		gd->arch.tsc_base = now_tick;
 
-	return now_tick - tick_base;
+	return now_tick - gd->arch.tsc_base;
 }
 
 #define PLATFORM_INFO_MSR 0xce