11/*----------------------------------------------------------------------------
2- * CMSIS-RTOS - RTX
2+ * RL-ARM - RTX
33 *----------------------------------------------------------------------------
44 * Name: HAL_CM.C
55 * Purpose: Hardware Abstraction Layer for Cortex-M
6- * Rev.: V4.79
6+ * Rev.: V4.60
77 *----------------------------------------------------------------------------
88 *
9- * Copyright (c) 1999-2009 KEIL, 2009-2015 ARM Germany GmbH
9+ * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
1010 * All rights reserved.
1111 * Redistribution and use in source and binary forms, with or without
1212 * modification, are permitted provided that the following conditions are met:
3333 *---------------------------------------------------------------------------*/
3434
3535#include "rt_TypeDef.h"
36- #include "RTX_Config .h"
36+ #include "RTX_Conf .h"
3737#include "rt_HAL_CM.h"
3838
3939
@@ -58,15 +58,12 @@ void rt_init_stack (P_TCB p_TCB, FUNCP task_body) {
5858
5959 /* Prepare a complete interrupt frame for first task start */
6060 size = p_TCB -> priv_stack >> 2 ;
61- if (size == 0U ) {
62- size = (U16 )os_stackinfo >> 2 ;
63- }
6461
6562 /* Write to the top of stack. */
6663 stk = & p_TCB -> stack [size ];
6764
6865 /* Auto correct to 8-byte ARM stack alignment. */
69- if ((U32 )stk & 0x04U ) {
66+ if ((U32 )stk & 0x04 ) {
7067 stk -- ;
7168 }
7269
@@ -77,8 +74,8 @@ void rt_init_stack (P_TCB p_TCB, FUNCP task_body) {
7774 stk [14 ] = (U32 )task_body ;
7875
7976 /* Clear R4-R11,R0-R3,R12,LR registers. */
80- for (i = 0U ; i < 14U ; i ++ ) {
81- stk [i ] = 0U ;
77+ for (i = 0 ; i < 14 ; i ++ ) {
78+ stk [i ] = 0 ;
8279 }
8380
8481 /* Assign a void pointer to R0. */
@@ -90,50 +87,31 @@ void rt_init_stack (P_TCB p_TCB, FUNCP task_body) {
9087 /* Task entry point. */
9188 p_TCB -> ptask = task_body ;
9289
93- /* Initialize stack with magic pattern. */
94- if (os_stackinfo & 0x10000000U ) {
95- if (size > (16U + 1U )) {
96- for (i = ((size - 16U )/2U ) - 1U ; i ; i -- ) {
97- stk -= 2U ;
98- stk [1 ] = MAGIC_PATTERN ;
99- stk [0 ] = MAGIC_PATTERN ;
100- }
101- if (-- stk > p_TCB -> stack ) {
102- * stk = MAGIC_PATTERN ;
103- }
104- }
105- }
106-
107- #ifdef __MBED_CMSIS_RTOS_CM
10890 /* Set a magic word for checking of stack overflow.
109- For the main thread (ID: 0x02 ) the stack is in a memory area shared with the
91+ For the main thread (ID: 0x01 ) the stack is in a memory area shared with the
11092 heap, therefore the last word of the stack is a moving target.
11193 We want to do stack/heap collision detection instead.
11294 */
113- if (p_TCB -> task_id != 0x02 )
95+ if (p_TCB -> task_id != 0x01 )
11496 p_TCB -> stack [0 ] = MAGIC_WORD ;
115- #else
116- /* Set a magic word for checking of stack overflow. */
117- p_TCB -> stack [0 ] = MAGIC_WORD ;
118- #endif
11997}
12098
12199
122100/*--------------------------- rt_ret_val ----------------------------------*/
123101
124102static __inline U32 * rt_ret_regs (P_TCB p_TCB ) {
125103 /* Get pointer to task return value registers (R0..R3) in Stack */
126- #if defined (__TARGET_FPU_VFP )
104+ #if (__TARGET_FPU_VFP )
127105 if (p_TCB -> stack_frame ) {
128106 /* Extended Stack Frame: R4-R11,S16-S31,R0-R3,R12,LR,PC,xPSR,S0-S15,FPSCR */
129- return (U32 * )(p_TCB -> tsk_stack + ( 8U * 4U ) + ( 16U * 4U ) );
107+ return (U32 * )(p_TCB -> tsk_stack + 8 * 4 + 16 * 4 );
130108 } else {
131109 /* Basic Stack Frame: R4-R11,R0-R3,R12,LR,PC,xPSR */
132- return (U32 * )(p_TCB -> tsk_stack + ( 8U * 4U ) );
110+ return (U32 * )(p_TCB -> tsk_stack + 8 * 4 );
133111 }
134112#else
135113 /* Stack Frame: R4-R11,R0-R3,R12,LR,PC,xPSR */
136- return (U32 * )(p_TCB -> tsk_stack + ( 8U * 4U ) );
114+ return (U32 * )(p_TCB -> tsk_stack + 8 * 4 );
137115#endif
138116}
139117
@@ -157,9 +135,9 @@ void rt_ret_val2(P_TCB p_TCB, U32 v0, U32 v1) {
157135
158136#ifdef DBG_MSG
159137void dbg_init (void ) {
160- if ((( DEMCR & DEMCR_TRCENA ) != 0U ) &&
161- (( ITM_CONTROL & ITM_ITMENA ) != 0U ) &&
162- (( ITM_ENABLE & (1UL << 31 )) != 0U )) {
138+ if ((DEMCR & DEMCR_TRCENA ) &&
139+ (ITM_CONTROL & ITM_ITMENA ) &&
140+ (ITM_ENABLE & (1UL << 31 ))) {
163141 dbg_msg = __TRUE ;
164142 }
165143}
@@ -169,22 +147,24 @@ void dbg_init (void) {
169147
170148#ifdef DBG_MSG
171149void dbg_task_notify (P_TCB p_tcb , BOOL create ) {
172- while (ITM_PORT31_U32 == 0U );
150+ while (ITM_PORT31_U32 == 0 );
173151 ITM_PORT31_U32 = (U32 )p_tcb -> ptask ;
174- while (ITM_PORT31_U32 == 0U );
175- ITM_PORT31_U16 = (U16 )(( create << 8 ) | p_tcb -> task_id ) ;
152+ while (ITM_PORT31_U32 == 0 );
153+ ITM_PORT31_U16 = (create << 8 ) | p_tcb -> task_id ;
176154}
177155#endif
178156
179157/*--------------------------- dbg_task_switch -------------------------------*/
180158
181159#ifdef DBG_MSG
182160void dbg_task_switch (U32 task_id ) {
183- while (ITM_PORT31_U32 == 0U );
184- ITM_PORT31_U8 = ( U8 ) task_id ;
161+ while (ITM_PORT31_U32 == 0 );
162+ ITM_PORT31_U8 = task_id ;
185163}
186164#endif
187165
166+
188167/*----------------------------------------------------------------------------
189168 * end of file
190169 *---------------------------------------------------------------------------*/
170+
0 commit comments