path: root/target-ppc/cpu-models.c
diff options
authorAlexey Kardashevskiy <aik@ozlabs.ru>2014-07-04 00:48:55 +1000
committerAlexander Graf <agraf@suse.de>2014-07-08 12:10:36 +0200
commit03ae4133ab8675d4c67e6fdc8032de7c53a89514 (patch)
tree7c76fdd3fee63e35d035f1635e8fe3265099b7d0 /target-ppc/cpu-models.c
parentd6c23f8a1b0d3ffdd7e826e1d555b519645257d9 (diff)
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>
Diffstat (limited to 'target-ppc/cpu-models.c')
1 files changed, 0 insertions, 1 deletions
diff --git a/target-ppc/cpu-models.c b/target-ppc/cpu-models.c
index 9a91af9dbf..c9112e9cd8 100644
--- a/target-ppc/cpu-models.c
+++ b/target-ppc/cpu-models.c
@@ -44,7 +44,6 @@
PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc); \
pcc->pvr = _pvr; \
- pcc->pvr_mask = CPU_POWERPC_DEFAULT_MASK; \
pcc->svr = _svr; \
dc->desc = _desc; \
} \