From 9741231ed794ed6825795e34a35c3391fbc32830 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sun, 14 Aug 2011 12:27:46 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3234 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/ports/IAR/ARMCMx/chcore_v6m.h | 2 +- os/ports/IAR/ARMCMx/chcore_v7m.h | 2 +- os/ports/RVCT/ARMCMx/chcore_v6m.h | 4 ++-- os/ports/RVCT/ARMCMx/chcore_v7m.h | 4 ++-- readme.txt | 1 - 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/os/ports/IAR/ARMCMx/chcore_v6m.h b/os/ports/IAR/ARMCMx/chcore_v6m.h index a25fde1ef..0480451c0 100644 --- a/os/ports/IAR/ARMCMx/chcore_v6m.h +++ b/os/ports/IAR/ARMCMx/chcore_v6m.h @@ -240,7 +240,7 @@ struct intctx { #define port_switch(ntp, otp) _port_switch(ntp, otp) #else #define port_switch(ntp, otp) { \ - if ((void *)(__get_SP() - sizeof(struct intctx)) < (void *)(otp + 1)) \ + if ((stkalign_t *)(__get_SP() - sizeof(struct intctx)) < otp->p_stklimit) \ chDbgPanic("stack overflow"); \ _port_switch(ntp, otp); \ } diff --git a/os/ports/IAR/ARMCMx/chcore_v7m.h b/os/ports/IAR/ARMCMx/chcore_v7m.h index 059f29711..086a99d39 100644 --- a/os/ports/IAR/ARMCMx/chcore_v7m.h +++ b/os/ports/IAR/ARMCMx/chcore_v7m.h @@ -306,7 +306,7 @@ struct intctx { #define port_switch(ntp, otp) _port_switch(ntp, otp) #else #define port_switch(ntp, otp) { \ - if ((void *)(__get_SP() - sizeof(struct intctx)) < (void *)(otp + 1)) \ + if ((stkalign_t *)(__get_SP() - sizeof(struct intctx)) < otp->p_stklimit) \ chDbgPanic("stack overflow"); \ _port_switch(ntp, otp); \ } diff --git a/os/ports/RVCT/ARMCMx/chcore_v6m.h b/os/ports/RVCT/ARMCMx/chcore_v6m.h index 7241d462f..bdeec1674 100644 --- a/os/ports/RVCT/ARMCMx/chcore_v6m.h +++ b/os/ports/RVCT/ARMCMx/chcore_v6m.h @@ -240,8 +240,8 @@ struct intctx { #define port_switch(ntp, otp) _port_switch(ntp, otp) #else #define port_switch(ntp, otp) { \ - struct intctx *r13 = (struct intctx *)__current_sp(); \ - if ((void *)(r13 - 1) < (void *)(otp + 1)) \ + uint8_t *r13 = (uint8_t *)__current_sp(); \ + if ((stkalign_t *)(r13 - sizeof(struct intctx)) < otp->p_stklimit) \ chDbgPanic("stack overflow"); \ _port_switch(ntp, otp); \ } diff --git a/os/ports/RVCT/ARMCMx/chcore_v7m.h b/os/ports/RVCT/ARMCMx/chcore_v7m.h index fdf855f77..17447476f 100644 --- a/os/ports/RVCT/ARMCMx/chcore_v7m.h +++ b/os/ports/RVCT/ARMCMx/chcore_v7m.h @@ -314,8 +314,8 @@ struct intctx { #define port_switch(ntp, otp) _port_switch(ntp, otp) #else #define port_switch(ntp, otp) { \ - struct intctx *r13 = (struct intctx *)__current_sp(); \ - if ((void *)(r13 - 1) < (void *)(otp + 1)) \ + uint8_t *r13 = (uint8_t *)__current_sp(); \ + if ((stkalign_t *)(r13 - sizeof(struct intctx)) < otp->p_stklimit) \ chDbgPanic("stack overflow"); \ _port_switch(ntp, otp); \ } diff --git a/readme.txt b/readme.txt index 1c4207711..0d80592d0 100644 --- a/readme.txt +++ b/readme.txt @@ -111,7 +111,6 @@ The process stack is organized to be checked on context switch like other threads. Now all threads have an explicit stack boundary pointer. (TODO: documentation to be updated) - (TODO: change to be ported to IAR and Keil ports) - NEW: Added debug plugin for Eclipse under ./tools/eclipse (backported to 2.2.7). - NEW: The debug macros chDbgCheck() and chDbgAssert() now can be externally