summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorStefan Reinauer <reinauer@chromium.org>2013-08-01 13:31:44 -0700
committerKyösti Mälkki <kyosti.malkki@gmail.com>2015-01-05 22:21:49 +0100
commit3a6550d989460f9449136814a8b1f6b051a6382d (patch)
treed60bdfd55ddcc5e45042c987d5216d9212784f60 /src/include
parent83405a1241f4b8f516f687bd00f8ea981f7c7d87 (diff)
downloadcoreboot-3a6550d989460f9449136814a8b1f6b051a6382d.tar.xz
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>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/cpu/x86/tsc.h5
-rw-r--r--src/include/timestamp.h12
2 files changed, 13 insertions, 4 deletions
diff --git a/src/include/cpu/x86/tsc.h b/src/include/cpu/x86/tsc.h
index 7323599cce..71d253ba7f 100644
--- a/src/include/cpu/x86/tsc.h
+++ b/src/include/cpu/x86/tsc.h
@@ -53,6 +53,11 @@ static inline unsigned long long rdtscll(void)
);
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 66c1d9ade5..ba73135258 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 @@ enum timestamp_id {
};
#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 @@ tsc_t get_initial_timestamp(void);
#define timestamp_reinit()
#endif
+/* Implemented by the architecture code */
+uint64_t timestamp_get(void);
+uint64_t get_initial_timestamp(void);
+
#endif