diff options
Diffstat (limited to 'arch/mips/oprofile/op_model_loongson2.c')
-rw-r--r-- | arch/mips/oprofile/op_model_loongson2.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/mips/oprofile/op_model_loongson2.c b/arch/mips/oprofile/op_model_loongson2.c index d0d24e047676..60d3ea602118 100644 --- a/arch/mips/oprofile/op_model_loongson2.c +++ b/arch/mips/oprofile/op_model_loongson2.c | |||
@@ -43,6 +43,12 @@ static struct loongson2_register_config { | |||
43 | static char *oprofid = "LoongsonPerf"; | 43 | static char *oprofid = "LoongsonPerf"; |
44 | static irqreturn_t loongson2_perfcount_handler(int irq, void *dev_id); | 44 | static irqreturn_t loongson2_perfcount_handler(int irq, void *dev_id); |
45 | 45 | ||
46 | static void reset_counters(void *arg) | ||
47 | { | ||
48 | write_c0_perfctrl(0); | ||
49 | write_c0_perfcnt(0); | ||
50 | } | ||
51 | |||
46 | static void loongson2_reg_setup(struct op_counter_config *cfg) | 52 | static void loongson2_reg_setup(struct op_counter_config *cfg) |
47 | { | 53 | { |
48 | unsigned int ctrl = 0; | 54 | unsigned int ctrl = 0; |
@@ -139,7 +145,7 @@ static int __init loongson2_init(void) | |||
139 | 145 | ||
140 | static void loongson2_exit(void) | 146 | static void loongson2_exit(void) |
141 | { | 147 | { |
142 | write_c0_perfctrl(0); | 148 | reset_counters(NULL); |
143 | free_irq(LOONGSON2_PERFCNT_IRQ, oprofid); | 149 | free_irq(LOONGSON2_PERFCNT_IRQ, oprofid); |
144 | } | 150 | } |
145 | 151 | ||