diff options
Diffstat (limited to 'arch/alpha/kernel/smp.c')
-rw-r--r-- | arch/alpha/kernel/smp.c | 33 |
1 files changed, 3 insertions, 30 deletions
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c index 9dbbcb3b9146..99ac36d5de4e 100644 --- a/arch/alpha/kernel/smp.c +++ b/arch/alpha/kernel/smp.c | |||
@@ -138,9 +138,11 @@ smp_callin(void) | |||
138 | 138 | ||
139 | /* Get our local ticker going. */ | 139 | /* Get our local ticker going. */ |
140 | smp_setup_percpu_timer(cpuid); | 140 | smp_setup_percpu_timer(cpuid); |
141 | init_clockevent(); | ||
141 | 142 | ||
142 | /* Call platform-specific callin, if specified */ | 143 | /* Call platform-specific callin, if specified */ |
143 | if (alpha_mv.smp_callin) alpha_mv.smp_callin(); | 144 | if (alpha_mv.smp_callin) |
145 | alpha_mv.smp_callin(); | ||
144 | 146 | ||
145 | /* All kernel threads share the same mm context. */ | 147 | /* All kernel threads share the same mm context. */ |
146 | atomic_inc(&init_mm.mm_count); | 148 | atomic_inc(&init_mm.mm_count); |
@@ -498,35 +500,6 @@ smp_cpus_done(unsigned int max_cpus) | |||
498 | ((bogosum + 2500) / (5000/HZ)) % 100); | 500 | ((bogosum + 2500) / (5000/HZ)) % 100); |
499 | } | 501 | } |
500 | 502 | ||
501 | |||
502 | void | ||
503 | smp_percpu_timer_interrupt(struct pt_regs *regs) | ||
504 | { | ||
505 | struct pt_regs *old_regs; | ||
506 | int cpu = smp_processor_id(); | ||
507 | unsigned long user = user_mode(regs); | ||
508 | struct cpuinfo_alpha *data = &cpu_data[cpu]; | ||
509 | |||
510 | old_regs = set_irq_regs(regs); | ||
511 | |||
512 | /* Record kernel PC. */ | ||
513 | profile_tick(CPU_PROFILING); | ||
514 | |||
515 | if (!--data->prof_counter) { | ||
516 | /* We need to make like a normal interrupt -- otherwise | ||
517 | timer interrupts ignore the global interrupt lock, | ||
518 | which would be a Bad Thing. */ | ||
519 | irq_enter(); | ||
520 | |||
521 | update_process_times(user); | ||
522 | |||
523 | data->prof_counter = data->prof_multiplier; | ||
524 | |||
525 | irq_exit(); | ||
526 | } | ||
527 | set_irq_regs(old_regs); | ||
528 | } | ||
529 | |||
530 | int | 503 | int |
531 | setup_profiling_timer(unsigned int multiplier) | 504 | setup_profiling_timer(unsigned int multiplier) |
532 | { | 505 | { |