summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util/cbmem/cbmem.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/util/cbmem/cbmem.c b/util/cbmem/cbmem.c
index aa73c6a67a..a11935ecdc 100644
--- a/util/cbmem/cbmem.c
+++ b/util/cbmem/cbmem.c
@@ -413,6 +413,8 @@ static const struct timestamp_id_to_name {
u32 id;
const char *name;
} timestamp_ids[] = {
+ /* Marker to report base_time. */
+ { 0, "1st timestamp" },
{ TS_START_ROMSTAGE, "start of rom stage" },
{ TS_BEFORE_INITRAM, "before ram initialization" },
{ TS_AFTER_INITRAM, "after ram initialization" },
@@ -504,6 +506,7 @@ static void dump_timestamps(void)
int i;
struct timestamp_table *tst_p;
size_t size;
+ uint64_t prev_stamp;
if (timestamps.tag != LB_TAG_TIMESTAMPS) {
fprintf(stderr, "No timestamps found in coreboot table.\n");
@@ -519,10 +522,19 @@ static void dump_timestamps(void)
unmap_memory();
tst_p = map_memory_size((unsigned long)timestamps.cbmem_addr, size);
+ /* Report the base time within the table. */
+ prev_stamp = 0;
+ timestamp_print_entry(0, tst_p->base_time, prev_stamp);
+ prev_stamp = tst_p->base_time;
+
for (i = 0; i < tst_p->num_entries; i++) {
- const struct timestamp_entry *tse_p = tst_p->entries + i;
- timestamp_print_entry(tse_p->entry_id, tse_p->entry_stamp,
- i ? tse_p[-1].entry_stamp : 0);
+ uint64_t stamp;
+ const struct timestamp_entry *tse = &tst_p->entries[i];
+
+ /* Make all timestamps absolute. */
+ stamp = tse->entry_stamp + tst_p->base_time;
+ timestamp_print_entry(tse->entry_id, stamp, prev_stamp);
+ prev_stamp = stamp;
}
unmap_memory();