target/ppc: Add recording of taken branches to BHRB
authorGlenn Miles <milesg@linux.vnet.ibm.com>
Thu, 28 Mar 2024 10:41:33 +0000 (20:41 +1000)
committerNicholas Piggin <npiggin@gmail.com>
Thu, 23 May 2024 23:33:06 +0000 (09:33 +1000)
commit4de4a4705f234861176b32292374021ee96e004e
tree9e26e1d780a9fdadcfd3069a7adb842860caddf3
parenta7138e28a242680ae25b52ed44842cde235103f0
target/ppc: Add recording of taken branches to BHRB

This commit continues adding support for the Branch History
Rolling Buffer (BHRB) as is provided starting with the P8
processor and continuing with its successors.  This commit
is limited to the recording and filtering of taken branches.

The following changes were made:

  - Enabled functionality on P10 processors only due to
    performance impact seen with P8 and P9 where it is not
    disabled for non problem state branches.
  - Added a BHRB buffer for storing branch instruction and
    target addresses for taken branches
  - Renamed gen_update_cfar to gen_update_branch_history and
    added a 'target' parameter to hold the branch target
    address and 'inst_type' parameter to use for filtering
  - Added TCG code to gen_update_branch_history that stores
    data to the BHRB and updates the BHRB offset.
  - Added BHRB resource initialization and reset functions

Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
target/ppc/cpu.h
target/ppc/cpu_init.c
target/ppc/power8-pmu.c
target/ppc/power8-pmu.h
target/ppc/translate.c
target/ppc/translate/branch-impl.c.inc