[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 14/17] e500: split mpc8544ds specific initializati
From: |
David Gibson |
Subject: |
Re: [Qemu-ppc] [PATCH 14/17] e500: split mpc8544ds specific initialization |
Date: |
Tue, 19 Dec 2017 16:05:12 +1100 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
On Sun, Nov 26, 2017 at 03:59:12PM -0600, Michael Davidsaver wrote:
> split off the remaining board specific parts
> of e500_init() as mpc85xx_init() which
> will be used by the existing
> mpc8544ds and generic e500 boards.
>
> Signed-off-by: Michael Davidsaver <address@hidden>
Looks good, but will need a rebase.
> ---
> hw/ppc/e500.c | 49 ++++++++++++++++++++++++++++++++-----------------
> hw/ppc/e500.h | 3 ++-
> hw/ppc/e500plat.c | 2 +-
> hw/ppc/mpc8544ds.c | 2 +-
> 4 files changed, 36 insertions(+), 20 deletions(-)
>
> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> index b0c8495aef..0ac7cdf6a1 100644
> --- a/hw/ppc/e500.c
> +++ b/hw/ppc/e500.c
> @@ -690,7 +690,32 @@ static void ppce500_power_off(void *opaque, int line,
> int on)
> }
> }
>
> -void ppce500_init(MachineState *machine, PPCE500Params *params)
> +
> +void ppce500_init(MachineState *machine, uint32_t decrementer_freq)
> +{
> + int i;
> + for (i = 0; i < smp_cpus; i++) {
> + PowerPCCPU *cpu;
> + CPUState *cs;
> + CPUPPCState *env;
> +
> + cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
> + env = &cpu->env;
> + cs = CPU(cpu);
> +
> + if (env->mmu_model != POWERPC_MMU_BOOKE206) {
> + error_report("MMU model %i not supported by this machine.",
> + env->mmu_model);
> + exit(1);
> + }
> +
> + env->spr_cb[SPR_BOOKE_PIR].default_value = cs->cpu_index = i;
> +
> + ppc_booke_timers_init(cpu, decrementer_freq, PPC_TIMER_E500);
> + }
> +}
> +
> +void mpc85xx_init(MachineState *machine, PPCE500Params *params)
> {
> MemoryRegion *address_space_mem = get_system_memory();
> MemoryRegion *ram = g_new(MemoryRegion, 1);
> @@ -716,31 +741,21 @@ void ppce500_init(MachineState *machine, PPCE500Params
> *params)
> CPUPPCState *firstenv = NULL;
> MemoryRegion *ccsr_addr_space;
> SysBusDevice *s;
> + CPUState *cs;
>
> - for (i = 0; i < smp_cpus; i++) {
> + ppce500_init(machine, 400000000);
> +
> + CPU_FOREACH(cs) {
> PowerPCCPU *cpu;
> - CPUState *cs;
>
> - cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
> + cpu = POWERPC_CPU(cs);
> env = &cpu->env;
> - cs = CPU(cpu);
>
> - if (env->mmu_model != POWERPC_MMU_BOOKE206) {
> - fprintf(stderr, "MMU model %i not supported by this machine.\n",
> - env->mmu_model);
> - exit(1);
> - }
>
> + /* Register reset handler */
> if (!firstenv) {
> firstenv = env;
> - }
>
> - env->spr_cb[SPR_BOOKE_PIR].default_value = cs->cpu_index = i;
> -
> - ppc_booke_timers_init(cpu, 400000000, PPC_TIMER_E500);
> -
> - /* Register reset handler */
> - if (!i) {
> /* Primary CPU */
> struct boot_info *boot_info;
> boot_info = g_malloc0(sizeof(struct boot_info));
> diff --git a/hw/ppc/e500.h b/hw/ppc/e500.h
> index 70ba1d8f4f..350be17462 100644
> --- a/hw/ppc/e500.h
> +++ b/hw/ppc/e500.h
> @@ -24,7 +24,8 @@ typedef struct PPCE500Params {
> hwaddr spin_base;
> } PPCE500Params;
>
> -void ppce500_init(MachineState *machine, PPCE500Params *params);
> +void ppce500_init(MachineState *machine, uint32_t decrementer_freq);
> +void mpc85xx_init(MachineState *machine, PPCE500Params *params);
>
> hwaddr booke206_page_size_to_tlb(uint64_t size);
>
> diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c
> index e59e80fb9e..103efc68c2 100644
> --- a/hw/ppc/e500plat.c
> +++ b/hw/ppc/e500plat.c
> @@ -55,7 +55,7 @@ static void e500plat_init(MachineState *machine)
> params.mpic_version = OPENPIC_MODEL_FSL_MPIC_20;
> }
>
> - ppce500_init(machine, ¶ms);
> + mpc85xx_init(machine, ¶ms);
> }
>
> static void e500plat_machine_init(MachineClass *mc)
> diff --git a/hw/ppc/mpc8544ds.c b/hw/ppc/mpc8544ds.c
> index 1717953ec7..7de4ed8ae2 100644
> --- a/hw/ppc/mpc8544ds.c
> +++ b/hw/ppc/mpc8544ds.c
> @@ -47,7 +47,7 @@ static void mpc8544ds_init(MachineState *machine)
> exit(1);
> }
>
> - ppce500_init(machine, ¶ms);
> + mpc85xx_init(machine, ¶ms);
> }
>
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-ppc] [PATCH 14/17] e500: split mpc8544ds specific initialization,
David Gibson <=