[PATCH 3/4] ARM: perf: Allow the use of the PMUv3 driver on 32bit ARM

Vladimir Murzin vladimir.murzin at arm.com
Thu May 4 04:00:40 PDT 2017


Hi Marc,

On 24/03/17 12:15, Marc Zyngier wrote:
> The only thing stopping the PMUv3 driver from compiling on 32bit
> is the lack of defined system registers names. This is easily
> solved by providing the sysreg accessors and updating the Kconfig entry.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier at arm.com>
> ---
>  arch/arm/include/asm/arm_pmuv3.h | 115 +++++++++++++++++++++++++++++++++++++++
>  drivers/perf/Kconfig             |   4 +-
>  2 files changed, 117 insertions(+), 2 deletions(-)
>  create mode 100644 arch/arm/include/asm/arm_pmuv3.h
> 
> diff --git a/arch/arm/include/asm/arm_pmuv3.h b/arch/arm/include/asm/arm_pmuv3.h
> new file mode 100644
> index 000000000000..df14de3d7bdf
> --- /dev/null
> +++ b/arch/arm/include/asm/arm_pmuv3.h
> @@ -0,0 +1,115 @@
> +/*
> + * Copyright (C) 2012 ARM Ltd.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program.  If not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef __ASM_PMUV3_H
> +#define __ASM_PMUV3_H
> +
> +#include <asm/cp15.h>
> +
> +#define pmcr		__ACCESS_CP15(c9, 0, c12, 0)
> +#define pmselr		__ACCESS_CP15(c9, 0, c12, 5)
> +#define pmccntr		__ACCESS_CP15_64(0, c9)
> +#define pmxevcntr	__ACCESS_CP15(c9, 0, c13, 2)
> +#define pmxevtyper	__ACCESS_CP15(c9, 0, c13, 1)
> +#define pmcntenset	__ACCESS_CP15(c9, 0, c12, 1)
> +#define pmcntenclr	__ACCESS_CP15(c9, 0, c12, 2)
> +#define pmintenset	__ACCESS_CP15(c9, 0, c12, 1)

Encoding is not right here

To access the PMINTENSET:

MRC p15,0,<Rt>,c9,c14,1 ; Read PMINTENSET into Rt

MCR p15,0,<Rt>,c9,c14,1 ; Write Rt to PMINTENSET


> +#define pmintenclr	__ACCESS_CP15(c9, 0, c12, 2)

Ditto

To access the PMINTENCLR:

MRC p15,0,<Rt>,c9,c14,2 ; Read PMINTENCLR into Rt

MCR p15,0,<Rt>,c9,c14,2 ; Write Rt to PMINTENCLR


> +#define pmovsclr	__ACCESS_CP15(c9, 0, c12, 3)

Nit: in 32-bit world it is named as PMOVSR.

> +#define pmceid0		__ACCESS_CP15(c9, 0, c12, 6)
> +#define pmceid1		__ACCESS_CP15(c9, 0, c12, 7)

Can all these defines be done in uppercase to be in align with existent users
of __ACCESS_CP15() macro?

Thanks
Vladimir



More information about the linux-arm-kernel mailing list