qemu/target/ppc
Glenn Miles 6bfcf1dc23 target/ppc: Add clrbhrb and mfbhrbe instructions
Add support for the clrbhrb and mfbhrbe instructions.

Since neither instruction is believed to be critical to
performance, both instructions were implemented using helper
functions.

Access to both instructions is controlled by bits in the
HFSCR (for privileged state) and MMCR0 (for problem state).
A new function, helper_mmcr0_facility_check, was added for
checking MMCR0[BHRBA] and raising a facility_unavailable exception
if required.

NOTE: For P8 and P9, due to a performance issue, branch history will
not be kept, but the instructions will be allowed to execute
as normal with the exception that the mfbhrbe instruction will
always return a zero value.

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>
2024-05-24 09:33:32 +10:00
..
translate target/ppc: Add clrbhrb and mfbhrbe instructions 2024-05-24 09:33:32 +10:00
arch_dump.c target: ppc: Use MSR_HVB bit to get the target endianness for memory dump 2023-07-07 04:46:12 -03:00
compat.c spapr: Fix machine reset deadlock from replay-record 2023-09-06 11:19:33 +02:00
cpu_init.c target/ppc: Add recording of taken branches to BHRB 2024-05-24 09:33:06 +10:00
cpu-models.c ppc: Drop support for POWER9 and POWER10 DD1 chips 2024-03-13 02:47:04 +10:00
cpu-models.h ppc: spelling fixes 2023-09-20 07:54:34 +03:00
cpu-param.h target: Define TCG_GUEST_DEFAULT_MO in 'cpu-param.h' 2024-04-26 15:31:37 +02:00
cpu-qom.h target/ppc: Use GDBFeature for dynamic XML 2024-02-28 09:09:25 +00:00
cpu.c target/ppc: Flush inputs to zero with NJ in ppc_store_vscr 2023-09-06 11:19:33 +02:00
cpu.h target/ppc: Add clrbhrb and mfbhrbe instructions 2024-05-24 09:33:32 +10:00
dfp_helper.c target/ppc: Fix warning with clang-15 2023-02-27 22:29:01 +01:00
excp_helper.c target/ppc: Move cmp{rb, eqb}, tw[i], td[i], isel instructions to decodetree. 2024-05-24 08:57:50 +10:00
fpu_helper.c target/ppc: Move floating-point arithmetic instructions to decodetree. 2024-05-24 08:57:50 +10:00
gdbstub.c target/ppc: Fix GDB register indexing on secondary CPUs 2024-03-30 18:50:24 +10:00
helper_regs.c target/ppc: Add new hflags to support BHRB 2024-05-24 08:57:50 +10:00
helper_regs.h target/ppc: Fix PMU hflags calculation 2023-06-10 10:19:24 -03:00
helper.h target/ppc: Add clrbhrb and mfbhrbe instructions 2024-05-24 09:33:32 +10:00
insn32.decode target/ppc: Add clrbhrb and mfbhrbe instructions 2024-05-24 09:33:32 +10:00
insn64.decode target/ppc: Implemented [pm]xvbf16ger2* 2022-05-26 17:11:33 -03:00
int_helper.c target/ppc: Move logical fixed-point instructions to decodetree. 2024-05-24 08:57:50 +10:00
internal.h exec/cpu: Extract page-protection definitions to page-protection.h 2024-05-06 11:17:15 +02:00
Kconfig ppc: switch boards to "default y" 2024-05-03 15:47:47 +02:00
kvm_ppc.h target/ppc: Prohibit target specific KVM prototypes on user emulation 2023-11-07 12:13:28 +01:00
kvm.c spapr: avoid overhead of finding vhyp class in critical operations 2024-05-24 08:57:50 +10:00
machine.c target/ppc: Add new hflags to support BHRB 2024-05-24 08:57:50 +10:00
mem_helper.c target/ppc: Move VMX storage access instructions to decodetree 2024-05-24 08:57:50 +10:00
meson.build target/ppc: Restrict KVM objects to system emulation 2023-11-07 12:13:28 +01:00
misc_helper.c target/ppc: Add clrbhrb and mfbhrbe instructions 2024-05-24 09:33:32 +10:00
mmu_common.c exec/cpu: Extract page-protection definitions to page-protection.h 2024-05-06 11:17:15 +02:00
mmu_helper.c target/ppc: Fix broadcast tlbie synchronisation 2024-05-24 08:57:50 +10:00
mmu-book3s-v3.c ppc: Check partition and process table alignment 2022-07-18 13:59:43 -03:00
mmu-book3s-v3.h spapr: avoid overhead of finding vhyp class in critical operations 2024-05-24 08:57:50 +10:00
mmu-books.h target/ppc: introduce mmu-books.h 2021-07-09 10:38:19 +10:00
mmu-hash32.c exec/cpu: Extract page-protection definitions to page-protection.h 2024-05-06 11:17:15 +02:00
mmu-hash32.h target/ppc: Remove PowerPC 601 CPUs 2022-02-09 09:08:55 +01:00
mmu-hash64.c spapr: avoid overhead of finding vhyp class in critical operations 2024-05-24 08:57:50 +10:00
mmu-hash64.h target/ppc: Fix VRMA page size for ISA v3.0 2023-08-04 12:22:03 -03:00
mmu-radix64.c spapr: avoid overhead of finding vhyp class in critical operations 2024-05-24 08:57:50 +10:00
mmu-radix64.h exec/cpu: Extract page-protection definitions to page-protection.h 2024-05-06 11:17:15 +02:00
power8-pmu-regs.c.inc target/ppc: Add new hflags to support BHRB 2024-05-24 08:57:50 +10:00
power8-pmu.c target/ppc: Add recording of taken branches to BHRB 2024-05-24 09:33:06 +10:00
power8-pmu.h target/ppc: Add recording of taken branches to BHRB 2024-05-24 09:33:06 +10:00
ppc-qmp-cmds.c target/ppc: Prefer fast cpu_env() over slower CPU QOM cast macro 2024-03-12 12:04:24 +01:00
spr_common.h target/ppc: Add new hflags to support BHRB 2024-05-24 08:57:50 +10:00
tcg-stub.c hw/ppc/spapr_hcall: Allow elision of softmmu_resize_hpt_prep 2024-02-23 23:24:42 +10:00
timebase_helper.c target/ppc: Add SMT support to time facilities 2024-02-23 23:24:43 +10:00
trace-events target/ppc: Improve KVM hypercall trace 2022-04-20 18:00:30 -03:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
translate.c target/ppc: Add clrbhrb and mfbhrbe instructions 2024-05-24 09:33:32 +10:00
user_only_helper.c target/ppc: Prefer fast cpu_env() over slower CPU QOM cast macro 2024-03-12 12:04:24 +01:00