* Copyright 2004, Axel DΓΆrfler, axeld@pinc-software.de.
* Distributed under the terms of the MIT License.
*/
#include <libroot_private.h>
#include <real_time_data.h>
#include <arch_cpu.h>
void
__arch_init_time(struct real_time_data *data, bool setDefaults)
{
uint32 conversionFactor;
uint64 conversionFactorNsecs;
if (setDefaults) {
data->arch_data.system_time_offset = 0;
data->arch_data.system_time_conversion_factor = 100000;
}
conversionFactor = data->arch_data.system_time_conversion_factor;
conversionFactorNsecs = (uint64)conversionFactor * 1000;
if (conversionFactorNsecs >> 32 != 0) {
__x86_setup_system_time(conversionFactor, conversionFactorNsecs >> 16,
true);
} else {
__x86_setup_system_time(conversionFactor, conversionFactorNsecs, false);
}
}
bigtime_t
__arch_get_system_time_offset(struct real_time_data *data)
{
return data->arch_data.system_time_offset;
}