// Copyright 2016 The Fuchsia Authors
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT

#include <arch/x86.h>
#include <arch/x86/tsc.h>
#include <arch/x86/feature.h>

#define X86_MSR_IA32_TIME_STAMP_COUNTER 0x10

uint64_t tsc_adj = 0;

void x86_tsc_adjust(void)
{
    if (x86_feature_test(X86_FEATURE_TSC_ADJUST))
        write_msr(X86_MSR_IA32_TSC_ADJUST, tsc_adj);
}

void x86_tsc_store_adjustment(void)
{
    if (x86_feature_test(X86_FEATURE_TSC_ADJUST))
        tsc_adj = read_msr(X86_MSR_IA32_TIME_STAMP_COUNTER);
}
