diff -urN linux/arch/i386/kernel/smp.c linux-2.2.3-uptime/arch/i386/kernel/smp.c
--- linux/arch/i386/kernel/smp.c	Tue Feb 16 22:20:05 1999
+++ linux-2.2.3-uptime/arch/i386/kernel/smp.c	Fri Mar 19 12:59:04 1999
@@ -1705,9 +1705,8 @@
 			system=1;
 
  		irq_enter(cpu, 0);
+		update_one_process(p, 1, user, system, cpu);
 		if (p->pid) {
-			update_one_process(p, 1, user, system, cpu);
-
 			p->counter -= 1;
 			if (p->counter < 0) {
 				p->counter = 0;
@@ -1720,10 +1719,8 @@
 				kstat.cpu_user += user;
 				kstat.per_cpu_user[cpu] += user;
 			}
-
 			kstat.cpu_system += system;
 			kstat.per_cpu_system[cpu] += system;
-
 		}
 		prof_counter[cpu]=prof_multiplier[cpu];
 		irq_exit(cpu, 0);
diff -urN linux/fs/proc/array.c linux-2.2.3-uptime/fs/proc/array.c
--- linux/fs/proc/array.c	Mon Mar  8 19:07:29 1999
+++ linux-2.2.3-uptime/fs/proc/array.c	Fri Mar 19 12:58:24 1999
@@ -231,9 +231,8 @@
 	int i, len;
 	unsigned sum = 0;
 	extern unsigned long total_forks;
-	unsigned long ticks;
+	unsigned long jiffies_saved = jiffies;
 
-	ticks = jiffies * smp_num_cpus;
 	for (i = 0 ; i < NR_IRQS ; i++)
 		sum += kstat_irqs(i);
 
@@ -243,14 +242,15 @@
 		kstat.cpu_user,
 		kstat.cpu_nice,
 		kstat.cpu_system,
-		jiffies*smp_num_cpus - (kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system));
+		jiffies_saved*smp_num_cpus - \
+			(kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system));
 	for (i = 0 ; i < smp_num_cpus; i++)
 		len += sprintf(buffer + len, "cpu%d %u %u %u %lu\n",
 			i,
 			kstat.per_cpu_user[cpu_logical_map(i)],
 			kstat.per_cpu_nice[cpu_logical_map(i)],
 			kstat.per_cpu_system[cpu_logical_map(i)],
-			jiffies - (  kstat.per_cpu_user[cpu_logical_map(i)] \
+			jiffies_saved - (  kstat.per_cpu_user[cpu_logical_map(i)] \
 			           + kstat.per_cpu_nice[cpu_logical_map(i)] \
 			           + kstat.per_cpu_system[cpu_logical_map(i)]));
 	len += sprintf(buffer + len,
@@ -276,7 +276,7 @@
 		kstat.cpu_user,
 		kstat.cpu_nice,
 		kstat.cpu_system,
-		ticks - (kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system),
+		jiffies_saved - (kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system),
 #endif
 		kstat.dk_drive[0], kstat.dk_drive[1],
 		kstat.dk_drive[2], kstat.dk_drive[3],
