aboutsummaryrefslogtreecommitdiffstats
path: root/arch/alpha/kernel/smp.c
diff options
context:
space:
mode:
authorAl Viro <viro@ftp.linux.org.uk>2006-10-07 09:17:31 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-07 13:51:14 -0400
commit8774cb815f2492a95b90a927f93a2de555753b32 (patch)
tree40725c7a7b0618811b2f09753a4e4cd88c1db3e2 /arch/alpha/kernel/smp.c
parent2850bc273776cbb1b510c5828e9e456dffb50a32 (diff)
[PATCH] minimal alpha pt_regs fixes
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Acked-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/alpha/kernel/smp.c')
-rw-r--r--arch/alpha/kernel/smp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c
index 4dc273e537fd..596780e2c7da 100644
--- a/arch/alpha/kernel/smp.c
+++ b/arch/alpha/kernel/smp.c
@@ -515,12 +515,15 @@ smp_cpus_done(unsigned int max_cpus)
515void 515void
516smp_percpu_timer_interrupt(struct pt_regs *regs) 516smp_percpu_timer_interrupt(struct pt_regs *regs)
517{ 517{
518 struct pt_regs *old_regs;
518 int cpu = smp_processor_id(); 519 int cpu = smp_processor_id();
519 unsigned long user = user_mode(regs); 520 unsigned long user = user_mode(regs);
520 struct cpuinfo_alpha *data = &cpu_data[cpu]; 521 struct cpuinfo_alpha *data = &cpu_data[cpu];
521 522
523 old_regs = set_irq_regs(regs);
524
522 /* Record kernel PC. */ 525 /* Record kernel PC. */
523 profile_tick(CPU_PROFILING, regs); 526 profile_tick(CPU_PROFILING);
524 527
525 if (!--data->prof_counter) { 528 if (!--data->prof_counter) {
526 /* We need to make like a normal interrupt -- otherwise 529 /* We need to make like a normal interrupt -- otherwise
@@ -534,6 +537,7 @@ smp_percpu_timer_interrupt(struct pt_regs *regs)
534 537
535 irq_exit(); 538 irq_exit();
536 } 539 }
540 set_irq_regs(old_regs);
537} 541}
538 542
539int __init 543int __init