|
@@ -94,14 +94,12 @@ void mmu_set_pagetable(rt_ubase_t addr);
|
|
|
void mmu_enable_user_page_access();
|
|
|
void mmu_disable_user_page_access();
|
|
|
|
|
|
-enum rt_hw_mmu_prot_t {
|
|
|
- RT_HW_MMU_PROT_READ,
|
|
|
- RT_HW_MMU_PROT_WRITE,
|
|
|
- RT_HW_MMU_PROT_EXECUTE,
|
|
|
- RT_HW_MMU_PROT_KERNEL,
|
|
|
- RT_HW_MMU_PROT_USER,
|
|
|
- RT_HW_MMU_PROT_CACHE,
|
|
|
-};
|
|
|
+#define RT_HW_MMU_PROT_READ 1
|
|
|
+#define RT_HW_MMU_PROT_WRITE 2
|
|
|
+#define RT_HW_MMU_PROT_EXECUTE 4
|
|
|
+#define RT_HW_MMU_PROT_KERNEL 8
|
|
|
+#define RT_HW_MMU_PROT_USER 16
|
|
|
+#define RT_HW_MMU_PROT_CACHE 32
|
|
|
|
|
|
/**
|
|
|
* @brief Remove permission from attribution
|
|
@@ -110,13 +108,14 @@ enum rt_hw_mmu_prot_t {
|
|
|
* @param prot protect that will be removed
|
|
|
* @return size_t returned attribution
|
|
|
*/
|
|
|
-rt_inline size_t rt_hw_mmu_attr_rm_perm(size_t attr, enum rt_hw_mmu_prot_t prot)
|
|
|
+rt_inline size_t rt_hw_mmu_attr_rm_perm(size_t attr, rt_base_t prot)
|
|
|
{
|
|
|
switch (prot)
|
|
|
{
|
|
|
/* remove write permission for user */
|
|
|
case RT_HW_MMU_PROT_WRITE | RT_HW_MMU_PROT_USER:
|
|
|
attr &= ~PTE_W;
|
|
|
+ break;
|
|
|
default:
|
|
|
RT_ASSERT(0);
|
|
|
}
|
|
@@ -130,13 +129,14 @@ rt_inline size_t rt_hw_mmu_attr_rm_perm(size_t attr, enum rt_hw_mmu_prot_t prot)
|
|
|
* @param prot protect that will be added
|
|
|
* @return size_t returned attribution
|
|
|
*/
|
|
|
-rt_inline size_t rt_hw_mmu_attr_add_perm(size_t attr, enum rt_hw_mmu_prot_t prot)
|
|
|
+rt_inline size_t rt_hw_mmu_attr_add_perm(size_t attr, rt_base_t prot)
|
|
|
{
|
|
|
switch (prot)
|
|
|
{
|
|
|
/* add write permission for user */
|
|
|
case RT_HW_MMU_PROT_WRITE | RT_HW_MMU_PROT_USER:
|
|
|
attr |= PTE_W;
|
|
|
+ break;
|
|
|
default:
|
|
|
RT_ASSERT(0);
|
|
|
}
|
|
@@ -150,7 +150,7 @@ rt_inline size_t rt_hw_mmu_attr_add_perm(size_t attr, enum rt_hw_mmu_prot_t prot
|
|
|
* @param prot protect that will be test
|
|
|
* @return rt_bool_t RT_TRUE if the prot is allowed, otherwise RT_FALSE
|
|
|
*/
|
|
|
-rt_inline rt_bool_t rt_hw_mmu_attr_test_perm(size_t attr, enum rt_hw_mmu_prot_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;
|
|
|
switch (prot)
|
|
@@ -158,6 +158,7 @@ rt_inline rt_bool_t rt_hw_mmu_attr_test_perm(size_t attr, enum rt_hw_mmu_prot_t
|
|
|
/* test write permission for user */
|
|
|
case RT_HW_MMU_PROT_WRITE | RT_HW_MMU_PROT_USER:
|
|
|
rc = !!(attr & PTE_W);
|
|
|
+ break;
|
|
|
default:
|
|
|
RT_ASSERT(0);
|
|
|
}
|