These variables don't belong to CPUHPPAState, they depend on how the machine is started, and only apply to the first CPU.
Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- target/hppa/cpu.h | 2 -- hw/hppa/machine.c | 12 ++++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h index 6c9bcbd9078..49d0243f677 100644 --- a/target/hppa/cpu.h +++ b/target/hppa/cpu.h @@ -271,8 +271,6 @@ typedef struct CPUArchState { struct {} end_reset_fields; bool is_pa20; - - target_ulong initrd_base, initrd_end; } CPUHPPAState; /** diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index b6f15bc61a3..61e83daaadb 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -43,6 +43,8 @@ struct HppaMachineState { MachineState parent_obj; struct { + uint64_t gr22; + uint64_t gr23; uint64_t gr24; uint64_t gr25; } boot_info; @@ -524,8 +526,8 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus, } load_image_targphys(initrd_filename, initrd_base, initrd_size); - cpu[0]->env.initrd_base = initrd_base; - cpu[0]->env.initrd_end = initrd_base + initrd_size; + hms->boot_info.gr23 = initrd_base; + hms->boot_info.gr22 = initrd_base + initrd_size; } } else { /* When booting via firmware, tell firmware if we want interactive @@ -677,15 +679,13 @@ static void hppa_machine_reset(MachineState *ms, ResetType type) cpu[0]->env.gr[26] = ms->ram_size; cpu[0]->env.gr[25] = hms->boot_info.gr25; cpu[0]->env.gr[24] = hms->boot_info.gr24; - cpu[0]->env.gr[23] = cpu[0]->env.initrd_base; - cpu[0]->env.gr[22] = cpu[0]->env.initrd_end; + cpu[0]->env.gr[23] = hms->boot_info.gr23; + cpu[0]->env.gr[22] = hms->boot_info.gr22; cpu[0]->env.gr[21] = smp_cpus; cpu[0]->env.gr[19] = FW_CFG_IO_BASE; /* reset static fields to avoid starting Linux kernel & initrd on reboot */ memset(&hms->boot_info, 0, sizeof(hms->boot_info)); - cpu[0]->env.initrd_base = 0; - cpu[0]->env.initrd_end = 0; } static void hppa_nmi(NMIState *n, int cpu_index, Error **errp) -- 2.51.0
