qemu-trivial
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-trivial] [Qemu-devel] [PATCH] sparc/leon3: Initialize stack po


From: Fabien Chouteau
Subject: Re: [Qemu-trivial] [Qemu-devel] [PATCH] sparc/leon3: Initialize stack pointer
Date: Wed, 05 Feb 2014 10:02:58 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

On 02/03/2014 10:18 AM, Sebastian Huber wrote:
> A lot of real world LEON3 systems are shipped with the GRMON boot
> loader.  This boot loader initializes the stack pointer with the end of
> RAM address.  The application can use this to detect the RAM size of a
> particular board variant.
>

Looks good, thank you Sebastian.

Reviewed-by: Fabien Chouteau <address@hidden>

 
> Signed-off-by: Sebastian Huber <address@hidden>
> ---
>  hw/sparc/leon3.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
> index c583c3d..c16e9e4 100644
> --- a/hw/sparc/leon3.c
> +++ b/hw/sparc/leon3.c
> @@ -45,6 +45,7 @@
>  typedef struct ResetData {
>      SPARCCPU *cpu;
>      uint32_t  entry;            /* save kernel entry in case of reset */
> +    target_ulong sp;            /* initial stack pointer */
>  } ResetData;
>  
>  static void main_cpu_reset(void *opaque)
> @@ -58,6 +59,7 @@ static void main_cpu_reset(void *opaque)
>      cpu->halted = 0;
>      env->pc     = s->entry;
>      env->npc    = s->entry + 4;
> +    env->regbase[6] = s->sp;
>  }
>  
>  void leon3_irq_ack(void *irq_manager, int intno)
> @@ -133,6 +135,7 @@ static void leon3_generic_hw_init(QEMUMachineInitArgs 
> *args)
>      /* Reset data */
>      reset_info        = g_malloc0(sizeof(ResetData));
>      reset_info->cpu   = cpu;
> +    reset_info->sp    = 0x40000000 + ram_size;
>      qemu_register_reset(main_cpu_reset, reset_info);
>  
>      /* Allocate IRQ manager */
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]