Make the prof_counter and prof_old_counter arrays use per-cpu data, and give
them static scope.

Also fix a signedness bug in the voyager implementation (from James)


 i386/kernel/apic.c              |   16 +++++++++-------
 i386/mach-voyager/voyager_smp.c |   16 +++++++++-------
 2 files changed, 18 insertions(+), 14 deletions(-)

diff -puN arch/i386/kernel/apic.c~profiler-make-static arch/i386/kernel/apic.c
--- 25/arch/i386/kernel/apic.c~profiler-make-static	2003-02-17 16:51:39.000000000 -0800
+++ 25-akpm/arch/i386/kernel/apic.c	2003-02-17 16:51:39.000000000 -0800
@@ -50,9 +50,9 @@ void __init apic_intr_init(void)
 /* Using APIC to generate smp_local_timer_interrupt? */
 int using_apic_timer = 0;
 
-int prof_multiplier[NR_CPUS] = { 1, };
-int prof_old_multiplier[NR_CPUS] = { 1, };
-DEFINE_PER_CPU(int, prof_counter) = 1;
+static DEFINE_PER_CPU(int, prof_multiplier) = 1;
+static DEFINE_PER_CPU(int, prof_old_multiplier) = 1;
+static DEFINE_PER_CPU(int, prof_counter) = 1;
 
 void enable_NMI_through_LVT0 (void * dummy)
 {
@@ -986,7 +986,7 @@ int setup_profiling_timer(unsigned int m
 	 * accordingly.
 	 */
 	for (i = 0; i < NR_CPUS; ++i)
-		prof_multiplier[i] = multiplier;
+		per_cpu(prof_multiplier, i) = multiplier;
 
 	return 0;
 }
@@ -1018,12 +1018,14 @@ inline void smp_local_timer_interrupt(st
 		 *
 		 * Interrupts are already masked off at this point.
 		 */
-		per_cpu(prof_counter, cpu) = prof_multiplier[cpu];
-		if (per_cpu(prof_counter, cpu) != prof_old_multiplier[cpu]) {
+		per_cpu(prof_counter, cpu) = per_cpu(prof_multiplier, cpu);
+		if (per_cpu(prof_counter, cpu) !=
+					per_cpu(prof_old_multiplier, cpu)) {
 			__setup_APIC_LVTT(
 					calibration_result/
 					per_cpu(prof_counter, cpu));
-			prof_old_multiplier[cpu] = per_cpu(prof_counter, cpu);
+			per_cpu(prof_old_multiplier, cpu) =
+						per_cpu(prof_counter, cpu);
 		}
 
 #ifdef CONFIG_SMP
diff -puN arch/i386/mach-voyager/voyager_smp.c~profiler-make-static arch/i386/mach-voyager/voyager_smp.c
--- 25/arch/i386/mach-voyager/voyager_smp.c~profiler-make-static	2003-02-17 16:51:39.000000000 -0800
+++ 25-akpm/arch/i386/mach-voyager/voyager_smp.c	2003-02-17 16:52:08.000000000 -0800
@@ -234,9 +234,9 @@ static int cpucount = 0;
 static __u32 trampoline_base;
 
 /* The per cpu profile stuff - used in smp_local_timer_interrupt */
-static unsigned int prof_multiplier[NR_CPUS] __cacheline_aligned = { 1, };
-static unsigned int prof_old_multiplier[NR_CPUS] __cacheline_aligned = { 1, };
-static DEFINE_PER_CPU(unsigned int, prof_counter) =  1;
+static DEFINE_PER_CPU(int, prof_multiplier) = 1;
+static DEFINE_PER_CPU(int, prof_old_multiplier) = 1;
+static DEFINE_PER_CPU(int, prof_counter) =  1;
 
 /* the map used to check if a CPU has booted */
 static __u32 cpu_booted_map;
@@ -1318,10 +1318,12 @@ smp_local_timer_interrupt(struct pt_regs
 		 *
 		 * Interrupts are already masked off at this point.
 		 */
-		per_cpu(prof_counter,cpu) = prof_multiplier[cpu];
-		if (per_cpu(prof_counter, cpu) != prof_old_multiplier[cpu]) {
+		per_cpu(prof_counter,cpu) = per_cpu(prof_multiplier, cpu);
+		if (per_cpu(prof_counter, cpu) !=
+					per_cpu(prof_old_multiplier, cpu)) {
 			/* FIXME: need to update the vic timer tick here */
-			prof_old_multiplier[cpu] = per_cpu(prof_counter, cpu);
+			per_cpu(prof_old_multiplier, cpu) =
+						per_cpu(prof_counter, cpu);
 		}
 
 		update_process_times(user_mode(regs));
@@ -1406,7 +1408,7 @@ setup_profiling_timer(unsigned int multi
 	 * accounting.
 	 */
 	for (i = 0; i < NR_CPUS; ++i)
-		prof_multiplier[i] = multiplier;
+		per_cpu(prof_multiplier, i) = multiplier;
 
 	return 0;
 }

_