timestamps: Switch from tsc_t to uint64_t
Cherry-pick from chromium and adjusted for added boards
and changed directory layout for arch/arm.
Timestamp implementation for ARMv7
Abstract the use of rdtsc() and make the timestamps
uint64_t in the generic code.
The ARM implementation uses the monotonic timer.
Original-Signed-off-by: Stefan Reinauer <reinauer@google.com>
BRANCH=none
BUG=chrome-os-partner:18637
TEST=See cbmem print timestamps
Original-Change-Id: Id377ba570094c44e6895ae75f8d6578c8865ea62
Original-Reviewed-on: https://gerrit.chromium.org/gerrit/63793
(cherry-picked from commit cc1a75e059020a39146e25b9198b0d58aa03924c)
Change-Id: Ic51fb78ddd05ba81906d9c3b35043fa14fbbed75
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/8020
Tested-by: build bot (Jenkins)
Reviewed-by: Marc Jones <marc.jones@se-eng.com>
diff --git a/src/include/cpu/x86/tsc.h b/src/include/cpu/x86/tsc.h
index 7323599..71d253b 100644
--- a/src/include/cpu/x86/tsc.h
+++ b/src/include/cpu/x86/tsc.h
@@ -53,6 +53,11 @@
);
return val;
}
+
+static inline uint64_t tsc_to_uint64(tsc_t tstamp)
+{
+ return (((uint64_t)tstamp.hi) << 32) + tstamp.lo;
+}
#endif
#if CONFIG_TSC_CONSTANT_RATE
diff --git a/src/include/timestamp.h b/src/include/timestamp.h
index 66c1d9a..ba73135 100644
--- a/src/include/timestamp.h
+++ b/src/include/timestamp.h
@@ -20,6 +20,8 @@
#ifndef __TIMESTAMP_H__
#define __TIMESTAMP_H__
+#include <stdint.h>
+
struct timestamp_entry {
uint32_t entry_id;
uint64_t entry_stamp;
@@ -59,12 +61,10 @@
};
#if CONFIG_COLLECT_TIMESTAMPS && (CONFIG_EARLY_CBMEM_INIT || !defined(__PRE_RAM__))
-#include <cpu/x86/tsc.h>
-void timestamp_init(tsc_t base);
-void timestamp_add(enum timestamp_id id, tsc_t ts_time);
+void timestamp_init(uint64_t base);
+void timestamp_add(enum timestamp_id id, uint64_t ts_time);
void timestamp_add_now(enum timestamp_id id);
void timestamp_reinit(void);
-tsc_t get_initial_timestamp(void);
#else
#define timestamp_init(base)
#define timestamp_add(id, time)
@@ -72,4 +72,8 @@
#define timestamp_reinit()
#endif
+/* Implemented by the architecture code */
+uint64_t timestamp_get(void);
+uint64_t get_initial_timestamp(void);
+
#endif