]> git.ipfire.org Git - thirdparty/qemu.git/commit
target-ppc: Add pvr_match() callback
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Thu, 3 Jul 2014 14:48:55 +0000 (00:48 +1000)
committerAlexander Graf <agraf@suse.de>
Tue, 8 Jul 2014 10:10:36 +0000 (12:10 +0200)
commit03ae4133ab8675d4c67e6fdc8032de7c53a89514
tree7c76fdd3fee63e35d035f1635e8fe3265099b7d0
parentd6c23f8a1b0d3ffdd7e826e1d555b519645257d9
target-ppc: Add pvr_match() callback

So far it was enough to have a base PVR value and mask per CPU
family such as POWER7 or POWER8. However there CPUs which are
completely architecturally compatible but have different PVRs such
as POWER7/POWER7+ and POWER8/POWER8E. For these CPUs, top 16 bits
are CPU family and low 16 bits are the version. The families have
PVR base values different enough so defining a mask which
would cover both (or potentially more) CPUs within the family is
not possible.

This adds a pvr_match() callback to PowerPCCPUClass. The default
handler simply compares PVR defined in the class.

This implements ppc_pvr_match_power7/ppc_pvr_match_power8 callbacks
for POWER7/8 families. These check for POWER7/POWER7+ and POWER8/POWER8E.

This changes ppc_cpu_compare_class_pvr_mask() not to check masks but
use the pvr_match() callback.

Since all server CPUs use the same mask, this defines one mask
value - CPU_POWERPC_POWER_SERVER_MASK - which is used everywhere now.
This removes other mask definitions.

This removes pvr_mask from PowerPCCPUClass as it is not used anymore.
This removes pvr initialization for POWER7/8 families as it is not used
to find the class, the pvr_match() callback is used instead.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
target-ppc/cpu-models.c
target-ppc/cpu-models.h
target-ppc/cpu-qom.h
target-ppc/translate_init.c