/* unmap is different from map that it can handle multiple pages  */
void rt_hw_mmu_unmap(struct rt_aspace *aspace, void *v_addr, size_t size)
/* unmap is different from map that it can handle multiple pages  */
void rt_hw_mmu_unmap(struct rt_aspace *aspace, void *v_addr, size_t size)
{
    if (!aspace->page_table)
    {
        return;
    }
    size_t unmapped = 0;
    while (size > 0)
    {
        MM_PGTBL_LOCK(aspace);
        unmapped = _unmap_area(aspace, v_addr, size);
        MM_PGTBL_UNLOCK(aspace);
        if (!unmapped || unmapped > size)
            break;
        size -= unmapped;
        v_addr += unmapped;
    }
}