Просмотр исходного кода

!272 Add arch_kernel_get_mmu_info API for risc-v
Merge pull request !272 from bernard/bernard_rt-smart

bernard 4 лет назад
Родитель
Сommit
4dcd0760fa

+ 1 - 1
components/finsh/msh.c

@@ -11,7 +11,7 @@
  */
 #include <rtthread.h>
 
-#ifdef RT_USING_MSH
+#if defined(RT_USING_MSH) || defined(FINSH_USING_MSH)
 
 #ifndef FINSH_ARG_MAX
 #define FINSH_ARG_MAX    8

+ 1 - 3
components/finsh/shell.c

@@ -22,7 +22,7 @@
 #include <string.h>
 #include <stdio.h>
 
-#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;

+ 8 - 3
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);

+ 2 - 0
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;