powerpc/perf: Fix setting of "to" addresses for BHRB
authorMichael Neuling <mikey@neuling.org>
Mon, 13 May 2013 18:44:58 +0000 (18:44 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 14 May 2013 06:00:22 +0000 (16:00 +1000)
commit691231846cebfe1fbbcf898c8af17a569dbb5463
treeedb500ca27ae25cfdae8526a9efb884143a12f5c
parent506e70d13236dfdb0bc15e0914298ab0a7b7f4df
powerpc/perf: Fix setting of "to" addresses for BHRB

Currently we only set the "to" address in the branch stack when the CPU
explicitly gives us a value.  Unfortunately it only does this for XL form
branches (eg blr, bctr, bctar) and not I and B form branches (eg b, bc).

Fortunately if we read the instruction from memory we can extract the offset of
a branch and calculate the target address.

This adds a function power_pmu_bhrb_to() to calculate the target/to address of
the corresponding I and B form branches.  It handles branches in both user and
kernel spaces.  It also plumbs this into the perf brhb reading code.

Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/perf/core-book3s.c