diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2006-10-08 09:30:44 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-08 15:32:35 -0400 |
commit | 0d84438d98777b0f9425d39121c42f47a06878ca (patch) | |
tree | 9d3486664ecf836183f982f7011c5b8b37c4091e /arch/sparc/kernel/sun4m_smp.c | |
parent | 7ff3e52cf2947ebd38c84159af68e5a29d228f6c (diff) |
[PATCH] sparc32 pt_regs fixes
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/sparc/kernel/sun4m_smp.c')
-rw-r--r-- | arch/sparc/kernel/sun4m_smp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c index 7d4a649138f6..e2d9c018bd56 100644 --- a/arch/sparc/kernel/sun4m_smp.c +++ b/arch/sparc/kernel/sun4m_smp.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/profile.h> | 19 | #include <linux/profile.h> |
20 | #include <asm/cacheflush.h> | 20 | #include <asm/cacheflush.h> |
21 | #include <asm/tlbflush.h> | 21 | #include <asm/tlbflush.h> |
22 | #include <asm/irq_regs.h> | ||
22 | 23 | ||
23 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
24 | #include <asm/atomic.h> | 25 | #include <asm/atomic.h> |
@@ -353,11 +354,14 @@ void smp4m_cross_call_irq(void) | |||
353 | 354 | ||
354 | void smp4m_percpu_timer_interrupt(struct pt_regs *regs) | 355 | void smp4m_percpu_timer_interrupt(struct pt_regs *regs) |
355 | { | 356 | { |
357 | struct pt_regs *old_regs; | ||
356 | int cpu = smp_processor_id(); | 358 | int cpu = smp_processor_id(); |
357 | 359 | ||
360 | old_regs = set_irq_regs(regs); | ||
361 | |||
358 | clear_profile_irq(cpu); | 362 | clear_profile_irq(cpu); |
359 | 363 | ||
360 | profile_tick(CPU_PROFILING, regs); | 364 | profile_tick(CPU_PROFILING); |
361 | 365 | ||
362 | if(!--prof_counter(cpu)) { | 366 | if(!--prof_counter(cpu)) { |
363 | int user = user_mode(regs); | 367 | int user = user_mode(regs); |
@@ -368,6 +372,7 @@ void smp4m_percpu_timer_interrupt(struct pt_regs *regs) | |||
368 | 372 | ||
369 | prof_counter(cpu) = prof_multiplier(cpu); | 373 | prof_counter(cpu) = prof_multiplier(cpu); |
370 | } | 374 | } |
375 | set_irq_regs(old_regs); | ||
371 | } | 376 | } |
372 | 377 | ||
373 | extern unsigned int lvl14_resolution; | 378 | extern unsigned int lvl14_resolution; |