MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / check_vaddr

Function check_vaddr

libcpu/mips/gs264/mmu.c:323–356  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

321
322#ifdef RT_USING_SMART
323static int check_vaddr(rt_mmu_info *mmu_info, void *va, int pages)
324{
325 size_t loop_va = (size_t)va & ~ARCH_PAGE_MASK;
326 size_t l1_off, l2_off;
327 size_t *mmu_l1, *mmu_l2;
328
329 if (!pages)
330 {
331 return -1;
332 }
333
334 if (!mmu_info)
335 {
336 return -1;
337 }
338
339 while (pages--)
340 {
341 l1_off = (loop_va >> ARCH_SECTION_SHIFT);
342 l2_off = ((loop_va & ARCH_SECTION_MASK) >> ARCH_PAGE_SHIFT);
343 mmu_l1 = (size_t*)mmu_info->vtable + l1_off;
344
345 if (*mmu_l1 & ARCH_MMU_USED_MASK)
346 {
347 mmu_l2 = (size_t *)((*mmu_l1 & ~ARCH_PAGE_TBL_MASK) - mmu_info->pv_off);
348 if (*(mmu_l2 + l2_off) & ARCH_MMU_USED_MASK)
349 {
350 return -1;
351 }
352 }
353 loop_va += ARCH_PAGE_SIZE;
354 }
355 return 0;
356}
357#endif
358
359static void __rt_hw_mmu_unmap(rt_mmu_info *mmu_info, void* v_addr, size_t npages)

Callers 2

_rt_hw_mmu_mapFunction · 0.85
_rt_hw_mmu_map_autoFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected