Fix a masking bug for e500 PMC.
No idea how this slipped through my regression testing. pe_code is the event to count, pe_cpu is the CPU family mask.
This commit is contained in:
parent
afa4433355
commit
c4d7f6ab97
@ -507,6 +507,7 @@ e500_allocate_pmc(int cpu, int ri, struct pmc *pm,
|
||||
pe = a->pm_ev;
|
||||
config = PMLCax_FCS | PMLCax_FCU |
|
||||
PMLCax_FCM1 | PMLCax_FCM1;
|
||||
|
||||
if (pe < PMC_EV_E500_FIRST || pe > PMC_EV_E500_LAST)
|
||||
return (EINVAL);
|
||||
|
||||
@ -517,14 +518,14 @@ e500_allocate_pmc(int cpu, int ri, struct pmc *pm,
|
||||
vers = mfpvr() >> 16;
|
||||
switch (vers) {
|
||||
case FSL_E500v1:
|
||||
pe_cpu_mask = ev->pe_code & PMC_PPC_E500V1;
|
||||
pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500V1;
|
||||
break;
|
||||
case FSL_E500v2:
|
||||
pe_cpu_mask = ev->pe_code & PMC_PPC_E500V2;
|
||||
pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500V2;
|
||||
break;
|
||||
case FSL_E500mc:
|
||||
case FSL_E5500:
|
||||
pe_cpu_mask = ev->pe_code & PMC_PPC_E500MC;
|
||||
pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500MC;
|
||||
break;
|
||||
}
|
||||
if (pe_cpu_mask == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user