From a69feab58aee2707763f6c0ba0d015b5a6d6cda2 Mon Sep 17 00:00:00 2001 From: patacongo Date: Wed, 15 Jun 2011 23:54:25 +0000 Subject: [PATCH] Make room for the noinit section before the heap git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3710 42af7a65-404d-4744-a932-0658087f49c3 --- arch/avr/src/at90usb/at90usb_head.S | 12 ++++++------ arch/avr/src/atmega/atmega_head.S | 12 ++++++------ arch/avr/src/avr/up_dumpstate.c | 6 +++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/arch/avr/src/at90usb/at90usb_head.S b/arch/avr/src/at90usb/at90usb_head.S index 49b0e0e90b..a3f56245f7 100755 --- a/arch/avr/src/at90usb/at90usb_head.S +++ b/arch/avr/src/at90usb/at90usb_head.S @@ -46,9 +46,9 @@ * Pre-processor definitions ****************************************************************************/ -/* Stack is allocated just after .bss and before the heap */ +/* Stack is allocated just after uninitialized data and just before the heap */ -#define STACKBASE (_ebss+CONFIG_IDLETHREAD_STACKSIZE-1) +#define STACKBASE (_enoinit+CONFIG_IDLETHREAD_STACKSIZE-1) /* The RAMPZ register is only available for CPUs with more than 64Kb of FLASH. * Only the AT90USB646, 647, 1286, and 1287 are supported by this file. @@ -72,6 +72,7 @@ .global _sdata /* Start of .data section in RAM */ .global _edata /* End of .data section in RAM */ .global _eronly /* Start of .data section in FLASH */ + .global _enoinit /* End of uninitialized data. Defined by ld.script */ .global up_lowinit /* Perform low level initialization */ .global os_start /* NuttX entry point */ @@ -263,15 +264,14 @@ __do_clear_bss: * Heap Base ****************************************************************************/ - /* This global variable is unsigned long g_heapbase and is - * exported from here only because of its coupling to other - * uses of _ebss in this file + /* This global variable is unsigned long g_heapbase and is exported from + * here only because of its coupling to other uses of _enoinit in this file */ .data .globl g_heapbase .type g_heapbase, object g_heapbase: - .word _ebss+CONFIG_IDLETHREAD_STACKSIZE + .word _enoinit+CONFIG_IDLETHREAD_STACKSIZE .size g_heapbase, .-g_heapbase .end diff --git a/arch/avr/src/atmega/atmega_head.S b/arch/avr/src/atmega/atmega_head.S index cad7e54c8c..9b6581ce76 100755 --- a/arch/avr/src/atmega/atmega_head.S +++ b/arch/avr/src/atmega/atmega_head.S @@ -47,9 +47,9 @@ * Pre-processor definitions ****************************************************************************/ -/* Stack is allocated just after .bss and before the heap */ +/* Stack is allocated just after uninitialized data and just before the heap */ -#define STACKBASE (_ebss+CONFIG_IDLETHREAD_STACKSIZE-4) +#define STACKBASE (_enoinit+CONFIG_IDLETHREAD_STACKSIZE-1) /* The RAMPZ register is only available for CPUs with more than 64Kb of FLASH. * At present, only the ATMega128 is supported so RAMPZ should always be @@ -72,6 +72,7 @@ .global _sdata /* Start of .data section in RAM */ .global _edata /* End of .data section in RAM */ .global _eronly /* Start of .data section in FLASH */ + .global _enoinit /* End of uninitilized data. Defined by ld.script */ .global up_lowinit /* Perform low level initialization */ .global os_start /* NuttX entry point */ @@ -257,15 +258,14 @@ __do_clear_bss: * Heap Base ****************************************************************************/ - /* This global variable is unsigned long g_heapbase and is - * exported from here only because of its coupling to other - * uses of _ebss in this file + /* This global variable is unsigned long g_heapbase and is exported from + * here only because of its coupling to other uses of _enoinit in this file */ .data .globl g_heapbase .type g_heapbase, object g_heapbase: - .word _ebss+CONFIG_IDLETHREAD_STACKSIZE + .word _enoinit+CONFIG_IDLETHREAD_STACKSIZE .size g_heapbase, .-g_heapbase .end diff --git a/arch/avr/src/avr/up_dumpstate.c b/arch/avr/src/avr/up_dumpstate.c index 2e3af537bf..e22aa8f8b8 100644 --- a/arch/avr/src/avr/up_dumpstate.c +++ b/arch/avr/src/avr/up_dumpstate.c @@ -181,7 +181,7 @@ void up_dumpstate(void) if (rtcb->pid == 0) { - ustackbase = g_heapbase - 4; + ustackbase = g_heapbase - 1; ustacksize = CONFIG_IDLETHREAD_STACKSIZE; } else @@ -193,8 +193,8 @@ void up_dumpstate(void) /* Get the limits on the interrupt stack memory */ #if CONFIG_ARCH_INTERRUPTSTACK > 0 - istackbase = (uint16_t)&g_intstackbase; - istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~3) - 4; + istackbase = (uint16_t)&g_intstackbase - 1; + istacksize = CONFIG_ARCH_INTERRUPTSTACK; /* Show interrupt stack info */