On Mon, 15 Jun 2026, Christophe Leroy (CS GROUP) wrote:
NIP=0x700 is illegal instruction exception due to trying to execute 0 opcode at 0x100 which is the reset vector but shouldn't it try to start at 0xfff00100? Maybe there's some issue with setting up KVM correctly?

On powerpc32 it is 0x100 or 0xfff00100 based on whether bit IP (Interrupt Prefix) is 0 or 1 in MSR register.

On powerpc64 MSR[IP] doesn't exist.

But this is under QEMU which sets in qemu/hw/ppc/mac_newworld.c:

#define PROM_BASE 0xfff00000
[...]
static void ppc_core99_reset(void *opaque)
{
    PowerPCCPU *cpu = opaque;

    cpu_reset(CPU(cpu));
    /* 970 CPUs want to get their initial IP as part of their boot protocol */
    cpu->env.nip = PROM_BASE + 0x100;
}

So the execution should start from 0xfff00100 unconditionally where the OpenBIOS is loaded but I haven't seem the QEMU command so I'm only guessing this is with qemu-system-ppc -machine mac99,accel=kvm. I'm not sure how it got to 0x100 instead but there's no code there to execute on reset.

Regards,
BALATON Zoltan

Reply via email to