[libcpu/c906]与virt同步 (#9095)
This commit is contained in:
parent
e390290482
commit
b09a9784f9
|
@ -131,6 +131,12 @@ rt_inline size_t rt_hw_mmu_attr_rm_perm(size_t attr, rt_base_t prot)
|
||||||
{
|
{
|
||||||
/* remove write permission for user */
|
/* remove write permission for user */
|
||||||
case RT_HW_MMU_PROT_WRITE | RT_HW_MMU_PROT_USER:
|
case RT_HW_MMU_PROT_WRITE | RT_HW_MMU_PROT_USER:
|
||||||
|
attr &= ~PTE_W;
|
||||||
|
break;
|
||||||
|
/* remove write permission for kernel */
|
||||||
|
case RT_HW_MMU_PROT_WRITE | RT_HW_MMU_PROT_KERNEL:
|
||||||
|
attr &= ~PTE_W;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
RT_ASSERT(0);
|
RT_ASSERT(0);
|
||||||
}
|
}
|
||||||
|
@ -150,6 +156,8 @@ rt_inline size_t rt_hw_mmu_attr_add_perm(size_t attr, rt_base_t prot)
|
||||||
{
|
{
|
||||||
/* add write permission for user */
|
/* add write permission for user */
|
||||||
case RT_HW_MMU_PROT_WRITE | RT_HW_MMU_PROT_USER:
|
case RT_HW_MMU_PROT_WRITE | RT_HW_MMU_PROT_USER:
|
||||||
|
attr |= (PTE_R | PTE_W | PTE_U);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
RT_ASSERT(0);
|
RT_ASSERT(0);
|
||||||
}
|
}
|
||||||
|
@ -166,13 +174,26 @@ rt_inline size_t rt_hw_mmu_attr_add_perm(size_t attr, rt_base_t prot)
|
||||||
rt_inline rt_bool_t rt_hw_mmu_attr_test_perm(size_t attr, rt_base_t prot)
|
rt_inline rt_bool_t rt_hw_mmu_attr_test_perm(size_t attr, rt_base_t prot)
|
||||||
{
|
{
|
||||||
rt_bool_t rc = 0;
|
rt_bool_t rc = 0;
|
||||||
switch (prot)
|
switch (prot & ~RT_HW_MMU_PROT_USER)
|
||||||
{
|
{
|
||||||
/* test write permission for user */
|
/* test write permission for user */
|
||||||
case RT_HW_MMU_PROT_WRITE | RT_HW_MMU_PROT_USER:
|
case RT_HW_MMU_PROT_WRITE:
|
||||||
|
rc = ((attr & PTE_W) && (attr & PTE_R));
|
||||||
|
break;
|
||||||
|
case RT_HW_MMU_PROT_READ:
|
||||||
|
rc = !!(attr & PTE_R);
|
||||||
|
break;
|
||||||
|
case RT_HW_MMU_PROT_EXECUTE:
|
||||||
|
rc = !!(attr & PTE_X);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
RT_ASSERT(0);
|
RT_ASSERT(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rc && (prot & RT_HW_MMU_PROT_USER))
|
||||||
|
{
|
||||||
|
rc = !!(attr & PTE_U);
|
||||||
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue