diff mbox

hw/arm/nseries: Allocating Large sized arrays to heap

Message ID 1461651308-894-1-git-send-email-zhoujie2011@cn.fujitsu.com (mailing list archive)
State New, archived
Headers show

Commit Message

Zhou Jie April 26, 2016, 6:15 a.m. UTC
n8x0_init has a huge stack usage of 65536 bytes approx.
Moving large arrays to heap to reduce stack usage.

Signed-off-by: Zhou Jie <zhoujie2011@cn.fujitsu.com>
---
 hw/arm/nseries.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Peter Maydell May 4, 2016, 3:22 p.m. UTC | #1
On 26 April 2016 at 07:15, Zhou Jie <zhoujie2011@cn.fujitsu.com> wrote:
> n8x0_init has a huge stack usage of 65536 bytes approx.
> Moving large arrays to heap to reduce stack usage.
>
> Signed-off-by: Zhou Jie <zhoujie2011@cn.fujitsu.com>
> ---
>  hw/arm/nseries.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
> index 5382505..c7068c0 100644
> --- a/hw/arm/nseries.c
> +++ b/hw/arm/nseries.c
> @@ -1364,7 +1364,7 @@ static void n8x0_init(MachineState *machine,
>
>      if (option_rom[0].name &&
>          (machine->boot_order[0] == 'n' || !machine->kernel_filename)) {
> -        uint8_t nolo_tags[0x10000];
> +        uint8_t *nolo_tags = g_new(uint8_t, 0x10000);
>          /* No, wait, better start at the ROM.  */
>          s->mpu->cpu->env.regs[15] = OMAP2_Q2_BASE + 0x400000;
>
> @@ -1383,6 +1383,7 @@ static void n8x0_init(MachineState *machine,
>
>          n800_setup_nolo_tags(nolo_tags);
>          cpu_physical_memory_write(OMAP2_SRAM_BASE, nolo_tags, 0x10000);
> +        g_free(nolo_tags);
>      }
>  }

Thanks, applied to target-arm.next.

-- PMM
diff mbox

Patch

diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
index 5382505..c7068c0 100644
--- a/hw/arm/nseries.c
+++ b/hw/arm/nseries.c
@@ -1364,7 +1364,7 @@  static void n8x0_init(MachineState *machine,
 
     if (option_rom[0].name &&
         (machine->boot_order[0] == 'n' || !machine->kernel_filename)) {
-        uint8_t nolo_tags[0x10000];
+        uint8_t *nolo_tags = g_new(uint8_t, 0x10000);
         /* No, wait, better start at the ROM.  */
         s->mpu->cpu->env.regs[15] = OMAP2_Q2_BASE + 0x400000;
 
@@ -1383,6 +1383,7 @@  static void n8x0_init(MachineState *machine,
 
         n800_setup_nolo_tags(nolo_tags);
         cpu_physical_memory_write(OMAP2_SRAM_BASE, nolo_tags, 0x10000);
+        g_free(nolo_tags);
     }
 }