Blame src/perfctr-2.6.x/linux/drivers/perfctr/ppc_compat.h

Packit 577717
/* $Id: ppc_compat.h,v 1.1.2.8 2009/01/23 17:01:02 mikpe Exp $
Packit 577717
 * Performance-monitoring counters driver.
Packit 577717
 * PPC32-specific compatibility definitions for 2.6 kernels.
Packit 577717
 *
Packit 577717
 * Copyright (C) 2004-2007, 2009  Mikael Pettersson
Packit 577717
 */
Packit 577717
#include <linux/version.h>
Packit 577717
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
Packit 577717
#include <linux/config.h>
Packit 577717
#endif
Packit 577717
Packit 577717
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
Packit 577717
#include <asm/pmc.h>
Packit 577717
#else
Packit 577717
static inline int reserve_pmc_hardware(void (*new_perf_irq)(struct pt_regs*)) { return 0; }
Packit 577717
static inline void release_pmc_hardware(void) { }
Packit 577717
#endif
Packit 577717
extern int perfctr_reserve_pmc_hardware(void);
Packit 577717
static inline void perfctr_release_pmc_hardware(void) { release_pmc_hardware(); }
Packit 577717
Packit 577717
#undef MMCR0_FC
Packit 577717
#undef MMCR0_FCECE
Packit 577717
#undef MMCR0_FCM0
Packit 577717
#undef MMCR0_FCM1
Packit 577717
#undef MMCR0_FCP
Packit 577717
#undef MMCR0_FCS
Packit 577717
#undef MMCR0_PMC1CE
Packit 577717
#undef MMCR0_PMC1SEL
Packit 577717
#undef MMCR0_PMC2SEL
Packit 577717
#undef MMCR0_PMXE
Packit 577717
#undef MMCR0_TBEE
Packit 577717
#undef MMCR0_TRIGGER
Packit 577717
#undef MMCR1_PMC3SEL
Packit 577717
#undef MMCR1_PMC4SEL
Packit 577717
#undef MMCR1_PMC5SEL
Packit 577717
#undef MMCR1_PMC6SEL
Packit 577717
#undef SPRN_MMCR0
Packit 577717
#undef SPRN_MMCR1
Packit 577717
#undef SPRN_MMCR2
Packit 577717
#undef SPRN_PMC1
Packit 577717
#undef SPRN_PMC2
Packit 577717
#undef SPRN_PMC3
Packit 577717
#undef SPRN_PMC4
Packit 577717
#undef SPRN_PMC5
Packit 577717
#undef SPRN_PMC6
Packit 577717
Packit 577717
#define SPRN_MMCR0	0x3B8	/* 604 and up */
Packit 577717
#define SPRN_PMC1	0x3B9	/* 604 and up */
Packit 577717
#define SPRN_PMC2	0x3BA	/* 604 and up */
Packit 577717
#define SPRN_SIA	0x3BB	/* 604 and up */
Packit 577717
#define SPRN_MMCR1	0x3BC	/* 604e and up */
Packit 577717
#define SPRN_PMC3	0x3BD	/* 604e and up */
Packit 577717
#define SPRN_PMC4	0x3BE	/* 604e and up */
Packit 577717
#define SPRN_MMCR2	0x3B0	/* 7400 and up */
Packit 577717
#define SPRN_BAMR	0x3B7	/* 7400 and up */
Packit 577717
#define SPRN_PMC5	0x3B1	/* 7450 and up */
Packit 577717
#define SPRN_PMC6	0x3B2	/* 7450 and up */
Packit 577717
Packit 577717
/* MMCR0 layout (74xx terminology) */
Packit 577717
#define MMCR0_FC		0x80000000 /* Freeze counters unconditionally. */
Packit 577717
#define MMCR0_FCS		0x40000000 /* Freeze counters while MSR[PR]=0 (supervisor mode). */
Packit 577717
#define MMCR0_FCP		0x20000000 /* Freeze counters while MSR[PR]=1 (user mode). */
Packit 577717
#define MMCR0_FCM1		0x10000000 /* Freeze counters while MSR[PM]=1. */
Packit 577717
#define MMCR0_FCM0		0x08000000 /* Freeze counters while MSR[PM]=0. */
Packit 577717
#define MMCR0_PMXE		0x04000000 /* Enable performance monitor exceptions.
Packit 577717
					    * Cleared by hardware when a PM exception occurs.
Packit 577717
					    * 604: PMXE is not cleared by hardware.
Packit 577717
					    */
Packit 577717
#define MMCR0_FCECE		0x02000000 /* Freeze counters on enabled condition or event.
Packit 577717
					    * FCECE is treated as 0 if TRIGGER is 1.
Packit 577717
					    * 74xx: FC is set when the event occurs.
Packit 577717
					    * 604/750: ineffective when PMXE=0.
Packit 577717
					    */
Packit 577717
#define MMCR0_TBSEL		0x01800000 /* Time base lower (TBL) bit selector.
Packit 577717
					    * 00: bit 31, 01: bit 23, 10: bit 19, 11: bit 15.
Packit 577717
					    */
Packit 577717
#define MMCR0_TBEE		0x00400000 /* Enable event on TBL bit transition from 0 to 1. */
Packit 577717
#define MMCR0_THRESHOLD		0x003F0000 /* Threshold value for certain events. */
Packit 577717
#define MMCR0_PMC1CE		0x00008000 /* Enable event on PMC1 overflow. */
Packit 577717
#define MMCR0_PMCjCE		0x00004000 /* Enable event on PMC2-PMC6 overflow.
Packit 577717
					    * 604/750: Overrides FCECE (DISCOUNT).
Packit 577717
					    */
Packit 577717
#define MMCR0_TRIGGER		0x00002000 /* Disable PMC2-PMC6 until PMC1 overflow or other event.
Packit 577717
					    * 74xx: cleared by hardware when the event occurs.
Packit 577717
					    */
Packit 577717
#define MMCR0_PMC1SEL		0x00001FC0 /* PMC1 event selector, 7 bits. */
Packit 577717
#define MMCR0_PMC2SEL		0x0000003F /* PMC2 event selector, 6 bits. */
Packit 577717
Packit 577717
/* MMCR1 layout (604e-7457) */
Packit 577717
#define MMCR1_PMC3SEL		0xF8000000 /* PMC3 event selector, 5 bits. */
Packit 577717
#define MMCR1_PMC4SEL		0x07C00000 /* PMC4 event selector, 5 bits. */
Packit 577717
#define MMCR1_PMC5SEL		0x003E0000 /* PMC5 event selector, 5 bits. (745x only) */
Packit 577717
#define MMCR1_PMC6SEL		0x0001F800 /* PMC6 event selector, 6 bits. (745x only) */
Packit 577717
#define MMCR1__RESERVED		0x000007FF /* should be zero */
Packit 577717
Packit 577717
/* MMCR2 layout (7400-7457) */
Packit 577717
#define MMCR2_THRESHMULT	0x80000000 /* MMCR0[THRESHOLD] multiplier. */
Packit 577717
#define MMCR2_SMCNTEN		0x40000000 /* 7400/7410 only, should be zero. */
Packit 577717
#define MMCR2_SMINTEN		0x20000000 /* 7400/7410 only, should be zero. */
Packit 577717
#define MMCR2__RESERVED		0x1FFFFFFF /* should be zero */
Packit 577717
#define MMCR2_RESERVED		(MMCR2_SMCNTEN | MMCR2_SMINTEN | MMCR2__RESERVED)