[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 */
>