From a39f26788af2ef97af91a420783fe00fcbaebe5e Mon Sep 17 00:00:00 2001 From: BernardXiong Date: Mon, 26 Jul 2021 13:12:25 +0800 Subject: [PATCH 1/2] [finsh] keep compatibility with old version --- components/finsh/msh.c | 2 +- components/finsh/shell.c | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/components/finsh/msh.c b/components/finsh/msh.c index 08f4315a4e..7a4a3a887f 100644 --- a/components/finsh/msh.c +++ b/components/finsh/msh.c @@ -11,7 +11,7 @@ */ #include -#ifdef RT_USING_MSH +#if defined(RT_USING_MSH) || defined(FINSH_USING_MSH) #ifndef FINSH_ARG_MAX #define FINSH_ARG_MAX 8 diff --git a/components/finsh/shell.c b/components/finsh/shell.c index c8e8cebe10..dbf285ae86 100644 --- a/components/finsh/shell.c +++ b/components/finsh/shell.c @@ -22,7 +22,7 @@ #include #include -#ifdef RT_USING_MSH +#if defined(RT_USING_MSH) || defined(FINSH_USING_MSH) #include "shell.h" #include "msh.h" @@ -40,10 +40,8 @@ struct finsh_shell _shell; #endif /* finsh symtab */ -#ifdef FINSH_USING_SYMTAB struct finsh_syscall *_syscall_table_begin = NULL; struct finsh_syscall *_syscall_table_end = NULL; -#endif struct finsh_shell *shell; static char *finsh_prompt_custom = RT_NULL; -- Gitee From 128a943607e11fb95a9cd0666286f1638ac0a375 Mon Sep 17 00:00:00 2001 From: BernardXiong Date: Mon, 26 Jul 2021 13:13:26 +0800 Subject: [PATCH 2/2] [lwP] add arch_kernel_get_mmu_info API --- components/lwp/arch/risc-v/rv64/lwp_arch.c | 11 ++++++++--- components/lwp/arch/risc-v/rv64/lwp_arch.h | 2 ++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/components/lwp/arch/risc-v/rv64/lwp_arch.c b/components/lwp/arch/risc-v/rv64/lwp_arch.c index fb995e7402..4739b58ee0 100644 --- a/components/lwp/arch/risc-v/rv64/lwp_arch.c +++ b/components/lwp/arch/risc-v/rv64/lwp_arch.c @@ -27,7 +27,6 @@ extern size_t MMUTable[]; -//该函数用于支持用户栈扩展功能 int arch_expand_user_stack(void *addr) { int ret = 0; @@ -63,6 +62,13 @@ void *lwp_copy_return_code_to_user_stack() return RT_NULL; } +rt_mmu_info* arch_kernel_get_mmu_info(void) +{ + extern rt_mmu_info *mmu_info; + + return mmu_info; +} + uint32_t lwp_fix_sp(uint32_t cursp) { void lwp_thread_return(); @@ -92,7 +98,6 @@ void *lwp_get_user_sp() return RT_NULL; } -//该函数负责初始化lwp的页表和堆 int arch_user_space_init(struct rt_lwp *lwp) { size_t *mmu_table; @@ -104,6 +109,7 @@ int arch_user_space_init(struct rt_lwp *lwp) } lwp->end_heap = USER_HEAP_VADDR; + memcpy(mmu_table, MMUTable, PAGE_SIZE); rt_hw_cpu_dcache_ops(RT_HW_CACHE_FLUSH, mmu_table, 4 * PAGE_SIZE); rt_hw_mmu_map_init(&lwp->mmu_info, (void *)0x100000000UL, 0xFFFFFFFEFFFFFFFFUL, (rt_size_t *)mmu_table, 0); @@ -111,7 +117,6 @@ int arch_user_space_init(struct rt_lwp *lwp) return 0; } -//该函数负责返回内核页表指针 void *arch_kernel_mmu_table_get(void) { return (void *)((char *)MMUTable); diff --git a/components/lwp/arch/risc-v/rv64/lwp_arch.h b/components/lwp/arch/risc-v/rv64/lwp_arch.h index 659e936341..39e7671686 100644 --- a/components/lwp/arch/risc-v/rv64/lwp_arch.h +++ b/components/lwp/arch/risc-v/rv64/lwp_arch.h @@ -36,6 +36,8 @@ void *arch_kernel_mmu_table_get(void); void arch_kuser_init(rt_mmu_info *mmu_info, void *vectors); int arch_expand_user_stack(void *addr); +rt_mmu_info* arch_kernel_get_mmu_info(void); + rt_inline unsigned long ffz(unsigned long x) { return __builtin_ffs(~x) - 1; -- Gitee