From 8e36ad01ceb1257d05773b684dbe9358aecd3f71 Mon Sep 17 00:00:00 2001
From: Maynard Johnson <maynardj@us.ibm.com>
Date: Tue, 26 Feb 2013 13:41:27 -0600
Subject: [PATCH] Fix PPC64-specific libpfm usage so it doesn't break ppc32
 architecture

The configure check to determine whether we should use libpfm or not
is intended only for the ppc64 architecture, but was incorrectly
hitting on the ppc32 architecture, too.  Not only that, but it was using
'uname' which is not a good idea in cross-compile situtations.

Then, aside from that, we had several instances in the source code
of the following:
   #if (defined(__powerpc__) || defined(__powerpc64__))
which incorrectly included ppc32 architecutre also, when it was intended
for use as PPC64 architecture.

This patch fixes both errors.

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com
---
 configure.ac                   |    5 ++---
 libperf_events/operf_utils.cpp |    4 ++--
 libperf_events/operf_utils.h   |    6 ++++++
 pe_profiling/operf.cpp         |   10 +++++-----
 4 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -100,11 +100,10 @@ else
 	HAVE_PERF_EVENTS='0'
 fi
 AC_DEFINE_UNQUOTED(HAVE_PERF_EVENTS, $HAVE_PERF_EVENTS, [Kernel support for perf_events exists])
-
+AC_CANONICAL_HOST
 if test "$HAVE_PERF_EVENTS" = "1"; then
 	PFM_LIB=
-	arch="`uname -m`"
-	if test "$arch" = "ppc64" || test "$arch" = "ppc"; then
+	if test "$host_cpu" = "powerpc64"; then
 		AC_CHECK_HEADER(perfmon/pfmlib.h,,[AC_MSG_ERROR([pfmlib.h not found; usually provided in papi devel package])])
 		AC_CHECK_LIB(pfm,pfm_get_event_name, HAVE_LIBPFM3='1'; HAVE_LIBPFM='1', [
 			AC_CHECK_LIB(pfm,pfm_get_os_event_encoding, HAVE_LIBPFM3='0'; HAVE_LIBPFM='1',
diff --git a/libperf_events/operf_utils.cpp b/libperf_events/operf_utils.cpp
--- a/libperf_events/operf_utils.cpp
+++ b/libperf_events/operf_utils.cpp
@@ -82,7 +82,7 @@ static event_t comm_event;
  * the following method is to map the operf-record event value to a value that
  * opreport can understand.
  */
-#if (defined(__powerpc__) || defined(__powerpc64__))
+#if PPC64_ARCH
 #define NIL_CODE ~0U
 
 #if HAVE_LIBPFM3
@@ -708,7 +708,7 @@ static void __handle_sample_event(event_
 	} else if (event->header.misc == PERF_RECORD_MISC_USER) {
 		in_kernel = false;
 	}
-#if (defined(__powerpc__) || defined(__powerpc64__))
+#if PPC64_ARCH
 	else if (event->header.misc == PERF_RECORD_MISC_HYPERVISOR) {
 #define MAX_HYPERVISOR_ADDRESS 0xfffffffULL
 		if (data.ip > MAX_HYPERVISOR_ADDRESS) {
diff --git a/libperf_events/operf_utils.h b/libperf_events/operf_utils.h
--- a/libperf_events/operf_utils.h
+++ b/libperf_events/operf_utils.h
@@ -45,6 +45,12 @@ extern bool throttled;
 #define MMAP_WINDOW_SZ (32 * 1024 * 1024ULL)
 #endif
 
+/* A macro to be used for ppc64 architecture-specific code.  The '__powerpc__' macro
+ * is defined for both ppc64 and ppc32 architectures, so we must further qualify by
+ * including the 'HAVE_LIBPFM' macro, since that macro will be defined only for ppc64.
+ */
+#define PPC64_ARCH (HAVE_LIBPFM) && ((defined(__powerpc__) || defined(__powerpc64__)))
+
 extern unsigned int op_nr_counters;
 
 static inline size_t align_64bit(u64 x)
diff --git a/pe_profiling/operf.cpp b/pe_profiling/operf.cpp
--- a/pe_profiling/operf.cpp
+++ b/pe_profiling/operf.cpp
@@ -1197,9 +1197,9 @@ static void _process_events_list(void)
 		_get_event_code(&event);
 		events.push_back(event);
 	}
-#if (defined(__powerpc__) || defined(__powerpc64__))
+#if PPC64_ARCH
 	{
-		/* This section of code is for architectures such as ppc[64] for which
+		/* This section of code is soley for the ppc64 architecture for which
 		 * the oprofile event code needs to be converted to the appropriate event
 		 * code to pass to the perf_event_open syscall.
 		 */
@@ -1244,7 +1244,7 @@ static void get_default_event(void)
 	_get_event_code(&dft_evt);
 	events.push_back(dft_evt);
 
-#if (defined(__powerpc__) || defined(__powerpc64__))
+#if PPC64_ARCH
 	{
 		/* This section of code is for architectures such as ppc[64] for which
 		 * the oprofile event code needs to be converted to the appropriate event
