summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2015-01-24 06:03:39 -0600
committerGregory Nutt <gnutt@nuttx.org>2015-01-24 06:03:39 -0600
commitec6b436dc9afec0d39ce52c3e589a4e37bc1facd (patch)
treef49f588fd7fb77f9799fc666da6246f35efb68b6
parentdc57c53f080c460896db6309f98511f592c149ce (diff)
downloadpx4-nuttx-ec6b436dc9afec0d39ce52c3e589a4e37bc1facd.tar.gz
px4-nuttx-ec6b436dc9afec0d39ce52c3e589a4e37bc1facd.tar.bz2
px4-nuttx-ec6b436dc9afec0d39ce52c3e589a4e37bc1facd.zip
Add CONFIG_STACK_COLORATION that does the same thing as CONFIG_DEBUG_STACK but without enabling debug. From David Sidrane
-rw-r--r--nuttx/Kconfig9
-rw-r--r--nuttx/arch/arm/src/a1x/Make.defs4
-rw-r--r--nuttx/arch/arm/src/a1x/a1x_irq.c3
-rw-r--r--nuttx/arch/arm/src/arm/up_assert.c6
-rw-r--r--nuttx/arch/arm/src/arm/up_head.S4
-rw-r--r--nuttx/arch/arm/src/arm/up_nommuhead.S4
-rw-r--r--nuttx/arch/arm/src/armv6-m/up_assert.c6
-rw-r--r--nuttx/arch/arm/src/armv7-a/arm_assert.c4
-rw-r--r--nuttx/arch/arm/src/armv7-a/arm_head.S4
-rw-r--r--nuttx/arch/arm/src/armv7-a/arm_pghead.S4
-rw-r--r--nuttx/arch/arm/src/armv7-m/up_assert.c6
-rw-r--r--nuttx/arch/arm/src/c5471/Make.defs4
-rw-r--r--nuttx/arch/arm/src/calypso/Make.defs4
-rw-r--r--nuttx/arch/arm/src/common/up_checkstack.c7
-rw-r--r--nuttx/arch/arm/src/common/up_createstack.c8
-rw-r--r--nuttx/arch/arm/src/common/up_initialize.c2
-rw-r--r--nuttx/arch/arm/src/common/up_internal.h3
-rw-r--r--nuttx/arch/arm/src/dm320/Make.defs4
-rw-r--r--nuttx/arch/arm/src/efm32/Make.defs4
-rw-r--r--nuttx/arch/arm/src/efm32/efm32_irq.c2
-rw-r--r--nuttx/arch/arm/src/efm32/efm32_start.c6
-rw-r--r--nuttx/arch/arm/src/imx/Make.defs4
-rw-r--r--nuttx/arch/arm/src/kl/Make.defs4
-rw-r--r--nuttx/arch/arm/src/lpc214x/Make.defs4
-rw-r--r--nuttx/arch/arm/src/lpc2378/Make.defs4
-rw-r--r--nuttx/arch/arm/src/lpc31xx/Make.defs4
-rw-r--r--nuttx/arch/arm/src/lpc43xx/Make.defs4
-rw-r--r--nuttx/arch/arm/src/nuc1xx/Make.defs4
-rw-r--r--nuttx/arch/arm/src/sam34/Make.defs4
-rw-r--r--nuttx/arch/arm/src/sama5/Make.defs4
-rw-r--r--nuttx/arch/arm/src/sama5/sam_irq.c2
-rw-r--r--nuttx/arch/arm/src/samd/Make.defs4
-rw-r--r--nuttx/arch/arm/src/stm32/Make.defs4
-rw-r--r--nuttx/arch/arm/src/stm32/stm32_irq.c2
-rw-r--r--nuttx/arch/arm/src/stm32/stm32_start.c7
-rw-r--r--nuttx/arch/arm/src/str71x/Make.defs4
-rw-r--r--nuttx/arch/arm/src/tiva/Make.defs4
-rw-r--r--nuttx/arch/avr/src/at90usb/Make.defs4
-rw-r--r--nuttx/arch/avr/src/atmega/Make.defs4
-rw-r--r--nuttx/arch/avr/src/avr/up_checkstack.c8
-rw-r--r--nuttx/arch/avr/src/avr/up_createstack.c4
-rw-r--r--nuttx/arch/avr/src/avr/up_dumpstate.c6
-rw-r--r--nuttx/arch/avr/src/avr/up_usestack.c2
-rw-r--r--nuttx/arch/avr/src/avr32/up_createstack.c6
-rw-r--r--nuttx/arch/avr/src/avr32/up_dumpstate.c6
-rw-r--r--nuttx/arch/avr/src/avr32/up_usestack.c2
-rw-r--r--nuttx/arch/avr/src/common/up_initialize.c2
-rw-r--r--nuttx/include/nuttx/arch.h2
48 files changed, 148 insertions, 59 deletions
diff --git a/nuttx/Kconfig b/nuttx/Kconfig
index 8bfce7a38..82a3f4b73 100644
--- a/nuttx/Kconfig
+++ b/nuttx/Kconfig
@@ -675,6 +675,15 @@ config DEBUG_WATCHDOG
endif # DEBUG
+config STACK_COLORATION
+ bool "Stack coloration"
+ default n
+ depends on ARCH_HAVE_STACKCHECK && !DEBUG_STACK
+ ---help---
+ Enable stack coloration to initialize the stack memory to the value
+ of STACK_COLOR and use the stack checking API in a non debug build.
+ Only supported by a few architectures.
+
config DEBUG_SYMBOLS
bool "Generate Debug Symbols"
default n
diff --git a/nuttx/arch/arm/src/a1x/Make.defs b/nuttx/arch/arm/src/a1x/Make.defs
index b00b34938..177b423fd 100644
--- a/nuttx/arch/arm/src/a1x/Make.defs
+++ b/nuttx/arch/arm/src/a1x/Make.defs
@@ -119,6 +119,10 @@ CMN_ASRCS += arm_savefpu.S arm_restorefpu.S
CMN_CSRCS += arm_copyarmstate.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/a1x/a1x_irq.c b/nuttx/arch/arm/src/a1x/a1x_irq.c
index b4a69405c..6dbee9c32 100644
--- a/nuttx/arch/arm/src/a1x/a1x_irq.c
+++ b/nuttx/arch/arm/src/a1x/a1x_irq.c
@@ -165,8 +165,7 @@ void up_irqinitialize(void)
}
/* Colorize the interrupt stack for debug purposes */
-
-#if defined(CONFIG_DEBUG_STACK) && CONFIG_ARCH_INTERRUPTSTACK > 3
+#if (defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) && CONFIG_ARCH_INTERRUPTSTACK > 3
{
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~3);
up_stack_color((FAR void *)((uintptr_t)&g_intstackbase - intstack_size),
diff --git a/nuttx/arch/arm/src/arm/up_assert.c b/nuttx/arch/arm/src/arm/up_assert.c
index 4c54e099b..21fe668dc 100644
--- a/nuttx/arch/arm/src/arm/up_assert.c
+++ b/nuttx/arch/arm/src/arm/up_assert.c
@@ -237,7 +237,7 @@ static void up_dumpstate(void)
lldbg("IRQ stack:\n");
lldbg(" base: %08x\n", istackbase);
lldbg(" size: %08x\n", istacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_intstack());
#endif
@@ -264,7 +264,7 @@ static void up_dumpstate(void)
lldbg("User stack:\n");
lldbg(" base: %08x\n", ustackbase);
lldbg(" size: %08x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_tcbstack(rtcb));
#endif
@@ -272,7 +272,7 @@ static void up_dumpstate(void)
lldbg("sp: %08x\n", sp);
lldbg("stack base: %08x\n", ustackbase);
lldbg("stack size: %08x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg("stack used: %08x\n", up_check_tcbstack(rtcb));
#endif
#endif
diff --git a/nuttx/arch/arm/src/arm/up_head.S b/nuttx/arch/arm/src/arm/up_head.S
index 155c6a879..3f2dc57a8 100644
--- a/nuttx/arch/arm/src/arm/up_head.S
+++ b/nuttx/arch/arm/src/arm/up_head.S
@@ -611,7 +611,7 @@ __start:
bl up_boot
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
/* Write a known value to the IDLE thread stack to support stack
* monitoring logic
*/
@@ -678,7 +678,7 @@ __start:
.long _edata
#endif
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
.type .Lstkinit, %object
.Lstkinit:
.long _ebss /* Beginning of the IDLE stack, then words of IDLE stack */
diff --git a/nuttx/arch/arm/src/arm/up_nommuhead.S b/nuttx/arch/arm/src/arm/up_nommuhead.S
index 9d1539fa3..ef5608b17 100644
--- a/nuttx/arch/arm/src/arm/up_nommuhead.S
+++ b/nuttx/arch/arm/src/arm/up_nommuhead.S
@@ -128,7 +128,7 @@ __start:
bl board_led_initialize
#endif
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
/* Write a known value to the IDLE thread stack to support stack
* monitoring logic
*/
@@ -170,7 +170,7 @@ __start:
.long _edata
#endif
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
.type .Lstkinit, %object
.Lstkinit:
.long _ebss /* Beginning of the IDLE stack, then words of IDLE stack */
diff --git a/nuttx/arch/arm/src/armv6-m/up_assert.c b/nuttx/arch/arm/src/armv6-m/up_assert.c
index 69af23fa0..a8ccbfe16 100644
--- a/nuttx/arch/arm/src/armv6-m/up_assert.c
+++ b/nuttx/arch/arm/src/armv6-m/up_assert.c
@@ -243,7 +243,7 @@ static void up_dumpstate(void)
lldbg("IRQ stack:\n");
lldbg(" base: %08x\n", istackbase);
lldbg(" size: %08x\n", istacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_intstack());
#endif
@@ -272,7 +272,7 @@ static void up_dumpstate(void)
lldbg("User stack:\n");
lldbg(" base: %08x\n", ustackbase);
lldbg(" size: %08x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_tcbstack(rtcb));
#endif
@@ -289,7 +289,7 @@ static void up_dumpstate(void)
lldbg("sp: %08x\n", sp);
lldbg("stack base: %08x\n", ustackbase);
lldbg("stack size: %08x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg("stack used: %08x\n", up_check_tcbstack(rtcb));
#endif
diff --git a/nuttx/arch/arm/src/armv7-a/arm_assert.c b/nuttx/arch/arm/src/armv7-a/arm_assert.c
index c08da07b4..adcb48f46 100644
--- a/nuttx/arch/arm/src/armv7-a/arm_assert.c
+++ b/nuttx/arch/arm/src/armv7-a/arm_assert.c
@@ -239,7 +239,7 @@ static void up_dumpstate(void)
lldbg("Interrupt stack:\n");
lldbg(" base: %08x\n", istackbase);
lldbg(" size: %08x\n", istacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_intstack());
#endif
#endif
@@ -249,7 +249,7 @@ static void up_dumpstate(void)
lldbg("User stack:\n");
lldbg(" base: %08x\n", ustackbase);
lldbg(" size: %08x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_tcbstack(rtcb));
#endif
diff --git a/nuttx/arch/arm/src/armv7-a/arm_head.S b/nuttx/arch/arm/src/armv7-a/arm_head.S
index 705304c8f..44418de0d 100644
--- a/nuttx/arch/arm/src/armv7-a/arm_head.S
+++ b/nuttx/arch/arm/src/armv7-a/arm_head.S
@@ -631,7 +631,7 @@ __start:
bl up_boot
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
/* Write a known value to the IDLE thread stack to support stack
* monitoring logic
*/
@@ -748,7 +748,7 @@ arm_data_initialize:
.size .Ldatainit, . -.Ldatainit
#endif
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
.type .Lstkinit, %object
.Lstkinit:
#ifdef CONFIG_BOOT_SDRAM_DATA
diff --git a/nuttx/arch/arm/src/armv7-a/arm_pghead.S b/nuttx/arch/arm/src/armv7-a/arm_pghead.S
index e985f6eba..1b4f41bf4 100644
--- a/nuttx/arch/arm/src/armv7-a/arm_pghead.S
+++ b/nuttx/arch/arm/src/armv7-a/arm_pghead.S
@@ -675,7 +675,7 @@ __start:
bl up_boot
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
/* Write a known value to the IDLE thread stack to support stack
* monitoring logic
*/
@@ -797,7 +797,7 @@ arm_data_initialize:
.long _edata
.size .Ldatainit, . -.Ldatainit
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
.type .Lstkinit, %object
.Lstkinit:
#ifdef CONFIG_BOOT_SDRAM_DATA
diff --git a/nuttx/arch/arm/src/armv7-m/up_assert.c b/nuttx/arch/arm/src/armv7-m/up_assert.c
index 7be0d02cb..6b3b86d59 100644
--- a/nuttx/arch/arm/src/armv7-m/up_assert.c
+++ b/nuttx/arch/arm/src/armv7-m/up_assert.c
@@ -248,7 +248,7 @@ static void up_dumpstate(void)
lldbg("IRQ stack:\n");
lldbg(" base: %08x\n", istackbase);
lldbg(" size: %08x\n", istacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_intstack());
#endif
@@ -277,7 +277,7 @@ static void up_dumpstate(void)
lldbg("User stack:\n");
lldbg(" base: %08x\n", ustackbase);
lldbg(" size: %08x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_tcbstack(rtcb));
#endif
@@ -297,7 +297,7 @@ static void up_dumpstate(void)
lldbg("sp: %08x\n", sp);
lldbg("stack base: %08x\n", ustackbase);
lldbg("stack size: %08x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg("stack used: %08x\n", up_check_tcbstack(rtcb));
#endif
diff --git a/nuttx/arch/arm/src/c5471/Make.defs b/nuttx/arch/arm/src/c5471/Make.defs
index 388ce9c18..3e20a54a5 100644
--- a/nuttx/arch/arm/src/c5471/Make.defs
+++ b/nuttx/arch/arm/src/c5471/Make.defs
@@ -49,6 +49,10 @@ ifeq ($(CONFIG_ELF),y)
CMN_CSRCS += up_elf.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/calypso/Make.defs b/nuttx/arch/arm/src/calypso/Make.defs
index 9b5a2c9ab..35eb161a8 100644
--- a/nuttx/arch/arm/src/calypso/Make.defs
+++ b/nuttx/arch/arm/src/calypso/Make.defs
@@ -52,6 +52,10 @@ ifeq ($(CONFIG_ELF),y)
CMN_CSRCS += up_elf.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/common/up_checkstack.c b/nuttx/arch/arm/src/common/up_checkstack.c
index 314a8c881..006ee535f 100644
--- a/nuttx/arch/arm/src/common/up_checkstack.c
+++ b/nuttx/arch/arm/src/common/up_checkstack.c
@@ -57,7 +57,7 @@
# undef CONFIG_DEBUG_STACK
#endif
-#if defined(CONFIG_DEBUG_STACK)
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
/****************************************************************************
* Public Data
@@ -66,6 +66,7 @@
/****************************************************************************
* Private Function Prototypes
****************************************************************************/
+static size_t do_stackcheck(uintptr_t alloc, size_t size);
/****************************************************************************
* Name: do_stackcheck
@@ -84,7 +85,7 @@
*
****************************************************************************/
-size_t do_stackcheck(uintptr_t alloc, size_t size)
+static size_t do_stackcheck(uintptr_t alloc, size_t size)
{
FAR uintptr_t start;
FAR uintptr_t end;
@@ -202,4 +203,4 @@ size_t up_check_intstack_remain(void)
}
#endif
-#endif /* CONFIG_DEBUG_STACK */
+#endif /* CONFIG_DEBUG_STACK || CONFIG_STACK_COLORATION */
diff --git a/nuttx/arch/arm/src/common/up_createstack.c b/nuttx/arch/arm/src/common/up_createstack.c
index 954941815..73bf01b86 100644
--- a/nuttx/arch/arm/src/common/up_createstack.c
+++ b/nuttx/arch/arm/src/common/up_createstack.c
@@ -162,7 +162,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype)
if (ttype == TCB_FLAG_TTYPE_KERNEL)
{
-#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
+#if defined(CONFIG_DEBUG) && !(defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION))
tcb->stack_alloc_ptr = (uint32_t *)kmm_zalloc(stack_size);
#else
tcb->stack_alloc_ptr = (uint32_t *)kmm_malloc(stack_size);
@@ -173,7 +173,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype)
{
/* Use the user-space allocator if this is a task or pthread */
-#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
+#if defined(CONFIG_DEBUG) && !(defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION))
tcb->stack_alloc_ptr = (uint32_t *)kumm_zalloc(stack_size);
#else
tcb->stack_alloc_ptr = (uint32_t *)kumm_malloc(stack_size);
@@ -230,7 +230,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype)
* water marks.
*/
-#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)
+#if (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
up_stack_color(tcb->stack_alloc_ptr, tcb->adj_stack_size);
#endif
@@ -249,7 +249,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype)
*
****************************************************************************/
-#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)
+#if (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
void up_stack_color(FAR void *stackbase, size_t nbytes)
{
/* Take extra care that we do not write outsize the stack boundaries */
diff --git a/nuttx/arch/arm/src/common/up_initialize.c b/nuttx/arch/arm/src/common/up_initialize.c
index c96abe35e..2ee43572f 100644
--- a/nuttx/arch/arm/src/common/up_initialize.c
+++ b/nuttx/arch/arm/src/common/up_initialize.c
@@ -96,7 +96,7 @@ static void up_calibratedelay(void)
*
****************************************************************************/
-#if defined(CONFIG_DEBUG_STACK) && CONFIG_ARCH_INTERRUPTSTACK > 3
+#if (defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) && CONFIG_ARCH_INTERRUPTSTACK > 3
static inline void up_color_intstack(void)
{
uint32_t *ptr = (uint32_t *)&g_intstackalloc;
diff --git a/nuttx/arch/arm/src/common/up_internal.h b/nuttx/arch/arm/src/common/up_internal.h
index 91ba04b2f..be261e117 100644
--- a/nuttx/arch/arm/src/common/up_internal.h
+++ b/nuttx/arch/arm/src/common/up_internal.h
@@ -519,8 +519,7 @@ void up_rnginitialize(void);
#endif
/* Debug ********************************************************************/
-
-#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)
+#if (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
void up_stack_color(FAR void *stackbase, size_t nbytes);
#endif
diff --git a/nuttx/arch/arm/src/dm320/Make.defs b/nuttx/arch/arm/src/dm320/Make.defs
index d38a6ac9d..a7d1ff636 100644
--- a/nuttx/arch/arm/src/dm320/Make.defs
+++ b/nuttx/arch/arm/src/dm320/Make.defs
@@ -50,6 +50,10 @@ ifeq ($(CONFIG_ELF),y)
CMN_CSRCS += up_elf.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/efm32/Make.defs b/nuttx/arch/arm/src/efm32/Make.defs
index c730fb521..c83f165bc 100644
--- a/nuttx/arch/arm/src/efm32/Make.defs
+++ b/nuttx/arch/arm/src/efm32/Make.defs
@@ -71,6 +71,10 @@ CMN_UASRCS += up_signal_handler.S
endif
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/efm32/efm32_irq.c b/nuttx/arch/arm/src/efm32/efm32_irq.c
index ff4d4baf9..6ba7b13bb 100644
--- a/nuttx/arch/arm/src/efm32/efm32_irq.c
+++ b/nuttx/arch/arm/src/efm32/efm32_irq.c
@@ -353,7 +353,7 @@ void up_irqinitialize(void)
#endif
#endif
-#if defined(CONFIG_DEBUG_STACK) && CONFIG_ARCH_INTERRUPTSTACK > 3
+#if (defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) && CONFIG_ARCH_INTERRUPTSTACK > 3
/* Colorize the interrupt stack for debug purposes */
{
diff --git a/nuttx/arch/arm/src/efm32/efm32_start.c b/nuttx/arch/arm/src/efm32/efm32_start.c
index eab75ae3b..be439c27d 100644
--- a/nuttx/arch/arm/src/efm32/efm32_start.c
+++ b/nuttx/arch/arm/src/efm32/efm32_start.c
@@ -68,7 +68,7 @@
#ifdef CONFIG_ARCH_FPU
static inline void efm32_fpuconfig(void);
#endif
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
static void go_os_start(void *pv, unsigned int nbytes)
__attribute__ ((naked,no_instrument_function,noreturn));
#endif
@@ -195,7 +195,7 @@ static inline void efm32_fpuconfig(void)
*
****************************************************************************/
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
static void go_os_start(void *pv, unsigned int nbytes)
{
/* Set the IDLE stack to the stack coloration value then jump to
@@ -301,7 +301,7 @@ void __start(void)
showprogress('\r');
showprogress('\n');
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
/* Set the IDLE stack to the coloration value and jump into os_start() */
go_os_start((FAR void *)&_ebss, CONFIG_IDLETHREAD_STACKSIZE);
diff --git a/nuttx/arch/arm/src/imx/Make.defs b/nuttx/arch/arm/src/imx/Make.defs
index 262e34c76..6a31844a7 100644
--- a/nuttx/arch/arm/src/imx/Make.defs
+++ b/nuttx/arch/arm/src/imx/Make.defs
@@ -49,6 +49,10 @@ ifeq ($(CONFIG_ELF),y)
CMN_CSRCS += up_elf.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/kl/Make.defs b/nuttx/arch/arm/src/kl/Make.defs
index 430ad3665..55a837769 100644
--- a/nuttx/arch/arm/src/kl/Make.defs
+++ b/nuttx/arch/arm/src/kl/Make.defs
@@ -55,6 +55,10 @@ CMN_UASRCS += up_signal_handler.S
endif
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/lpc214x/Make.defs b/nuttx/arch/arm/src/lpc214x/Make.defs
index aaef5aba3..6d4695d50 100644
--- a/nuttx/arch/arm/src/lpc214x/Make.defs
+++ b/nuttx/arch/arm/src/lpc214x/Make.defs
@@ -54,6 +54,10 @@ ifeq ($(CONFIG_ELF),y)
CMN_CSRCS += up_elf.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/lpc2378/Make.defs b/nuttx/arch/arm/src/lpc2378/Make.defs
index 469fd8ffc..df38c1c3e 100644
--- a/nuttx/arch/arm/src/lpc2378/Make.defs
+++ b/nuttx/arch/arm/src/lpc2378/Make.defs
@@ -58,6 +58,10 @@ ifeq ($(CONFIG_ELF),y)
CMN_CSRCS += up_elf.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/lpc31xx/Make.defs b/nuttx/arch/arm/src/lpc31xx/Make.defs
index d9b8f116b..45e24630e 100644
--- a/nuttx/arch/arm/src/lpc31xx/Make.defs
+++ b/nuttx/arch/arm/src/lpc31xx/Make.defs
@@ -55,6 +55,10 @@ ifeq ($(CONFIG_ELF),y)
CMN_CSRCS += up_elf.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/lpc43xx/Make.defs b/nuttx/arch/arm/src/lpc43xx/Make.defs
index 2a302a36e..a55f1d926 100644
--- a/nuttx/arch/arm/src/lpc43xx/Make.defs
+++ b/nuttx/arch/arm/src/lpc43xx/Make.defs
@@ -68,6 +68,10 @@ CMN_UASRCS += up_signal_handler.S
endif
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/nuc1xx/Make.defs b/nuttx/arch/arm/src/nuc1xx/Make.defs
index f13458904..4ba3d6f05 100644
--- a/nuttx/arch/arm/src/nuc1xx/Make.defs
+++ b/nuttx/arch/arm/src/nuc1xx/Make.defs
@@ -55,6 +55,10 @@ CMN_UASRCS += up_signal_handler.S
endif
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/sam34/Make.defs b/nuttx/arch/arm/src/sam34/Make.defs
index cb1727565..cc439da76 100644
--- a/nuttx/arch/arm/src/sam34/Make.defs
+++ b/nuttx/arch/arm/src/sam34/Make.defs
@@ -74,6 +74,10 @@ ifeq ($(CONFIG_ELF),y)
CMN_CSRCS += up_elf.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/sama5/Make.defs b/nuttx/arch/arm/src/sama5/Make.defs
index 25e87389e..dcb62de05 100644
--- a/nuttx/arch/arm/src/sama5/Make.defs
+++ b/nuttx/arch/arm/src/sama5/Make.defs
@@ -121,6 +121,10 @@ CMN_ASRCS += arm_savefpu.S arm_restorefpu.S
CMN_CSRCS += arm_copyarmstate.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/sama5/sam_irq.c b/nuttx/arch/arm/src/sama5/sam_irq.c
index f9e0d2f66..55e2046ed 100644
--- a/nuttx/arch/arm/src/sama5/sam_irq.c
+++ b/nuttx/arch/arm/src/sama5/sam_irq.c
@@ -427,7 +427,7 @@ void up_irqinitialize(void)
/* Colorize the interrupt stack for debug purposes */
-#if defined(CONFIG_DEBUG_STACK) && CONFIG_ARCH_INTERRUPTSTACK > 3
+#if (defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) && CONFIG_ARCH_INTERRUPTSTACK > 3
{
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~3);
up_stack_color((FAR void *)((uintptr_t)&g_intstackbase - intstack_size),
diff --git a/nuttx/arch/arm/src/samd/Make.defs b/nuttx/arch/arm/src/samd/Make.defs
index 3e7bc4ba0..4d1340674 100644
--- a/nuttx/arch/arm/src/samd/Make.defs
+++ b/nuttx/arch/arm/src/samd/Make.defs
@@ -55,6 +55,10 @@ CMN_UASRCS += up_signal_handler.S
endif
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/stm32/Make.defs b/nuttx/arch/arm/src/stm32/Make.defs
index 9c3585a37..8a3935190 100644
--- a/nuttx/arch/arm/src/stm32/Make.defs
+++ b/nuttx/arch/arm/src/stm32/Make.defs
@@ -79,6 +79,10 @@ CMN_UASRCS += up_signal_handler.S
endif
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/stm32/stm32_irq.c b/nuttx/arch/arm/src/stm32/stm32_irq.c
index 318ab6c43..6942ac1dd 100644
--- a/nuttx/arch/arm/src/stm32/stm32_irq.c
+++ b/nuttx/arch/arm/src/stm32/stm32_irq.c
@@ -308,7 +308,7 @@ void up_irqinitialize(void)
/* Colorize the interrupt stack for debug purposes */
-#if defined(CONFIG_DEBUG_STACK) && CONFIG_ARCH_INTERRUPTSTACK > 3
+#if (defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) && CONFIG_ARCH_INTERRUPTSTACK > 3
{
size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~3);
up_stack_color((FAR void *)((uintptr_t)&g_intstackbase - intstack_size),
diff --git a/nuttx/arch/arm/src/stm32/stm32_start.c b/nuttx/arch/arm/src/stm32/stm32_start.c
index 8147e3dbd..d9bc5d3b2 100644
--- a/nuttx/arch/arm/src/stm32/stm32_start.c
+++ b/nuttx/arch/arm/src/stm32/stm32_start.c
@@ -65,7 +65,7 @@
#ifdef CONFIG_ARCH_FPU
static inline void stm32_fpuconfig(void);
#endif
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
static void go_os_start(void *pv, unsigned int nbytes)
__attribute__ ((naked,no_instrument_function,noreturn));
#endif
@@ -195,8 +195,7 @@ static inline void stm32_fpuconfig(void)
* Set the IDLE stack to the
*
****************************************************************************/
-
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
static void go_os_start(void *pv, unsigned int nbytes)
{
/* Set the IDLE stack to the stack coloration value then jump to
@@ -311,7 +310,7 @@ void __start(void)
showprogress('\r');
showprogress('\n');
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
/* Set the IDLE stack to the coloration value and jump into os_start() */
go_os_start((FAR void *)&_ebss, CONFIG_IDLETHREAD_STACKSIZE);
diff --git a/nuttx/arch/arm/src/str71x/Make.defs b/nuttx/arch/arm/src/str71x/Make.defs
index 7ab03c675..41ee1144e 100644
--- a/nuttx/arch/arm/src/str71x/Make.defs
+++ b/nuttx/arch/arm/src/str71x/Make.defs
@@ -54,6 +54,10 @@ ifeq ($(CONFIG_ELF),y)
CMN_CSRCS += up_elf.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/arm/src/tiva/Make.defs b/nuttx/arch/arm/src/tiva/Make.defs
index 3c49a6769..2d9773d89 100644
--- a/nuttx/arch/arm/src/tiva/Make.defs
+++ b/nuttx/arch/arm/src/tiva/Make.defs
@@ -55,6 +55,10 @@ ifeq ($(CONFIG_ARCH_MEMCPY),y)
CMN_ASRCS += up_memcpy.S
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/avr/src/at90usb/Make.defs b/nuttx/arch/avr/src/at90usb/Make.defs
index 249f345dc..a7e1526ac 100644
--- a/nuttx/arch/avr/src/at90usb/Make.defs
+++ b/nuttx/arch/avr/src/at90usb/Make.defs
@@ -58,6 +58,10 @@ ifeq ($(CONFIG_AVR_SPI),y)
CMN_CSRCS += up_spi.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/avr/src/atmega/Make.defs b/nuttx/arch/avr/src/atmega/Make.defs
index 73377bd1a..e61ef3ecc 100644
--- a/nuttx/arch/avr/src/atmega/Make.defs
+++ b/nuttx/arch/avr/src/atmega/Make.defs
@@ -58,6 +58,10 @@ ifeq ($(CONFIG_AVR_SPI),y)
CMN_CSRCS += up_spi.c
endif
+ifeq ($(CONFIG_STACK_COLORATION),y)
+CMN_CSRCS += up_checkstack.c
+endif
+
ifeq ($(CONFIG_DEBUG_STACK),y)
CMN_CSRCS += up_checkstack.c
endif
diff --git a/nuttx/arch/avr/src/avr/up_checkstack.c b/nuttx/arch/avr/src/avr/up_checkstack.c
index dd24e0c75..da7697be4 100644
--- a/nuttx/arch/avr/src/avr/up_checkstack.c
+++ b/nuttx/arch/avr/src/avr/up_checkstack.c
@@ -57,7 +57,7 @@
# undef CONFIG_DEBUG_STACK
#endif
-#if defined(CONFIG_DEBUG_STACK)
+#if defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
/****************************************************************************
* Public Data
@@ -67,6 +67,8 @@
* Private Functions
****************************************************************************/
+static size_t do_stackcheck(uintptr_t alloc, size_t size);
+
/****************************************************************************
* Name: do_stackcheck
*
@@ -84,7 +86,7 @@
*
****************************************************************************/
-size_t do_stackcheck(uintptr_t alloc, size_t size)
+static size_t do_stackcheck(uintptr_t alloc, size_t size)
{
FAR uint8_t *ptr;
size_t mark;
@@ -197,4 +199,4 @@ size_t up_check_intstack_remain(void)
}
#endif
-#endif /* CONFIG_DEBUG_STACK */
+#endif /* CONFIG_DEBUG_STACK || CONFIG_STACK_COLORATION */
diff --git a/nuttx/arch/avr/src/avr/up_createstack.c b/nuttx/arch/avr/src/avr/up_createstack.c
index 4b7df816b..ff3d26d01 100644
--- a/nuttx/arch/avr/src/avr/up_createstack.c
+++ b/nuttx/arch/avr/src/avr/up_createstack.c
@@ -120,7 +120,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype)
* then create a zeroed stack to make stack dumps easier to trace.
*/
-#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
+#if defined(CONFIG_DEBUG) && !(defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION))
tcb->stack_alloc_ptr = (uint32_t *)kumm_zalloc(stack_size);
#else
tcb->stack_alloc_ptr = (uint32_t *)kumm_malloc(stack_size);
@@ -147,7 +147,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype)
* water marks.
*/
-#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)
+#if (defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION))
memset(tcb->stack_alloc_ptr, STACK_COLOR, stack_size);
#endif
diff --git a/nuttx/arch/avr/src/avr/up_dumpstate.c b/nuttx/arch/avr/src/avr/up_dumpstate.c
index 78a8c50bf..1049c1fac 100644
--- a/nuttx/arch/avr/src/avr/up_dumpstate.c
+++ b/nuttx/arch/avr/src/avr/up_dumpstate.c
@@ -208,7 +208,7 @@ void up_dumpstate(void)
lldbg("IRQ stack:\n");
lldbg(" base: %04x\n", istackbase);
lldbg(" size: %04x\n", istacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_intstack());
#endif
@@ -237,7 +237,7 @@ void up_dumpstate(void)
lldbg("User stack:\n");
lldbg(" base: %04x\n", ustackbase);
lldbg(" size: %04x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_tcbstack(rtcb));
#endif
@@ -253,7 +253,7 @@ void up_dumpstate(void)
lldbg("sp: %04x\n", sp);
lldbg("stack base: %04x\n", ustackbase);
lldbg("stack size: %04x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg("stack used: %08x\n", up_check_tcbstack(rtcb));
#endif
diff --git a/nuttx/arch/avr/src/avr/up_usestack.c b/nuttx/arch/avr/src/avr/up_usestack.c
index cb19ed241..7113971a4 100644
--- a/nuttx/arch/avr/src/avr/up_usestack.c
+++ b/nuttx/arch/avr/src/avr/up_usestack.c
@@ -111,7 +111,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
* that we can use later to test for high water marks.
*/
-#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)
+#if (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION))
memset(tcb->stack_alloc_ptr, STACK_COLOR, stack_size);
#endif
diff --git a/nuttx/arch/avr/src/avr32/up_createstack.c b/nuttx/arch/avr/src/avr32/up_createstack.c
index 1d840819b..be5e37e7e 100644
--- a/nuttx/arch/avr/src/avr32/up_createstack.c
+++ b/nuttx/arch/avr/src/avr32/up_createstack.c
@@ -129,7 +129,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype)
if (ttype == TCB_FLAG_TTYPE_KERNEL)
{
-#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
+#if defined(CONFIG_DEBUG) && !(defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION))
tcb->stack_alloc_ptr = (uint32_t *)kmm_zalloc(stack_size);
#else
tcb->stack_alloc_ptr = (uint32_t *)kmm_malloc(stack_size);
@@ -140,7 +140,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype)
{
/* Use the user-space allocator if this is a task or pthread */
-#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK)
+#if defined(CONFIG_DEBUG) && !(defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION))
tcb->stack_alloc_ptr = (uint32_t *)kumm_zalloc(stack_size);
#else
tcb->stack_alloc_ptr = (uint32_t *)kumm_malloc(stack_size);
@@ -169,7 +169,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype)
* water marks.
*/
-#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)
+#if (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
memset(tcb->stack_alloc_ptr, STACK_COLOR, stack_size);
#endif
diff --git a/nuttx/arch/avr/src/avr32/up_dumpstate.c b/nuttx/arch/avr/src/avr32/up_dumpstate.c
index 55c4a7cba..6884a037d 100644
--- a/nuttx/arch/avr/src/avr32/up_dumpstate.c
+++ b/nuttx/arch/avr/src/avr32/up_dumpstate.c
@@ -185,7 +185,7 @@ void up_dumpstate(void)
lldbg("IRQ stack:\n");
lldbg(" base: %08x\n", istackbase);
lldbg(" size: %08x\n", istacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_intstack());
#endif
@@ -214,7 +214,7 @@ void up_dumpstate(void)
lldbg("User stack:\n");
lldbg(" base: %08x\n", ustackbase);
lldbg(" size: %08x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg(" used: %08x\n", up_check_tcbstack(rtcb));
#endif
@@ -230,7 +230,7 @@ void up_dumpstate(void)
lldbg("sp: %08x\n", sp);
lldbg("stack base: %08x\n", ustackbase);
lldbg("stack size: %08x\n", ustacksize);
-#ifdef CONFIG_DEBUG_STACK
+#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
lldbg("stack used: %08x\n", up_check_tcbstack(rtcb));
#endif
diff --git a/nuttx/arch/avr/src/avr32/up_usestack.c b/nuttx/arch/avr/src/avr32/up_usestack.c
index f606ff385..5c43c54d6 100644
--- a/nuttx/arch/avr/src/avr32/up_usestack.c
+++ b/nuttx/arch/avr/src/avr32/up_usestack.c
@@ -111,7 +111,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size)
* that we can use later to test for high water marks.
*/
-#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)
+#if (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)
memset(tcb->stack_alloc_ptr, STACK_COLOR, stack_size);
#endif
diff --git a/nuttx/arch/avr/src/common/up_initialize.c b/nuttx/arch/avr/src/common/up_initialize.c
index 630e5d405..92297d066 100644
--- a/nuttx/arch/avr/src/common/up_initialize.c
+++ b/nuttx/arch/avr/src/common/up_initialize.c
@@ -141,7 +141,7 @@ static void up_calibratedelay(void)
*
****************************************************************************/
-#if defined(CONFIG_DEBUG_STACK) && CONFIG_ARCH_INTERRUPTSTACK > 3
+#if (defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) && CONFIG_ARCH_INTERRUPTSTACK > 3
static inline void up_color_intstack(void)
{
uint8_t *ptr = (uint8_t *)&g_intstackalloc;
diff --git a/nuttx/include/nuttx/arch.h b/nuttx/include/nuttx/arch.h
index f2b2b8d5e..987e67dff 100644
--- a/nuttx/include/nuttx/arch.h
+++ b/nuttx/include/nuttx/arch.h
@@ -1729,7 +1729,7 @@ void irq_dispatch(int irq, FAR void *context);
*
****************************************************************************/
-#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)
+#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)
struct tcb_s;
size_t up_check_tcbstack(FAR struct tcb_s *tcb);
ssize_t up_check_tcbstack_remain(FAR struct tcb_s *tcb);