ppc: Add PowerISA 2.07 compatibility mode
Make sure that guests can use the PowerISA 2.07 CPU sPAPR compatibility mode when they request it and the target CPU supports it. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
eac4fba965
commit
b30ff227c2
@ -927,7 +927,7 @@ static void cas_handle_compat_cpu(PowerPCCPUClass *pcc, uint32_t pvr,
|
|||||||
unsigned *cpu_version)
|
unsigned *cpu_version)
|
||||||
{
|
{
|
||||||
unsigned lvl = get_compat_level(pvr);
|
unsigned lvl = get_compat_level(pvr);
|
||||||
bool is205, is206;
|
bool is205, is206, is207;
|
||||||
|
|
||||||
if (!lvl) {
|
if (!lvl) {
|
||||||
return;
|
return;
|
||||||
@ -939,8 +939,10 @@ static void cas_handle_compat_cpu(PowerPCCPUClass *pcc, uint32_t pvr,
|
|||||||
is206 = (pcc->pcr_supported & PCR_COMPAT_2_06) &&
|
is206 = (pcc->pcr_supported & PCR_COMPAT_2_06) &&
|
||||||
((lvl == get_compat_level(CPU_POWERPC_LOGICAL_2_06)) ||
|
((lvl == get_compat_level(CPU_POWERPC_LOGICAL_2_06)) ||
|
||||||
(lvl == get_compat_level(CPU_POWERPC_LOGICAL_2_06_PLUS)));
|
(lvl == get_compat_level(CPU_POWERPC_LOGICAL_2_06_PLUS)));
|
||||||
|
is207 = (pcc->pcr_supported & PCR_COMPAT_2_07) &&
|
||||||
|
(lvl == get_compat_level(CPU_POWERPC_LOGICAL_2_07));
|
||||||
|
|
||||||
if (is205 || is206) {
|
if (is205 || is206 || is207) {
|
||||||
if (!max_lvl) {
|
if (!max_lvl) {
|
||||||
/* User did not set the level, choose the highest */
|
/* User did not set the level, choose the highest */
|
||||||
if (*compat_lvl <= lvl) {
|
if (*compat_lvl <= lvl) {
|
||||||
|
@ -9533,6 +9533,9 @@ void ppc_set_compat(PowerPCCPU *cpu, uint32_t cpu_version, Error **errp)
|
|||||||
case CPU_POWERPC_LOGICAL_2_06_PLUS:
|
case CPU_POWERPC_LOGICAL_2_06_PLUS:
|
||||||
env->spr[SPR_PCR] = PCR_TM_DIS | PCR_COMPAT_2_07 | PCR_COMPAT_2_06;
|
env->spr[SPR_PCR] = PCR_TM_DIS | PCR_COMPAT_2_07 | PCR_COMPAT_2_06;
|
||||||
break;
|
break;
|
||||||
|
case CPU_POWERPC_LOGICAL_2_07:
|
||||||
|
env->spr[SPR_PCR] = PCR_COMPAT_2_07;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
env->spr[SPR_PCR] = 0;
|
env->spr[SPR_PCR] = 0;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user