|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86: replace a few do_div() uses
commit 8dc44294806c83456794ba9488b4b440aa6193c2
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Fri Feb 18 14:47:25 2022 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Feb 18 14:47:25 2022 +0100
x86: replace a few do_div() uses
When the macro's "return value" is not used, the macro use can be
replaced by a simply division, avoiding some obfuscation.
According to my observations, no change to generated code.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
xen/arch/x86/cpu/intel.c | 3 +--
xen/arch/x86/hpet.c | 5 +----
xen/arch/x86/nmi.c | 5 ++---
xen/arch/x86/time.c | 6 ++----
4 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
index d7c6e2bd7d..eb5fba35ca 100644
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -424,9 +424,8 @@ static void intel_log_freq(const struct cpuinfo_x86 *c)
unsigned long long val = ecx;
val *= ebx;
- do_div(val, eax);
printk("CPU%u: TSC: %u Hz * %u / %u = %Lu Hz\n",
- smp_processor_id(), ecx, ebx, eax, val);
+ smp_processor_id(), ecx, ebx, eax, val / eax);
}
else if ( ecx | eax | ebx )
{
diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c
index afe104dc93..2fe8b005a5 100644
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -105,10 +105,7 @@ custom_param("hpet", parse_hpet_param);
static inline unsigned long div_sc(unsigned long ticks, unsigned long nsec,
int shift)
{
- uint64_t tmp = ((uint64_t)ticks) << shift;
-
- do_div(tmp, nsec);
- return (unsigned long) tmp;
+ return ((uint64_t)ticks << shift) / nsec;
}
/*
diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
index ab94a96c4d..c515de6336 100644
--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -292,10 +292,9 @@ static void clear_msr_range(unsigned int base, unsigned
int n)
static inline void write_watchdog_counter(const char *descr)
{
- u64 count = (u64)cpu_khz * 1000;
+ uint64_t count = cpu_khz * 1000ULL / nmi_hz;
- do_div(count, nmi_hz);
- if(descr)
+ if ( descr )
Dprintk("setting %s to -%#"PRIx64"\n", descr, count);
wrmsrl(nmi_perfctr_msr, 0 - count);
}
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 17f64a6ccd..bc41a3aa37 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -615,8 +615,7 @@ static uint64_t xen_timer_cpu_frequency(void)
struct vcpu_time_info *info = &this_cpu(vcpu_info)->time;
uint64_t freq;
- freq = 1000000000ULL << 32;
- do_div(freq, info->tsc_to_system_mul);
+ freq = (1000000000ULL << 32) / info->tsc_to_system_mul;
if ( info->tsc_shift < 0 )
freq <<= -info->tsc_shift;
else
@@ -2178,8 +2177,7 @@ void __init early_time_init(void)
set_time_scale(&t->tsc_scale, tmp);
t->stamp.local_tsc = boot_tsc_stamp;
- do_div(tmp, 1000);
- cpu_khz = (unsigned long)tmp;
+ cpu_khz = tmp / 1000;
printk("Detected %lu.%03lu MHz processor.\n",
cpu_khz / 1000, cpu_khz % 1000);
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |