MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / rt_hw_stack_init

Function rt_hw_stack_init

libcpu/rx/cpuport.c:69–92  ·  view source on GitHub ↗

* Initilial the thread stack. * * @author LXZ (2014/11/8) * * @param void* tentry * @param void* parameter * @param rt_uint8_t* stack_addr * @param void* texit * * @return rt_uint8_t* */

Source from the content-addressed store, hash-verified

67 * @return rt_uint8_t*
68 */
69rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter,
70 rt_uint8_t *stack_addr, void *texit)
71{
72 unsigned long *stk;
73 struct stack_frame *stack_frame;
74 unsigned long i;
75
76 stk = (unsigned long *)stack_addr;
77 *(stk) = (unsigned long)texit;
78 stack_frame = (struct stack_frame *)(stack_addr - sizeof(struct stack_frame)) ;
79
80 //Initilial all register
81 for (i = 0; i < sizeof(struct stack_frame) / sizeof(rt_uint32_t); i ++)
82 {
83 ((rt_uint32_t *)stack_frame)[i] = 0xdeadbeef;
84 }
85
86 stack_frame->PSW = (unsigned long)0x00030000 ; /* psw */
87 stack_frame->PC = (unsigned long)tentry; /* thread entery*/
88 stack_frame->R1 = (unsigned long )parameter; /* r1 : parameter */
89 stack_frame->FPSW = 0x00000100; /* fpsw */
90
91 return(rt_uint8_t *)stack_frame;
92}
93
94#if defined(RT_USING_FINSH) && defined(MSH_USING_BUILT_IN_COMMANDS)
95extern void list_thread(void);

Callers 4

arch_set_thread_contextFunction · 0.50
_signal_deliverFunction · 0.50
rt_signal_checkFunction · 0.50
_thread_initFunction · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected