diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c index 3fe99b853d573bce6a81394c22c7c5655250d9ec..eefed2ebd9617c41558764111531d2288b6354d5 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 35bce3d881a5b4151bc68382feae60d0fb2720f5..bcfbda99e5ef32336559ac0a9493b764f0b0ad5b 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 a589be6316ee45ff73e7102143523599f5a5c6eb..6ee923c2ebd606f21ea578f5c188559d8eeb04d6 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);