summaryrefslogtreecommitdiffstats
path: root/lib/libpmc
diff options
context:
space:
mode:
authorjkoshy <jkoshy@FreeBSD.org>2005-07-03 16:33:22 +0000
committerjkoshy <jkoshy@FreeBSD.org>2005-07-03 16:33:22 +0000
commitf670acbc9ddb968f93e3b3a113ba0a736b812932 (patch)
tree605437fce3b297ecc571579794f61823b93d1c80 /lib/libpmc
parenta830c4a47a92bb0f10da1d001467e168f41d519f (diff)
downloadFreeBSD-src-f670acbc9ddb968f93e3b3a113ba0a736b812932.zip
FreeBSD-src-f670acbc9ddb968f93e3b3a113ba0a736b812932.tar.gz
- Update the CPU version check to recognize P4/EMT64 CPUs. [1]
- Allow libpmc(3) to support P4/EMT64 PMCs on the amd64 architecture and AMD K8 PMCs on the i386. [2] Submitted by: ps [1] Pointy hat: myself [2] Approved by: re (scottl)
Diffstat (limited to 'lib/libpmc')
-rw-r--r--lib/libpmc/libpmc.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/libpmc/libpmc.c b/lib/libpmc/libpmc.c
index 3a42e07..75a33a9 100644
--- a/lib/libpmc/libpmc.c
+++ b/lib/libpmc/libpmc.c
@@ -47,13 +47,13 @@ __FBSDID("$FreeBSD$");
static int k7_allocate_pmc(enum pmc_event _pe, char *_ctrspec,
struct pmc_op_pmcallocate *_pmc_config);
#endif
-#if defined(__amd64__)
+#if defined(__amd64__) || defined(__i386__)
static int k8_allocate_pmc(enum pmc_event _pe, char *_ctrspec,
struct pmc_op_pmcallocate *_pmc_config);
-#endif
-#if defined(__i386__)
static int p4_allocate_pmc(enum pmc_event _pe, char *_ctrspec,
struct pmc_op_pmcallocate *_pmc_config);
+#endif
+#if defined(__i386__)
static int p5_allocate_pmc(enum pmc_event _pe, char *_ctrspec,
struct pmc_op_pmcallocate *_pmc_config);
static int p6_allocate_pmc(enum pmc_event _pe, char *_ctrspec,
@@ -154,7 +154,7 @@ struct pmc_masks {
#define PMCMASK(N,V) { .pm_name = #N, .pm_value = (V) }
#define NULLMASK PMCMASK(NULL,0)
-#if defined(__i386__) || defined(__amd64__)
+#if defined(__amd64__) || defined(__i386__)
static int
pmc_parse_mask(const struct pmc_masks *pmask, char *p, uint32_t *evmask)
{
@@ -301,7 +301,7 @@ k7_allocate_pmc(enum pmc_event pe, char *ctrspec,
#endif
-#if defined(__amd64__)
+#if defined(__amd64__) || defined(__i386__)
/*
* AMD K8 PMCs.
@@ -670,7 +670,7 @@ k8_allocate_pmc(enum pmc_event pe, char *ctrspec,
#endif
-#if defined(__i386__)
+#if defined(__amd64__) || defined(__i386__)
/*
* Intel P4 PMCs
@@ -1283,6 +1283,10 @@ p4_allocate_pmc(enum pmc_event pe, char *ctrspec,
return 0;
}
+#endif
+
+#if defined(__i386__)
+
/*
* Pentium style PMCs
*/
@@ -1950,11 +1954,12 @@ pmc_init(void)
pmc_mdep_event_aliases = p6_aliases;
pmc_mdep_allocate_pmc = p6_allocate_pmc;
break;
+#endif
+#if defined(__amd64__) || defined(__i386__)
case PMC_CPU_INTEL_PIV:
pmc_mdep_event_aliases = p4_aliases;
pmc_mdep_allocate_pmc = p4_allocate_pmc;
break;
-#elif defined(__amd64__)
case PMC_CPU_AMD_K8:
pmc_mdep_event_aliases = k8_aliases;
pmc_mdep_allocate_pmc = k8_allocate_pmc;
OpenPOWER on IntegriCloud