Commit 051e2973 authored by Cédric Le Goater's avatar Cédric Le Goater Committed by David Gibson
Browse files

ppc: externalize ppc_get_vcpu_by_pir()



We will use it to get the CPU interrupt presenter in XIVE when the
TIMA is accessed from the indirect page.

Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
Message-Id: <20190306085032.15744-3-clg@kaod.org>
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent d514c48d
Loading
Loading
Loading
Loading
+0 −16
Original line number Diff line number Diff line
@@ -1082,22 +1082,6 @@ static void pnv_ics_resend(XICSFabric *xi)
    }
}

static PowerPCCPU *ppc_get_vcpu_by_pir(int pir)
{
    CPUState *cs;

    CPU_FOREACH(cs) {
        PowerPCCPU *cpu = POWERPC_CPU(cs);
        CPUPPCState *env = &cpu->env;

        if (env->spr_cb[SPR_PIR].default_value == pir) {
            return cpu;
        }
    }

    return NULL;
}

static ICPState *pnv_icp_get(XICSFabric *xi, int pir)
{
    PowerPCCPU *cpu = ppc_get_vcpu_by_pir(pir);
+16 −0
Original line number Diff line number Diff line
@@ -1492,3 +1492,19 @@ void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val)
        break;
    }
}

PowerPCCPU *ppc_get_vcpu_by_pir(int pir)
{
    CPUState *cs;

    CPU_FOREACH(cs) {
        PowerPCCPU *cpu = POWERPC_CPU(cs);
        CPUPPCState *env = &cpu->env;

        if (env->spr_cb[SPR_PIR].default_value == pir) {
            return cpu;
        }
    }

    return NULL;
}
+1 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
#include "target/ppc/cpu-qom.h"

void ppc_set_irq(PowerPCCPU *cpu, int n_IRQ, int level);
PowerPCCPU *ppc_get_vcpu_by_pir(int pir);

/* PowerPC hardware exceptions management helpers */
typedef void (*clk_setup_cb)(void *opaque, uint32_t freq);