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:
jhibbits 2016-04-09 01:02:17 +00:00
parent aebce00b4b
commit 60a000630b

View File

@ -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)