|
@@ -138,11 +138,14 @@ static int ppro_check_ctrs(struct pt_regs * const regs,
|
|
|
static void ppro_start(struct op_msrs const * const msrs)
|
|
|
{
|
|
|
unsigned int low,high;
|
|
|
+ int i;
|
|
|
|
|
|
- if (reset_value[0]) {
|
|
|
- CTRL_READ(low, high, msrs, 0);
|
|
|
- CTRL_SET_ACTIVE(low);
|
|
|
- CTRL_WRITE(low, high, msrs, 0);
|
|
|
+ for (i = 0; i < NUM_COUNTERS; ++i) {
|
|
|
+ if (reset_value[i]) {
|
|
|
+ CTRL_READ(low, high, msrs, i);
|
|
|
+ CTRL_SET_ACTIVE(low);
|
|
|
+ CTRL_WRITE(low, high, msrs, i);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -150,11 +153,14 @@ static void ppro_start(struct op_msrs const * const msrs)
|
|
|
static void ppro_stop(struct op_msrs const * const msrs)
|
|
|
{
|
|
|
unsigned int low,high;
|
|
|
+ int i;
|
|
|
|
|
|
- if (reset_value[0]) {
|
|
|
- CTRL_READ(low, high, msrs, 0);
|
|
|
+ for (i = 0; i < NUM_COUNTERS; ++i) {
|
|
|
+ if (!reset_value[i])
|
|
|
+ continue;
|
|
|
+ CTRL_READ(low, high, msrs, i);
|
|
|
CTRL_SET_INACTIVE(low);
|
|
|
- CTRL_WRITE(low, high, msrs, 0);
|
|
|
+ CTRL_WRITE(low, high, msrs, i);
|
|
|
}
|
|
|
}
|
|
|
|