diff options
| author | Bernard Xiong <[email protected]> | 2018-11-11 15:56:02 +0800 |
|---|---|---|
| committer | Bernard Xiong <[email protected]> | 2018-11-11 15:56:02 +0800 |
| commit | 00a655ac1c24d3707a5af376ec756e42406cd6bb (patch) | |
| tree | 408adf7686ed80dda45bac17b622e2d36fe4d18a /src/thread.c | |
| parent | c7a85df1cd19a4c2e1d37483f713ad67dcf4b55f (diff) | |
[Kernel] Add ARCH_CPU_STACK_GROWS_UPWARD option
Diffstat (limited to 'src/thread.c')
| -rw-r--r-- | src/thread.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/thread.c b/src/thread.c index 6d79ece54b..687852e92e 100644 --- a/src/thread.c +++ b/src/thread.c @@ -136,9 +136,15 @@ static rt_err_t _rt_thread_init(struct rt_thread *thread, /* init thread stack */ rt_memset(thread->stack_addr, '#', thread->stack_size); +#ifdef ARCH_CPU_STACK_GROWS_UPWARD + thread->sp = (void *)rt_hw_stack_init(thread->entry, thread->parameter, + (void *)((char *)thread->stack_addr), + (void *)rt_thread_exit); +#else thread->sp = (void *)rt_hw_stack_init(thread->entry, thread->parameter, (void *)((char *)thread->stack_addr + thread->stack_size - 4), (void *)rt_thread_exit); +#endif /* priority init */ RT_ASSERT(priority < RT_THREAD_PRIORITY_MAX); |
