diff options
| author | wangqinglin <[email protected]> | 2023-06-12 19:49:18 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-06-12 19:49:18 +0800 |
| commit | 76d8416e72989e4394fd44c0644e50fe9e5f198a (patch) | |
| tree | 2bb885563b343dba5921905ad04dbb81370d01c4 | |
| parent | edaa0d9c8a53b1f9b0be71e47074f00044906de5 (diff) | |
修复aarch64-qemu启动失败问题 (#7661)
| -rw-r--r-- | libcpu/aarch64/common/mmu.c | 10 | ||||
| -rw-r--r-- | libcpu/aarch64/cortex-a/entry_point.S | 2 |
2 files changed, 6 insertions, 6 deletions
diff --git a/libcpu/aarch64/common/mmu.c b/libcpu/aarch64/common/mmu.c index 19c74390e7..e6a98e4741 100644 --- a/libcpu/aarch64/common/mmu.c +++ b/libcpu/aarch64/common/mmu.c @@ -771,19 +771,19 @@ void rt_hw_mem_setup_early(unsigned long *tbl0, unsigned long *tbl1, unsigned long size, unsigned long pv_off) { int ret; - - /* setup pv off */ - rt_kmem_pvoff_set(pv_off); + unsigned long count = (size + ARCH_SECTION_MASK) >> ARCH_SECTION_SHIFT; + unsigned long normal_attr = MMU_MAP_CUSTOM(MMU_AP_KAUN, NORMAL_MEM); #ifdef RT_USING_SMART unsigned long va = KERNEL_VADDR_START; #else extern unsigned char __start; unsigned long va = (unsigned long) &__start; + va = RT_ALIGN_DOWN(va, 0x200000); #endif - unsigned long count = (size + ARCH_SECTION_MASK) >> ARCH_SECTION_SHIFT; - unsigned long normal_attr = MMU_MAP_CUSTOM(MMU_AP_KAUN, NORMAL_MEM); + /* setup pv off */ + rt_kmem_pvoff_set(pv_off); /* clean the first two pages */ rt_memset((char *)tbl0, 0, ARCH_PAGE_SIZE); diff --git a/libcpu/aarch64/cortex-a/entry_point.S b/libcpu/aarch64/cortex-a/entry_point.S index 611f36da71..9e4adddac7 100644 --- a/libcpu/aarch64/cortex-a/entry_point.S +++ b/libcpu/aarch64/cortex-a/entry_point.S @@ -134,7 +134,7 @@ __start: mov x3,0 #endif - ldr x2, =0x01000000 /* map 16M memory for kernel space */ + ldr x2, =0x10000000 /* map 256M memory for kernel space */ bl rt_hw_mem_setup_early ldr x30, =after_mmu_enable /* set LR to after_mmu_enable function, it's a v_addr */ |
