[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH] ppc: initialize GPRs as per epapr
From: |
Alexander Graf |
Subject: |
Re: [Qemu-ppc] [PATCH] ppc: initialize GPRs as per epapr |
Date: |
Fri, 26 Apr 2013 08:21:24 +0200 |
On 26.04.2013, at 08:17, Bharat Bhushan wrote:
> ePAPR defines the initial values of cpu registers. This patch initialize
> the GPRs as per ePAPR specification.
>
> This resolves the issue of guest reboot/reset (guest hang on reboot).
Why does it hang only on reboot, not on initial bootup?
>
> Signed-off-by: Bharat Bhushan <address@hidden>
> Signed-off-by: Stuart Yoder <address@hidden>
> ---
> hw/ppc/e500.c | 7 +++++++
> 1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> index c1bdb6b..a47f976 100644
> --- a/hw/ppc/e500.c
> +++ b/hw/ppc/e500.c
> @@ -37,6 +37,7 @@
> #include "qemu/host-utils.h"
> #include "hw/pci-host/ppce500.h"
>
> +#define EPAPR_MAGIC (0x45504150)
> #define BINARY_DEVICE_TREE_FILE "mpc8544ds.dtb"
> #define UIMAGE_LOAD_BASE 0
> #define DTC_LOAD_PAD 0x1800000
> @@ -444,6 +445,12 @@ static void ppce500_cpu_reset(void *opaque)
Does ePAPR mention anything wrt GPR state of secondary CPUs?
> cs->halted = 0;
> env->gpr[1] = (16<<20) - 8;
> env->gpr[3] = bi->dt_base;
> + env->gpr[4] = 0;
> + env->gpr[5] = 0;
> + env->gpr[6] = EPAPR_MAGIC;
> + env->gpr[7] = (64 * 1024 * 1024);
What is this?
Alex
> + env->gpr[8] = 0;
> + env->gpr[9] = 0;
> env->nip = bi->entry;
> mmubooke_create_initial_mapping(env);
> }
> --
> 1.7.0.4
>
>