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