mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
powerpc/kernel/sysfs: Cleanup set up macros for PMC/non-PMC SPRs
Currently PMC (Performance Monitor Counter) setup macros are used for other SPRs. Since not all SPRs are PMC related, this patch modifies the exisiting macro and uses it to setup both PMC and non PMC SPRs accordingly. Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com> Acked-by: Olof Johansson <olof@lixom.net> Acked-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
c041cfa2af
commit
fd7e42960d
1 changed files with 38 additions and 34 deletions
|
@ -108,14 +108,14 @@ void ppc_enable_pmcs(void)
|
|||
}
|
||||
EXPORT_SYMBOL(ppc_enable_pmcs);
|
||||
|
||||
#define SYSFS_PMCSETUP(NAME, ADDRESS) \
|
||||
#define __SYSFS_SPRSETUP(NAME, ADDRESS, EXTRA) \
|
||||
static void read_##NAME(void *val) \
|
||||
{ \
|
||||
*(unsigned long *)val = mfspr(ADDRESS); \
|
||||
} \
|
||||
static void write_##NAME(void *val) \
|
||||
{ \
|
||||
ppc_enable_pmcs(); \
|
||||
EXTRA; \
|
||||
mtspr(ADDRESS, *(unsigned long *)val); \
|
||||
} \
|
||||
static ssize_t show_##NAME(struct device *dev, \
|
||||
|
@ -140,6 +140,10 @@ static ssize_t __used \
|
|||
return count; \
|
||||
}
|
||||
|
||||
#define SYSFS_PMCSETUP(NAME, ADDRESS) \
|
||||
__SYSFS_SPRSETUP(NAME, ADDRESS, ppc_enable_pmcs())
|
||||
#define SYSFS_SPRSETUP(NAME, ADDRESS) \
|
||||
__SYSFS_SPRSETUP(NAME, ADDRESS, )
|
||||
|
||||
/* Let's define all possible registers, we'll only hook up the ones
|
||||
* that are implemented on the current processor
|
||||
|
@ -175,10 +179,10 @@ SYSFS_PMCSETUP(pmc7, SPRN_PMC7);
|
|||
SYSFS_PMCSETUP(pmc8, SPRN_PMC8);
|
||||
|
||||
SYSFS_PMCSETUP(mmcra, SPRN_MMCRA);
|
||||
SYSFS_PMCSETUP(purr, SPRN_PURR);
|
||||
SYSFS_PMCSETUP(spurr, SPRN_SPURR);
|
||||
SYSFS_PMCSETUP(dscr, SPRN_DSCR);
|
||||
SYSFS_PMCSETUP(pir, SPRN_PIR);
|
||||
SYSFS_SPRSETUP(purr, SPRN_PURR);
|
||||
SYSFS_SPRSETUP(spurr, SPRN_SPURR);
|
||||
SYSFS_SPRSETUP(dscr, SPRN_DSCR);
|
||||
SYSFS_SPRSETUP(pir, SPRN_PIR);
|
||||
|
||||
/*
|
||||
Lets only enable read for phyp resources and
|
||||
|
@ -249,34 +253,34 @@ SYSFS_PMCSETUP(pa6t_pmc3, SPRN_PA6T_PMC3);
|
|||
SYSFS_PMCSETUP(pa6t_pmc4, SPRN_PA6T_PMC4);
|
||||
SYSFS_PMCSETUP(pa6t_pmc5, SPRN_PA6T_PMC5);
|
||||
#ifdef CONFIG_DEBUG_KERNEL
|
||||
SYSFS_PMCSETUP(hid0, SPRN_HID0);
|
||||
SYSFS_PMCSETUP(hid1, SPRN_HID1);
|
||||
SYSFS_PMCSETUP(hid4, SPRN_HID4);
|
||||
SYSFS_PMCSETUP(hid5, SPRN_HID5);
|
||||
SYSFS_PMCSETUP(ima0, SPRN_PA6T_IMA0);
|
||||
SYSFS_PMCSETUP(ima1, SPRN_PA6T_IMA1);
|
||||
SYSFS_PMCSETUP(ima2, SPRN_PA6T_IMA2);
|
||||
SYSFS_PMCSETUP(ima3, SPRN_PA6T_IMA3);
|
||||
SYSFS_PMCSETUP(ima4, SPRN_PA6T_IMA4);
|
||||
SYSFS_PMCSETUP(ima5, SPRN_PA6T_IMA5);
|
||||
SYSFS_PMCSETUP(ima6, SPRN_PA6T_IMA6);
|
||||
SYSFS_PMCSETUP(ima7, SPRN_PA6T_IMA7);
|
||||
SYSFS_PMCSETUP(ima8, SPRN_PA6T_IMA8);
|
||||
SYSFS_PMCSETUP(ima9, SPRN_PA6T_IMA9);
|
||||
SYSFS_PMCSETUP(imaat, SPRN_PA6T_IMAAT);
|
||||
SYSFS_PMCSETUP(btcr, SPRN_PA6T_BTCR);
|
||||
SYSFS_PMCSETUP(pccr, SPRN_PA6T_PCCR);
|
||||
SYSFS_PMCSETUP(rpccr, SPRN_PA6T_RPCCR);
|
||||
SYSFS_PMCSETUP(der, SPRN_PA6T_DER);
|
||||
SYSFS_PMCSETUP(mer, SPRN_PA6T_MER);
|
||||
SYSFS_PMCSETUP(ber, SPRN_PA6T_BER);
|
||||
SYSFS_PMCSETUP(ier, SPRN_PA6T_IER);
|
||||
SYSFS_PMCSETUP(sier, SPRN_PA6T_SIER);
|
||||
SYSFS_PMCSETUP(siar, SPRN_PA6T_SIAR);
|
||||
SYSFS_PMCSETUP(tsr0, SPRN_PA6T_TSR0);
|
||||
SYSFS_PMCSETUP(tsr1, SPRN_PA6T_TSR1);
|
||||
SYSFS_PMCSETUP(tsr2, SPRN_PA6T_TSR2);
|
||||
SYSFS_PMCSETUP(tsr3, SPRN_PA6T_TSR3);
|
||||
SYSFS_SPRSETUP(hid0, SPRN_HID0);
|
||||
SYSFS_SPRSETUP(hid1, SPRN_HID1);
|
||||
SYSFS_SPRSETUP(hid4, SPRN_HID4);
|
||||
SYSFS_SPRSETUP(hid5, SPRN_HID5);
|
||||
SYSFS_SPRSETUP(ima0, SPRN_PA6T_IMA0);
|
||||
SYSFS_SPRSETUP(ima1, SPRN_PA6T_IMA1);
|
||||
SYSFS_SPRSETUP(ima2, SPRN_PA6T_IMA2);
|
||||
SYSFS_SPRSETUP(ima3, SPRN_PA6T_IMA3);
|
||||
SYSFS_SPRSETUP(ima4, SPRN_PA6T_IMA4);
|
||||
SYSFS_SPRSETUP(ima5, SPRN_PA6T_IMA5);
|
||||
SYSFS_SPRSETUP(ima6, SPRN_PA6T_IMA6);
|
||||
SYSFS_SPRSETUP(ima7, SPRN_PA6T_IMA7);
|
||||
SYSFS_SPRSETUP(ima8, SPRN_PA6T_IMA8);
|
||||
SYSFS_SPRSETUP(ima9, SPRN_PA6T_IMA9);
|
||||
SYSFS_SPRSETUP(imaat, SPRN_PA6T_IMAAT);
|
||||
SYSFS_SPRSETUP(btcr, SPRN_PA6T_BTCR);
|
||||
SYSFS_SPRSETUP(pccr, SPRN_PA6T_PCCR);
|
||||
SYSFS_SPRSETUP(rpccr, SPRN_PA6T_RPCCR);
|
||||
SYSFS_SPRSETUP(der, SPRN_PA6T_DER);
|
||||
SYSFS_SPRSETUP(mer, SPRN_PA6T_MER);
|
||||
SYSFS_SPRSETUP(ber, SPRN_PA6T_BER);
|
||||
SYSFS_SPRSETUP(ier, SPRN_PA6T_IER);
|
||||
SYSFS_SPRSETUP(sier, SPRN_PA6T_SIER);
|
||||
SYSFS_SPRSETUP(siar, SPRN_PA6T_SIAR);
|
||||
SYSFS_SPRSETUP(tsr0, SPRN_PA6T_TSR0);
|
||||
SYSFS_SPRSETUP(tsr1, SPRN_PA6T_TSR1);
|
||||
SYSFS_SPRSETUP(tsr2, SPRN_PA6T_TSR2);
|
||||
SYSFS_SPRSETUP(tsr3, SPRN_PA6T_TSR3);
|
||||
#endif /* CONFIG_DEBUG_KERNEL */
|
||||
#endif /* HAS_PPC_PMC_PA6T */
|
||||
|
||||
|
|
Loading…
Reference in a new issue