Commit dff94251 authored by Leon Alrae's avatar Leon Alrae
Browse files

hw/mips_cpc: make VP correctly start from the reset vector



When VP enters the Run state it starts execution from the reset vector.
Currently used CPU_INTERRUPT_WAKE does not do that if reset exception
base has been modified. Therefore fix that by simply resetting given VP.

Drop the usage of CPU_INTERRUPT_WAKE also in VP_STOP and instead raise
the CPU_INTERRUPT_HALT to halt a VP.

Signed-off-by: default avatarLeon Alrae <leon.alrae@imgtec.com>
parent 89777fd1
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ static void cpc_run_vp(MIPSCPCState *cpc, uint64_t vp_run)
    CPU_FOREACH(cs) {
        uint64_t i = 1ULL << cs->cpu_index;
        if (i & vp_run & ~cpc->vp_running) {
            cpu_interrupt(cs, CPU_INTERRUPT_WAKE);
            cpu_reset(cs);
            cpc->vp_running |= i;
        }
    }
@@ -50,8 +50,7 @@ static void cpc_stop_vp(MIPSCPCState *cpc, uint64_t vp_stop)
    CPU_FOREACH(cs) {
        uint64_t i = 1ULL << cs->cpu_index;
        if (i & vp_stop & cpc->vp_running) {
            cs->halted = 1;
            cpu_reset_interrupt(cs, CPU_INTERRUPT_WAKE);
            cpu_interrupt(cs, CPU_INTERRUPT_HALT);
            cpc->vp_running &= ~i;
        }
    }