mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-22 03:09:16 +08:00
[rt-smart] PV_OFFSET as a variable (#6904)
* [rt-smart/mem] remove pv_offset * [rt-smart] list kernel space command * [rt-smart] restore ioremap region * [revert] restore kernel space isolation * [rt-smart/pv_off] code format * [rt-smart] add get_pvoff() * [pvoffset] pvoff as constant for C codes * [pvoff] pvoff as interfaces
This commit is contained in:
@@ -309,6 +309,9 @@ void rt_hw_mmu_setup(rt_aspace_t aspace, struct mem_desc *mdesc, int desc_nr)
|
||||
mdesc->vaddr_start + 1,
|
||||
.prefer = (void *)mdesc->vaddr_start};
|
||||
|
||||
if (mdesc->paddr_start == (rt_size_t)ARCH_MAP_FAILED)
|
||||
mdesc->paddr_start = mdesc->vaddr_start + PV_OFFSET;
|
||||
|
||||
rt_aspace_map_phy_static(aspace, &mdesc->varea, &hint, attr,
|
||||
mdesc->paddr_start >> MM_PAGE_SHIFT, &err);
|
||||
mdesc++;
|
||||
@@ -656,10 +659,14 @@ int rt_hw_mmu_control(struct rt_aspace *aspace, void *vaddr, size_t size,
|
||||
return err;
|
||||
}
|
||||
|
||||
void rt_hw_mmu_setup_early(unsigned long *tbl0, unsigned long *tbl1,
|
||||
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 va = KERNEL_VADDR_START;
|
||||
unsigned long count = (size + ARCH_SECTION_MASK) >> ARCH_SECTION_SHIFT;
|
||||
unsigned long normal_attr = MMU_MAP_CUSTOM(MMU_AP_KAUN, NORMAL_MEM);
|
||||
|
||||
@@ -74,7 +74,7 @@ struct mem_desc
|
||||
struct rt_aspace;
|
||||
|
||||
void rt_hw_mmu_ktbl_set(unsigned long tbl);
|
||||
void rt_hw_mmu_setup_early(unsigned long *tbl0, unsigned long *tbl1,
|
||||
void rt_hw_mem_setup_early(unsigned long *tbl0, unsigned long *tbl1,
|
||||
unsigned long size, unsigned long pv_off);
|
||||
void rt_hw_mmu_setup(struct rt_aspace *aspace, struct mem_desc *mdesc,
|
||||
int desc_nr);
|
||||
|
||||
@@ -45,6 +45,7 @@ void check_user_fault(struct rt_hw_exp_stack *regs, uint32_t pc_adj, char *info)
|
||||
#ifdef LWP_USING_CORE_DUMP
|
||||
lwp_core_dump(regs, pc_adj);
|
||||
#endif
|
||||
backtrace((unsigned long)regs->pc, (unsigned long)regs->x30, (unsigned long)regs->x29);
|
||||
sys_exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user