From 1d946ebfc22e88b955a94e26b8130f1c6a15589c Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 6 Jan 2003 01:53:55 +0000 Subject: [PATCH] Move the itm reload to a single place rather than having two identical copies of the reload. Note that we use the precomputed itm_reload value so that we can avoid a division in the kernel. The ia64 cpu does not have integer divide, so this would have been done by a floating point operation. --- sys/ia64/ia64/interrupt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/ia64/ia64/interrupt.c b/sys/ia64/ia64/interrupt.c index 7452bca9b2a9..6b82a7ca5d20 100644 --- a/sys/ia64/ia64/interrupt.c +++ b/sys/ia64/ia64/interrupt.c @@ -123,19 +123,19 @@ interrupt(u_int64_t vector, struct trapframe *framep) intrcnt[INTRCNT_CLOCK]++; #endif critical_enter(); + /* Rearm so we get the next clock interrupt */ + ia64_set_itm(ia64_get_itc() + itm_reload); #ifdef SMP clks[PCPU_GET(cpuid)]++; /* Only the BSP runs the real clock */ if (PCPU_GET(cpuid) == 0) { #endif - ia64_set_itm(ia64_get_itc() + itm_reload); hardclock((struct clockframe *)framep); /* divide hz (1024) by 8 to get stathz (128) */ if ((++schedclk2 & 0x7) == 0) statclock((struct clockframe *)framep); #ifdef SMP } else { - ia64_set_itm(ia64_get_itc() + itm_reload); mtx_lock_spin(&sched_lock); hardclock_process(curthread, TRAPF_USERMODE(framep)); if ((schedclk2 & 0x7) == 0)