Align thread stack to 8 byte.

This commit is contained in:
aozima 2015-06-05 19:09:13 +08:00
parent 37b10ab9b1
commit 9fe3cbf76f
1 changed files with 18 additions and 14 deletions

View File

@ -50,21 +50,25 @@ rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter,
{ {
rt_uint32_t *stk; rt_uint32_t *stk;
stk = (rt_uint32_t*)stack_addr; //stk = (rt_uint32_t*)stack_addr;
*(stk) = (rt_uint32_t)tentry; /* entry point */ stack_addr += sizeof(rt_uint32_t);
stack_addr = (rt_uint8_t *)RT_ALIGN_DOWN((rt_uint32_t)stack_addr, 8);
stk = (rt_uint32_t *)stack_addr;
*(--stk) = (rt_uint32_t)tentry; /* entry point */
*(--stk) = (rt_uint32_t)texit; /* lr */ *(--stk) = (rt_uint32_t)texit; /* lr */
*(--stk) = 0; /* r12 */ *(--stk) = 0xdeadbeef; /* r12 */
*(--stk) = 0; /* r11 */ *(--stk) = 0xdeadbeef; /* r11 */
*(--stk) = 0; /* r10 */ *(--stk) = 0xdeadbeef; /* r10 */
*(--stk) = 0; /* r9 */ *(--stk) = 0xdeadbeef; /* r9 */
*(--stk) = 0; /* r8 */ *(--stk) = 0xdeadbeef; /* r8 */
*(--stk) = 0; /* r7 */ *(--stk) = 0xdeadbeef; /* r7 */
*(--stk) = 0; /* r6 */ *(--stk) = 0xdeadbeef; /* r6 */
*(--stk) = 0; /* r5 */ *(--stk) = 0xdeadbeef; /* r5 */
*(--stk) = 0; /* r4 */ *(--stk) = 0xdeadbeef; /* r4 */
*(--stk) = 0; /* r3 */ *(--stk) = 0xdeadbeef; /* r3 */
*(--stk) = 0; /* r2 */ *(--stk) = 0xdeadbeef; /* r2 */
*(--stk) = 0; /* r1 */ *(--stk) = 0xdeadbeef; /* r1 */
*(--stk) = (rt_uint32_t)parameter; /* r0 : argument */ *(--stk) = (rt_uint32_t)parameter; /* r0 : argument */
/* cpsr */ /* cpsr */
if ((rt_uint32_t)tentry & 0x01) if ((rt_uint32_t)tentry & 0x01)