Commit b30ff227 authored by Thomas Huth's avatar Thomas Huth Committed by David Gibson
Browse files

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: default avatarThomas Huth <thuth@redhat.com>
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent eac4fba9
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -927,7 +927,7 @@ static void cas_handle_compat_cpu(PowerPCCPUClass *pcc, uint32_t pvr,
                                  unsigned *cpu_version)
{
    unsigned lvl = get_compat_level(pvr);
    bool is205, is206;
    bool is205, is206, is207;

    if (!lvl) {
        return;
@@ -939,8 +939,10 @@ static void cas_handle_compat_cpu(PowerPCCPUClass *pcc, uint32_t pvr,
    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_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) {
            /* User did not set the level, choose the highest */
            if (*compat_lvl <= lvl) {
+3 −0
Original line number Diff line number Diff line
@@ -9533,6 +9533,9 @@ void ppc_set_compat(PowerPCCPU *cpu, uint32_t cpu_version, Error **errp)
    case CPU_POWERPC_LOGICAL_2_06_PLUS:
        env->spr[SPR_PCR] = PCR_TM_DIS | PCR_COMPAT_2_07 | PCR_COMPAT_2_06;
        break;
    case CPU_POWERPC_LOGICAL_2_07:
        env->spr[SPR_PCR] = PCR_COMPAT_2_07;
        break;
    default:
        env->spr[SPR_PCR] = 0;
        break;