| 145 | } |
| 146 | |
| 147 | static int _do_named_map(rt_aspace_t aspace, rt_varea_t varea, void *vaddr, |
| 148 | rt_size_t length, rt_size_t offset, rt_size_t attr) |
| 149 | { |
| 150 | LOG_D("%s: va %p length %p", __func__, vaddr, length); |
| 151 | int err = RT_EOK; |
| 152 | |
| 153 | /* it's ensured by caller that (void*)end will not overflow */ |
| 154 | void *phyaddr = (void *)(offset << MM_PAGE_SHIFT); |
| 155 | void *ret; |
| 156 | |
| 157 | attr = _get_effect_attr(aspace, varea); |
| 158 | ret = rt_hw_mmu_map(aspace, vaddr, phyaddr, length, attr); |
| 159 | if (ret == RT_NULL) |
| 160 | { |
| 161 | err = -RT_ERROR; |
| 162 | } |
| 163 | |
| 164 | if (err == RT_EOK) |
| 165 | rt_hw_tlb_invalidate_range(aspace, vaddr, length, ARCH_PAGE_SIZE); |
| 166 | |
| 167 | return err; |
| 168 | } |
| 169 | |
| 170 | rt_inline void _do_page_fault(struct rt_aspace_fault_msg *msg, rt_size_t off, |
| 171 | void *vaddr, rt_mem_obj_t mem_obj, |
no test coverage detected