diff options
Diffstat (limited to 'arch/mips/oprofile/op_model_mipsxx.c')
-rw-r--r-- | arch/mips/oprofile/op_model_mipsxx.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/mips/oprofile/op_model_mipsxx.c b/arch/mips/oprofile/op_model_mipsxx.c index ca65469d7e30..da8cbb6899dc 100644 --- a/arch/mips/oprofile/op_model_mipsxx.c +++ b/arch/mips/oprofile/op_model_mipsxx.c | |||
@@ -31,6 +31,8 @@ | |||
31 | 31 | ||
32 | #define M_COUNTER_OVERFLOW (1UL << 31) | 32 | #define M_COUNTER_OVERFLOW (1UL << 31) |
33 | 33 | ||
34 | static int (*save_perf_irq)(void); | ||
35 | |||
34 | #ifdef CONFIG_MIPS_MT_SMP | 36 | #ifdef CONFIG_MIPS_MT_SMP |
35 | static int cpu_has_mipsmt_pertccounters; | 37 | static int cpu_has_mipsmt_pertccounters; |
36 | #define WHAT (M_TC_EN_VPE | \ | 38 | #define WHAT (M_TC_EN_VPE | \ |
@@ -369,6 +371,7 @@ static int __init mipsxx_init(void) | |||
369 | return -ENODEV; | 371 | return -ENODEV; |
370 | } | 372 | } |
371 | 373 | ||
374 | save_perf_irq = perf_irq; | ||
372 | perf_irq = mipsxx_perfcount_handler; | 375 | perf_irq = mipsxx_perfcount_handler; |
373 | 376 | ||
374 | return 0; | 377 | return 0; |
@@ -381,7 +384,7 @@ static void mipsxx_exit(void) | |||
381 | counters = counters_per_cpu_to_total(counters); | 384 | counters = counters_per_cpu_to_total(counters); |
382 | on_each_cpu(reset_counters, (void *)counters, 0, 1); | 385 | on_each_cpu(reset_counters, (void *)counters, 0, 1); |
383 | 386 | ||
384 | perf_irq = null_perf_irq; | 387 | perf_irq = save_perf_irq; |
385 | } | 388 | } |
386 | 389 | ||
387 | struct op_mips_model op_model_mipsxx_ops = { | 390 | struct op_mips_model op_model_mipsxx_ops = { |