diff options
Diffstat (limited to 'arch/x86/cpu/coreboot/timestamp.c')
| -rw-r--r-- | arch/x86/cpu/coreboot/timestamp.c | 42 | 
1 files changed, 41 insertions, 1 deletions
| diff --git a/arch/x86/cpu/coreboot/timestamp.c b/arch/x86/cpu/coreboot/timestamp.c index 2ca7a57bc..bd3558a02 100644 --- a/arch/x86/cpu/coreboot/timestamp.c +++ b/arch/x86/cpu/coreboot/timestamp.c @@ -39,7 +39,9 @@ static struct timestamp_table *ts_table  __attribute__((section(".data")));  void timestamp_init(void)  {  	ts_table = lib_sysinfo.tstamp_table; -	timer_set_tsc_base(ts_table->base_time); +#ifdef CONFIG_SYS_X86_TSC_TIMER +	timer_set_base(ts_table->base_time); +#endif  	timestamp_add_now(TS_U_BOOT_INITTED);  } @@ -59,3 +61,41 @@ void timestamp_add_now(enum timestamp_id id)  {  	timestamp_add(id, rdtsc());  } + +int timestamp_add_to_bootstage(void) +{ +	uint i; + +	if (!ts_table) +		return -1; + +	for (i = 0; i < ts_table->num_entries; i++) { +		struct timestamp_entry *tse = &ts_table->entries[i]; +		const char *name = NULL; + +		switch (tse->entry_id) { +		case TS_START_ROMSTAGE: +			name = "start-romstage"; +			break; +		case TS_BEFORE_INITRAM: +			name = "before-initram"; +			break; +		case TS_DEVICE_INITIALIZE: +			name = "device-initialize"; +			break; +		case TS_DEVICE_DONE: +			name = "device-done"; +			break; +		case TS_SELFBOOT_JUMP: +			name = "selfboot-jump"; +			break; +		} +		if (name) { +			bootstage_add_record(0, name, BOOTSTAGEF_ALLOC, +					     tse->entry_stamp / +							get_tbclk_mhz()); +		} +	} + +	return 0; +} |