Blame src/components/perfctr_ppc/ppc64_events.h

Packit Service a1973e
#ifndef PPC64_EVENTS_H_
Packit Service a1973e
#define PPC64_EVENTS_H_
Packit Service a1973e
/* 
Packit Service a1973e
* File:    ppc64_events.h
Packit Service a1973e
* CVS:     
Packit Service a1973e
* Author:  Maynard Johnson
Packit Service a1973e
*          maynardj@us.ibm.com
Packit Service a1973e
* Mods:    <your name here>
Packit Service a1973e
*          <your email address>
Packit Service a1973e
*          
Packit Service a1973e
*/
Packit Service a1973e
Packit Service a1973e
#ifdef ARCH_EVTS
Packit Service a1973e
#include ARCH_EVTS
Packit Service a1973e
#else
Packit Service a1973e
#define GROUP_INTS 8
Packit Service a1973e
#if defined(_POWER5)
Packit Service a1973e
#define PAPI_MAX_NATIVE_EVENTS 512
Packit Service a1973e
#elif defined(_POWER6)
Packit Service a1973e
#define PAPI_MAX_NATIVE_EVENTS 1024
Packit Service a1973e
#else
Packit Service a1973e
#define PAPI_MAX_NATIVE_EVENTS 1024
Packit Service a1973e
#endif
Packit Service a1973e
#define MAX_GROUPS (GROUP_INTS * 32)
Packit Service a1973e
#endif
Packit Service a1973e
Packit Service a1973e
typedef struct PPC64_register
Packit Service a1973e
{
Packit Service a1973e
	/* indicate which counters this event can live on */
Packit Service a1973e
	unsigned int selector;
Packit Service a1973e
	/* Buffers containing counter cmds for each possible metric */
Packit Service a1973e
	int counter_cmd[MAX_COUNTERS];
Packit Service a1973e
	/* which group this event belongs */
Packit Service a1973e
	unsigned int group[GROUP_INTS];
Packit Service a1973e
} PPC64_register_t;
Packit Service a1973e
Packit Service a1973e
/* Override void* definitions from PAPI framework layer */
Packit Service a1973e
/* with typedefs to conform to PAPI component layer code. */
Packit Service a1973e
#undef hwd_register_t
Packit Service a1973e
typedef PPC64_register_t hwd_register_t;
Packit Service a1973e
Packit Service a1973e
typedef struct PPC64_groups
Packit Service a1973e
{
Packit Service a1973e
#ifdef __perfctr__
Packit Service a1973e
	unsigned int mmcr0;
Packit Service a1973e
	unsigned int mmcr1L;
Packit Service a1973e
	unsigned int mmcr1U;
Packit Service a1973e
	unsigned int mmcra;
Packit Service a1973e
	unsigned int counter_cmd[MAX_COUNTERS];
Packit Service a1973e
#else
Packit Service a1973e
/* Buffer containing counter cmds for this group */
Packit Service a1973e
	unsigned int counter_cmd[MAX_COUNTERS];
Packit Service a1973e
#endif
Packit Service a1973e
} PPC64_groups_t;
Packit Service a1973e
Packit Service a1973e
typedef PPC64_groups_t hwd_groups_t;
Packit Service a1973e
Packit Service a1973e
typedef struct native_event_entry
Packit Service a1973e
{
Packit Service a1973e
	/* description of the resources required by this native event */
Packit Service a1973e
	hwd_register_t resources;
Packit Service a1973e
	/* If it exists, then this is the name of this event */
Packit Service a1973e
	char *name;
Packit Service a1973e
	/* If it exists, then this is the description of this event */
Packit Service a1973e
	char *description;
Packit Service a1973e
} native_event_entry_t;
Packit Service a1973e
Packit Service a1973e
typedef struct PPC64_native_map
Packit Service a1973e
{
Packit Service a1973e
	/* native event name */
Packit Service a1973e
	char *name;
Packit Service a1973e
	/* real index in the native table */
Packit Service a1973e
	int index;
Packit Service a1973e
} PPC64_native_map_t;
Packit Service a1973e
Packit Service a1973e
extern native_event_entry_t native_table[PAPI_MAX_NATIVE_EVENTS];
Packit Service a1973e
#ifndef __perfctr__
Packit Service a1973e
extern hwd_pminfo_t pminfo;
Packit Service a1973e
extern pm_groups_info_t pmgroups;
Packit Service a1973e
#endif
Packit Service a1973e
extern PPC64_native_map_t native_name_map[PAPI_MAX_NATIVE_EVENTS];
Packit Service a1973e
extern hwd_groups_t group_map[MAX_GROUPS];
Packit Service a1973e
Packit Service a1973e
int check_native_name(  );
Packit Service a1973e
Packit Service a1973e
#endif /*PPC64_EVENTS_H_ */