This is an automated email from the ASF dual-hosted git repository. gnutt pushed a commit to branch pr789 in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 437a937a8f836f1d241d1fed35973f7ea0a77e64 Author: zhongan <zhon...@xiaomi.com> AuthorDate: Thu Apr 2 11:21:53 2020 +0800 Add initialization for idle task. Change-Id: I1be75d2d1d45f157c1c64626b39a8bd72c324be2 Signed-off-by: zhongan <zhon...@xiaomi.com> --- arch/risc-v/src/common/up_initialize.c | 10 ++++++++++ arch/risc-v/src/common/up_internal.h | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/arch/risc-v/src/common/up_initialize.c b/arch/risc-v/src/common/up_initialize.c index 142115a..21b848f 100644 --- a/arch/risc-v/src/common/up_initialize.c +++ b/arch/risc-v/src/common/up_initialize.c @@ -49,6 +49,7 @@ #include <arch/board/board.h> +#include "sched/sched.h" #include "up_arch.h" #include "up_internal.h" @@ -105,6 +106,8 @@ static inline void up_color_intstack(void) void up_initialize(void) { + FAR struct tcb_s *idle; + /* Colorize the interrupt stack */ up_color_intstack(); @@ -113,6 +116,13 @@ void up_initialize(void) up_addregion(); + /* Initialize the idle task stack info */ + + idle = this_task(); /* It should be idle task */ + idle->stack_alloc_ptr = _END_BSS; + idle->adj_stack_ptr = (FAR void *)g_idle_topstack; + idle->adj_stack_size = CONFIG_IDLETHREAD_STACKSIZE; + /* Register devices */ #if defined(CONFIG_DEV_NULL) diff --git a/arch/risc-v/src/common/up_internal.h b/arch/risc-v/src/common/up_internal.h index b28264c..ef9a9b2 100644 --- a/arch/risc-v/src/common/up_internal.h +++ b/arch/risc-v/src/common/up_internal.h @@ -77,6 +77,14 @@ #define up_restorestate(regs) (g_current_regs = regs) #endif +#define _START_TEXT &_stext +#define _END_TEXT &_etext +#define _START_BSS &_sbss +#define _END_BSS &_ebss +#define _DATA_INIT &_eronly +#define _START_DATA &_sdata +#define _END_DATA &_edata + /* Determine which (if any) console driver to use. If a console is enabled * and no other console device is specified, then a serial console is * assumed. @@ -112,6 +120,7 @@ extern "C" #define EXTERN extern #endif +#ifndef __ASSEMBLY__ #ifdef CONFIG_ARCH_RV64GC #ifdef CONFIG_SMP EXTERN volatile uint64_t *g_current_regs[CONFIG_SMP_NCPUS]; @@ -153,6 +162,8 @@ EXTERN uint32_t _edata; /* End+1 of .data */ EXTERN uint32_t _sbss; /* Start of .bss */ EXTERN uint32_t _ebss; /* End+1 of .bss */ +#endif /* __ASSEMBLY__ */ + /**************************************************************************** * Public Functions ****************************************************************************/