summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/sandbox/cpu/cpu.c11
-rw-r--r--common/bootstage.c19
-rw-r--r--include/bootstage.h3
3 files changed, 14 insertions, 19 deletions
diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c
index 3fe99b8..eefed2e 100644
--- a/arch/sandbox/cpu/cpu.c
+++ b/arch/sandbox/cpu/cpu.c
@@ -139,3 +139,14 @@ done:
return 0;
}
+
+ulong timer_get_boot_us(void)
+{
+ static uint64_t base_count;
+ uint64_t count = os_get_nsec();
+
+ if (!base_count)
+ base_count = count;
+
+ return (count - base_count) / 1000;
+}
diff --git a/common/bootstage.c b/common/bootstage.c
index 35bce3d..bcfbda9 100644
--- a/common/bootstage.c
+++ b/common/bootstage.c
@@ -8,7 +8,7 @@
/*
* This module records the progress of boot and arbitrary commands, and
* permits accurate timestamping of each.
- *
+ *
* TBD: Pass timings to kernel in the FDT
*/
@@ -292,23 +292,6 @@ void bootstage_report(void)
}
}
-ulong __timer_get_boot_us(void)
-{
- static ulong base_time;
-
- /*
- * We can't implement this properly. Return 0 on the first call and
- * larger values after that.
- */
- if (base_time)
- return get_timer(base_time) * 1000;
- base_time = get_timer(0);
- return 0;
-}
-
-ulong timer_get_boot_us(void)
- __attribute__((weak, alias("__timer_get_boot_us")));
-
/**
* Append data to a memory buffer
*
diff --git a/include/bootstage.h b/include/bootstage.h
index a589be6..6ee923c 100644
--- a/include/bootstage.h
+++ b/include/bootstage.h
@@ -2,6 +2,7 @@
* This file implements recording of each stage of the boot process. It is
* intended to implement timing of each stage, reporting this information
* to the user and passing it to the OS for logging / further analysis.
+ * Note that it requires timer_get_boot_us() to be defined by the board
*
* Copyright (c) 2011 The Chromium OS Authors.
*
@@ -209,7 +210,7 @@ enum bootstage_id {
/*
* Return the time since boot in microseconds, This is needed for bootstage
* and should be defined in CPU- or board-specific code. If undefined then
- * millisecond resolution will be used (the standard get_timer()).
+ * you will get a link error.
*/
ulong timer_get_boot_us(void);