git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
sparc64
/
kernel
/
smp.c
diff --git
a/arch/sparc64/kernel/smp.c
b/arch/sparc64/kernel/smp.c
index
f62bf3a
..
fc99f7b
100644
(file)
--- a/
arch/sparc64/kernel/smp.c
+++ b/
arch/sparc64/kernel/smp.c
@@
-31,6
+31,7
@@
#include <asm/cpudata.h>
#include <asm/irq.h>
#include <asm/cpudata.h>
#include <asm/irq.h>
+#include <asm/irq_regs.h>
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/oplib.h>
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/oplib.h>
@@
-1187,6
+1188,7
@@
void smp_percpu_timer_interrupt(struct pt_regs *regs)
unsigned long compare, tick, pstate;
int cpu = smp_processor_id();
int user = user_mode(regs);
unsigned long compare, tick, pstate;
int cpu = smp_processor_id();
int user = user_mode(regs);
+ struct pt_regs *old_regs;
/*
* Check for level 14 softint.
/*
* Check for level 14 softint.
@@
-1203,8
+1205,9
@@
void smp_percpu_timer_interrupt(struct pt_regs *regs)
clear_softint(tick_mask);
}
clear_softint(tick_mask);
}
+ old_regs = set_irq_regs(regs);
do {
do {
- profile_tick(CPU_PROFILING
, regs
);
+ profile_tick(CPU_PROFILING);
if (!--prof_counter(cpu)) {
irq_enter();
if (!--prof_counter(cpu)) {
irq_enter();
@@
-1236,6
+1239,7
@@
void smp_percpu_timer_interrupt(struct pt_regs *regs)
: /* no outputs */
: "r" (pstate));
} while (time_after_eq(tick, compare));
: /* no outputs */
: "r" (pstate));
} while (time_after_eq(tick, compare));
+ set_irq_regs(old_regs);
}
static void __init smp_setup_percpu_timer(void)
}
static void __init smp_setup_percpu_timer(void)
@@
-1384,7
+1388,7
@@
void __devinit smp_prepare_boot_cpu(void)
{
}
{
}
-int __
dev
init __cpu_up(unsigned int cpu)
+int __
cpu
init __cpu_up(unsigned int cpu)
{
int ret = smp_boot_one_cpu(cpu);
{
int ret = smp_boot_one_cpu(cpu);
@@
-1443,11
+1447,8
@@
void __init setup_per_cpu_areas(void)
char *ptr;
/* Copy section for each CPU (we discard the original) */
char *ptr;
/* Copy section for each CPU (we discard the original) */
- goal = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES);
-#ifdef CONFIG_MODULES
- if (goal < PERCPU_ENOUGH_ROOM)
- goal = PERCPU_ENOUGH_ROOM;
-#endif
+ goal = PERCPU_ENOUGH_ROOM;
+
__per_cpu_shift = 0;
for (size = 1UL; size < goal; size <<= 1UL)
__per_cpu_shift++;
__per_cpu_shift = 0;
for (size = 1UL; size < goal; size <<= 1UL)
__per_cpu_shift++;