diff --git a/doc/nil/Doxyfile_chm b/doc/nil/Doxyfile_chm index 689a28708..b8a583daf 100644 --- a/doc/nil/Doxyfile_chm +++ b/doc/nil/Doxyfile_chm @@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/NIL # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.1.1 +PROJECT_NUMBER = 1.1.2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/doc/nil/Doxyfile_html b/doc/nil/Doxyfile_html index 9997cf384..908bf584d 100644 --- a/doc/nil/Doxyfile_html +++ b/doc/nil/Doxyfile_html @@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/NIL # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.1.1 +PROJECT_NUMBER = 1.1.2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/doc/rt/Doxyfile_chm b/doc/rt/Doxyfile_chm index f0bd9d817..d44012471 100644 --- a/doc/rt/Doxyfile_chm +++ b/doc/rt/Doxyfile_chm @@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/RT # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 3.1.2 +PROJECT_NUMBER = 3.1.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/doc/rt/Doxyfile_html b/doc/rt/Doxyfile_html index 61e741a48..9b91b1ee4 100644 --- a/doc/rt/Doxyfile_html +++ b/doc/rt/Doxyfile_html @@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/RT # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 3.1.2 +PROJECT_NUMBER = 3.1.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/os/nil/include/nil.h b/os/nil/include/nil.h index ba2e2de8a..7cfa8913b 100644 --- a/os/nil/include/nil.h +++ b/os/nil/include/nil.h @@ -61,7 +61,7 @@ typedef struct nil_thread thread_t; /** * @brief Kernel version string. */ -#define CH_KERNEL_VERSION "1.1.1" +#define CH_KERNEL_VERSION "1.1.2" /** * @brief Kernel version major number. @@ -76,7 +76,7 @@ typedef struct nil_thread thread_t; /** * @brief Kernel version patch number. */ -#define CH_KERNEL_PATCH 1 +#define CH_KERNEL_PATCH 2 /** @} */ /** diff --git a/os/nil/ports/ARMCMx/compilers/GCC/nilcoreasm_v7m.s b/os/nil/ports/ARMCMx/compilers/GCC/nilcoreasm_v7m.s index 298110f09..a98802798 100644 --- a/os/nil/ports/ARMCMx/compilers/GCC/nilcoreasm_v7m.s +++ b/os/nil/ports/ARMCMx/compilers/GCC/nilcoreasm_v7m.s @@ -64,8 +64,18 @@ _port_switch: #if CORTEX_USE_FPU vpush {s16-s31} #endif + str sp, [r1, #CONTEXT_OFFSET] +#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) && \ + ((CORTEX_MODEL == 3) || (CORTEX_MODEL == 4)) + /* Workaround for ARM errata 752419, only applied if + condition exists for it to be triggered.*/ + ldr r3, [r0, #CONTEXT_OFFSET] + mov sp, r3 +#else ldr sp, [r0, #CONTEXT_OFFSET] +#endif + #if CORTEX_USE_FPU vpop {s16-s31} #endif diff --git a/os/rt/include/ch.h b/os/rt/include/ch.h index f7b35ad99..17e9a1137 100644 --- a/os/rt/include/ch.h +++ b/os/rt/include/ch.h @@ -48,7 +48,7 @@ /** * @brief Kernel version string. */ -#define CH_KERNEL_VERSION "3.1.2" +#define CH_KERNEL_VERSION "3.1.3" /** * @brief Kernel version major number. @@ -63,7 +63,7 @@ /** * @brief Kernel version patch number. */ -#define CH_KERNEL_PATCH 2 +#define CH_KERNEL_PATCH 3 /** @} */ /* Core headers.*/ diff --git a/os/rt/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.s b/os/rt/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.s index b232e0397..a303c0256 100644 --- a/os/rt/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.s +++ b/os/rt/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.s @@ -64,8 +64,18 @@ _port_switch: #if CORTEX_USE_FPU vpush {s16-s31} #endif + str sp, [r1, #CONTEXT_OFFSET] +#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) && \ + ((CORTEX_MODEL == 3) || (CORTEX_MODEL == 4)) + /* Workaround for ARM errata 752419, only applied if + condition exists for it to be triggered.*/ + ldr r3, [r0, #CONTEXT_OFFSET] + mov sp, r3 +#else ldr sp, [r0, #CONTEXT_OFFSET] +#endif + #if CORTEX_USE_FPU vpop {s16-s31} #endif diff --git a/os/rt/ports/ARMCMx/compilers/IAR/chcoreasm_v7m.s b/os/rt/ports/ARMCMx/compilers/IAR/chcoreasm_v7m.s index 12516a2fc..2f58a73aa 100644 --- a/os/rt/ports/ARMCMx/compilers/IAR/chcoreasm_v7m.s +++ b/os/rt/ports/ARMCMx/compilers/IAR/chcoreasm_v7m.s @@ -72,8 +72,18 @@ _port_switch: #if CORTEX_USE_FPU vpush {s16-s31} #endif + str sp, [r1, #CONTEXT_OFFSET] +#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) && \ + ((CORTEX_MODEL == 3) || (CORTEX_MODEL == 4)) + /* Workaround for ARM errata 752419, only applied if + condition exists for it to be triggered.*/ + ldr r3, [r0, #CONTEXT_OFFSET] + mov sp, r3 +#else ldr sp, [r0, #CONTEXT_OFFSET] +#endif + #if CORTEX_USE_FPU vpop {s16-s31} #endif diff --git a/os/rt/ports/ARMCMx/compilers/RVCT/chcoreasm_v7m.s b/os/rt/ports/ARMCMx/compilers/RVCT/chcoreasm_v7m.s index 1d23a99f3..69bfaa59c 100644 --- a/os/rt/ports/ARMCMx/compilers/RVCT/chcoreasm_v7m.s +++ b/os/rt/ports/ARMCMx/compilers/RVCT/chcoreasm_v7m.s @@ -67,8 +67,18 @@ _port_switch PROC #if CORTEX_USE_FPU vpush {s16-s31} #endif - str sp, [r1, #CONTEXT_OFFSET] + + str sp, [r1, #CONTEXT_OFFSET] +#if (CORTEX_SIMPLIFIED_PRIORITY == FALSE) && \ + ((CORTEX_MODEL == 3) || (CORTEX_MODEL == 4)) + /* Workaround for ARM errata 752419, only applied if + condition exists for it to be triggered.*/ + ldr r3, [r0, #CONTEXT_OFFSET] + mov sp, r3 +#else ldr sp, [r0, #CONTEXT_OFFSET] +#endif + #if CORTEX_USE_FPU vpop {s16-s31} #endif diff --git a/readme.txt b/readme.txt index 5074d8a91..b708d4e0d 100644 --- a/readme.txt +++ b/readme.txt @@ -72,6 +72,10 @@ *** Releases and Change Log *** ***************************************************************************** +*** 16.1.4 *** +- NIL: Fixed ARM errata 752419 (bug #706). +- RT: Fixed ARM errata 752419 (bug #706). + *** 16.1.3 *** - HAL: Fixed unused variable in STM32 SPIv2 driver (bug #705). - HAL: Fixed chDbgAssert() still called from STM32 SPIv1 driver (bug #704).