CMSIS-RTOS2: Updated TrustZone Examples startup code to set MSPLIM correctly.
In order to allow MSPLIM to be set at the beginning of the reset handler one need to provide __user_setup_stackheap instead of deprecated __user_initial_stackheap. The latter one temporarily reconfigures the stack pointer which leads to a STKOF usage fault.
diff --git a/ARM.CMSIS.pdsc b/ARM.CMSIS.pdsc
index 20efacb..0336e93 100644
--- a/ARM.CMSIS.pdsc
+++ b/ARM.CMSIS.pdsc
@@ -8,6 +8,10 @@
<url>http://www.keil.com/pack/</url>
<releases>
+ <release version="5.0.2-dev6">
+ CMSIS-RTOS2:
+ - Updated ARMv8-M startup code to provide __user_setup_stackheap and setup main stack limit.
+ </release>
<release version="5.0.2-dev5">
CMSIS-Core(M):
- Added MPU Management Functions for CM0+/3/4/7
diff --git a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/NoRTOS/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/NoRTOS/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
index 1e28f2e..6fa96fd 100644
--- a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/NoRTOS/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
+++ b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/NoRTOS/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
@@ -2,11 +2,11 @@
; * @file startup_ARMCM33.s
; * @brief CMSIS Core Device Startup File for
; * ARMCM33 Device Series
-; * @version V5.00
-; * @date 21. October 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -248,10 +250,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
diff --git a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/NoRTOS/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/NoRTOS/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
index 1e28f2e..6fa96fd 100644
--- a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/NoRTOS/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
+++ b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/NoRTOS/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
@@ -2,11 +2,11 @@
; * @file startup_ARMCM33.s
; * @brief CMSIS Core Device Startup File for
; * ARMCM33 Device Series
-; * @version V5.00
-; * @date 21. October 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -248,10 +250,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
diff --git a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
index 1e28f2e..6fa96fd 100644
--- a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
+++ b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
@@ -2,11 +2,11 @@
; * @file startup_ARMCM33.s
; * @brief CMSIS Core Device Startup File for
; * ARMCM33 Device Series
-; * @version V5.00
-; * @date 21. October 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -248,10 +250,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
diff --git a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
index 1e28f2e..6fa96fd 100644
--- a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
+++ b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
@@ -2,11 +2,11 @@
; * @file startup_ARMCM33.s
; * @brief CMSIS Core Device Startup File for
; * ARMCM33 Device Series
-; * @version V5.00
-; * @date 21. October 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -248,10 +250,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
diff --git a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS_Faults/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS_Faults/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
index 1e28f2e..6fa96fd 100644
--- a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS_Faults/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
+++ b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS_Faults/CM33_ns/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
@@ -2,11 +2,11 @@
; * @file startup_ARMCM33.s
; * @brief CMSIS Core Device Startup File for
; * ARMCM33 Device Series
-; * @version V5.00
-; * @date 21. October 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -248,10 +250,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
diff --git a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS_Faults/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS_Faults/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
index 1e28f2e..6fa96fd 100644
--- a/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS_Faults/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
+++ b/CMSIS/RTOS2/RTX/Examples/TrustZoneV8M/RTOS_Faults/CM33_s/RTE/Device/ARMCM33_DSP_FP_TZ/startup_ARMCM33.s
@@ -2,11 +2,11 @@
; * @file startup_ARMCM33.s
; * @brief CMSIS Core Device Startup File for
; * ARMCM33 Device Series
-; * @version V5.00
-; * @date 21. October 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -248,10 +250,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
diff --git a/Device/ARM/ARMCM23/Source/ARM/startup_ARMCM23.s b/Device/ARM/ARMCM23/Source/ARM/startup_ARMCM23.s
index 3f2eb00..07cc6f1 100644
--- a/Device/ARM/ARMCM23/Source/ARM/startup_ARMCM23.s
+++ b/Device/ARM/ARMCM23/Source/ARM/startup_ARMCM23.s
@@ -2,11 +2,11 @@
; * @file startup_ARMCM23.s
; * @brief CMSIS Core Device Startup File for
; * ARMCM23 Device Series
-; * @version V5.00
-; * @date 21. October 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -223,10 +225,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
diff --git a/Device/ARM/ARMCM33/Source/ARM/startup_ARMCM33.s b/Device/ARM/ARMCM33/Source/ARM/startup_ARMCM33.s
index 1e28f2e..6fa96fd 100644
--- a/Device/ARM/ARMCM33/Source/ARM/startup_ARMCM33.s
+++ b/Device/ARM/ARMCM33/Source/ARM/startup_ARMCM33.s
@@ -2,11 +2,11 @@
; * @file startup_ARMCM33.s
; * @brief CMSIS Core Device Startup File for
; * ARMCM33 Device Series
-; * @version V5.00
-; * @date 21. October 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -248,10 +250,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
diff --git a/Device/ARM/ARMv8MBL/Source/ARM/startup_ARMv8MBL.s b/Device/ARM/ARMv8MBL/Source/ARM/startup_ARMv8MBL.s
index 5b9352a..0ec76e7 100644
--- a/Device/ARM/ARMv8MBL/Source/ARM/startup_ARMv8MBL.s
+++ b/Device/ARM/ARMv8MBL/Source/ARM/startup_ARMv8MBL.s
@@ -2,11 +2,11 @@
; * @file startup_ARMv8MBL.s
; * @brief CMSIS Core Device Startup File for
; * ARMv8MBL Device Series
-; * @version V5.00
-; * @date 25. April 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -223,10 +225,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
diff --git a/Device/ARM/ARMv8MML/Source/ARM/startup_ARMv8MML.s b/Device/ARM/ARMv8MML/Source/ARM/startup_ARMv8MML.s
index 68d56a7..4ae2ed3 100644
--- a/Device/ARM/ARMv8MML/Source/ARM/startup_ARMv8MML.s
+++ b/Device/ARM/ARMv8MML/Source/ARM/startup_ARMv8MML.s
@@ -2,11 +2,11 @@
; * @file startup_ARMv8MML.s
; * @brief CMSIS Core Device Startup File for
; * ARMv8MML Device Series
-; * @version V5.00
-; * @date 02. March 2016
+; * @version V5.1
+; * @date 31. July 2017
; ******************************************************************************/
;/*
-; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; * Copyright (c) 2009-2017 ARM Limited. All rights reserved.
; *
; * SPDX-License-Identifier: Apache-2.0
; *
@@ -125,6 +125,8 @@
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
+ LDR R0, =Stack_Mem
+ MSR MSPLIM, R0
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
@@ -248,10 +250,9 @@
ELSE
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
+ EXPORT __user_setup_stackheap
-__user_initial_stackheap PROC
+__user_setup_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)