8f2e9d4003
This patch starts an IBM Power8+ compatible PMU implementation by adding the representation of PMU events that we are going to sample, PMUEventType. This enum represents a Perf event that is being sampled by a specific counter 'sprn'. Events that aren't available (i.e. no event was set in MMCR1) will be of type 'PMU_EVENT_INVALID'. Events that are inactive due to frozen counter bits state are of type 'PMU_EVENT_INACTIVE'. Other types added in this patch are PMU_EVENT_CYCLES and PMU_EVENT_INSTRUCTIONS. More types will be added later on. Let's also add the required PMU cycle overflow timers. They will be used to trigger cycle overflows when cycle events are being sampled. This timer will call cpu_ppc_pmu_timer_cb(), which in turn calls fire_PMC_interrupt(). Both functions are stubs that will be implemented later on when EBB support is added. Two new helper files are created to host this new logic. cpu_ppc_pmu_init() will init all overflow timers during CPU init time. Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Message-Id: <20211201151734.654994-2-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater <clg@kaod.org>
59 lines
1.3 KiB
Meson
59 lines
1.3 KiB
Meson
ppc_ss = ss.source_set()
|
|
ppc_ss.add(files(
|
|
'cpu-models.c',
|
|
'cpu.c',
|
|
'cpu_init.c',
|
|
'excp_helper.c',
|
|
'gdbstub.c',
|
|
'helper_regs.c',
|
|
))
|
|
|
|
ppc_ss.add(when: 'CONFIG_TCG', if_true: files(
|
|
'dfp_helper.c',
|
|
'fpu_helper.c',
|
|
'int_helper.c',
|
|
'mem_helper.c',
|
|
'misc_helper.c',
|
|
'timebase_helper.c',
|
|
'translate.c',
|
|
))
|
|
|
|
ppc_ss.add(libdecnumber)
|
|
|
|
gen = [
|
|
decodetree.process('insn32.decode',
|
|
extra_args: '--static-decode=decode_insn32'),
|
|
decodetree.process('insn64.decode',
|
|
extra_args: ['--static-decode=decode_insn64',
|
|
'--insnwidth=64']),
|
|
]
|
|
ppc_ss.add(gen)
|
|
|
|
ppc_ss.add(when: 'CONFIG_KVM', if_true: files('kvm.c'), if_false: files('kvm-stub.c'))
|
|
ppc_ss.add(when: 'CONFIG_USER_ONLY', if_true: files('user_only_helper.c'))
|
|
|
|
ppc_softmmu_ss = ss.source_set()
|
|
ppc_softmmu_ss.add(files(
|
|
'arch_dump.c',
|
|
'machine.c',
|
|
'mmu-hash32.c',
|
|
'mmu_common.c',
|
|
'monitor.c',
|
|
))
|
|
ppc_softmmu_ss.add(when: 'CONFIG_TCG', if_true: files(
|
|
'mmu_helper.c',
|
|
), if_false: files(
|
|
'tcg-stub.c',
|
|
))
|
|
|
|
ppc_softmmu_ss.add(when: 'TARGET_PPC64', if_true: files(
|
|
'compat.c',
|
|
'mmu-book3s-v3.c',
|
|
'mmu-hash64.c',
|
|
'mmu-radix64.c',
|
|
'power8-pmu.c',
|
|
))
|
|
|
|
target_arch += {'ppc': ppc_ss}
|
|
target_softmmu_arch += {'ppc': ppc_softmmu_ss}
|