aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/time.c
diff options
context:
space:
mode:
authorKeir Fraser <keir@xen.org>2010-12-15 10:49:57 +0000
committerKeir Fraser <keir@xen.org>2010-12-15 10:49:57 +0000
commite9a67fa1885580368fb00de24678671692095d80 (patch)
treec31301884053bf6b237a129e0d1916f0bcee6c8e /xen/arch/x86/time.c
parente28218a339349c04ec5912ec10faaa6cca065dea (diff)
downloadxen-e9a67fa1885580368fb00de24678671692095d80.tar.gz
xen-e9a67fa1885580368fb00de24678671692095d80.tar.bz2
xen-e9a67fa1885580368fb00de24678671692095d80.zip
x86: Define a new function gtsc_to_gtime()
Define it to do the transform from guest tsc to guest time. Fix the typo in gtime_to_gtsc() definition. Signed-off-by: Wei Gang <gang.wei@intel.com>
Diffstat (limited to 'xen/arch/x86/time.c')
-rw-r--r--xen/arch/x86/time.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index d57a9cb518..0be33d97e2 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -1634,11 +1634,20 @@ static void __init tsc_parse(const char *s)
}
custom_param("tsc", tsc_parse);
-u64 gtime_to_gtsc(struct domain *d, u64 tsc)
+u64 gtime_to_gtsc(struct domain *d, u64 time)
{
if ( !is_hvm_domain(d) )
- tsc = max_t(s64, tsc - d->arch.vtsc_offset, 0);
- return scale_delta(tsc, &d->arch.ns_to_vtsc);
+ time = max_t(s64, time - d->arch.vtsc_offset, 0);
+ return scale_delta(time, &d->arch.ns_to_vtsc);
+}
+
+u64 gtsc_to_gtime(struct domain *d, u64 tsc)
+{
+ u64 time = scale_delta(tsc, &d->arch.vtsc_to_ns);
+
+ if ( !is_hvm_domain(d) )
+ time += d->arch.vtsc_offset;
+ return time;
}
void pv_soft_rdtsc(struct vcpu *v, struct cpu_user_regs *regs, int rdtscp)