diff --git a/arch/x86_64/src/intel64/intel64_tsc_tickless.c b/arch/x86_64/src/intel64/intel64_tsc_tickless.c index 681820eb3a6..906346b8531 100644 --- a/arch/x86_64/src/intel64/intel64_tsc_tickless.c +++ b/arch/x86_64/src/intel64/intel64_tsc_tickless.c @@ -147,7 +147,8 @@ void up_timer_initialize(void) { uint64_t tsc = rdtscp(); #ifdef CONFIG_ARCH_INTEL64_HAVE_TSC_ADJUST - write_msr(MSR_IA32_TSC_ADJUST, 0 - tsc); + uint64_t offset = read_msr(MSR_IA32_TSC_ADJUST) - tsc; + write_msr(MSR_IA32_TSC_ADJUST, offset); #else g_start_tsc = tsc; #endif