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
This commit is contained in:
patacongo 2011-06-15 23:54:25 +00:00
parent b4518798da
commit a69feab58a
3 changed files with 15 additions and 15 deletions

View File

@ -46,9 +46,9 @@
* Pre-processor definitions * 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. /* 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. * 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 _sdata /* Start of .data section in RAM */
.global _edata /* End of .data section in RAM */ .global _edata /* End of .data section in RAM */
.global _eronly /* Start of .data section in FLASH */ .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 up_lowinit /* Perform low level initialization */
.global os_start /* NuttX entry point */ .global os_start /* NuttX entry point */
@ -263,15 +264,14 @@ __do_clear_bss:
* Heap Base * Heap Base
****************************************************************************/ ****************************************************************************/
/* This global variable is unsigned long g_heapbase and is /* This global variable is unsigned long g_heapbase and is exported from
* exported from here only because of its coupling to other * here only because of its coupling to other uses of _enoinit in this file
* uses of _ebss in this file
*/ */
.data .data
.globl g_heapbase .globl g_heapbase
.type g_heapbase, object .type g_heapbase, object
g_heapbase: g_heapbase:
.word _ebss+CONFIG_IDLETHREAD_STACKSIZE .word _enoinit+CONFIG_IDLETHREAD_STACKSIZE
.size g_heapbase, .-g_heapbase .size g_heapbase, .-g_heapbase
.end .end

View File

@ -47,9 +47,9 @@
* Pre-processor definitions * 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. /* 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 * 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 _sdata /* Start of .data section in RAM */
.global _edata /* End of .data section in RAM */ .global _edata /* End of .data section in RAM */
.global _eronly /* Start of .data section in FLASH */ .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 up_lowinit /* Perform low level initialization */
.global os_start /* NuttX entry point */ .global os_start /* NuttX entry point */
@ -257,15 +258,14 @@ __do_clear_bss:
* Heap Base * Heap Base
****************************************************************************/ ****************************************************************************/
/* This global variable is unsigned long g_heapbase and is /* This global variable is unsigned long g_heapbase and is exported from
* exported from here only because of its coupling to other * here only because of its coupling to other uses of _enoinit in this file
* uses of _ebss in this file
*/ */
.data .data
.globl g_heapbase .globl g_heapbase
.type g_heapbase, object .type g_heapbase, object
g_heapbase: g_heapbase:
.word _ebss+CONFIG_IDLETHREAD_STACKSIZE .word _enoinit+CONFIG_IDLETHREAD_STACKSIZE
.size g_heapbase, .-g_heapbase .size g_heapbase, .-g_heapbase
.end .end

View File

@ -181,7 +181,7 @@ void up_dumpstate(void)
if (rtcb->pid == 0) if (rtcb->pid == 0)
{ {
ustackbase = g_heapbase - 4; ustackbase = g_heapbase - 1;
ustacksize = CONFIG_IDLETHREAD_STACKSIZE; ustacksize = CONFIG_IDLETHREAD_STACKSIZE;
} }
else else
@ -193,8 +193,8 @@ void up_dumpstate(void)
/* Get the limits on the interrupt stack memory */ /* Get the limits on the interrupt stack memory */
#if CONFIG_ARCH_INTERRUPTSTACK > 0 #if CONFIG_ARCH_INTERRUPTSTACK > 0
istackbase = (uint16_t)&g_intstackbase; istackbase = (uint16_t)&g_intstackbase - 1;
istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~3) - 4; istacksize = CONFIG_ARCH_INTERRUPTSTACK;
/* Show interrupt stack info */ /* Show interrupt stack info */