git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Unifying the Lunaix's Physical Memory Model (#28)
[lunaix-os.git]
/
lunaix-os
/
includes
/
lunaix
/
mm
/
pagetable.h
diff --git
a/lunaix-os/includes/lunaix/mm/pagetable.h
b/lunaix-os/includes/lunaix/mm/pagetable.h
index 4c2fce52c5b904b5c08bedfc94f8d6e27c773825..f289b7a67dd9bd42917baf1e284626e4684d1a07 100644
(file)
--- a/
lunaix-os/includes/lunaix/mm/pagetable.h
+++ b/
lunaix-os/includes/lunaix/mm/pagetable.h
@@
-134,8
+134,8
@@
typedef struct __pte pte_t;
((ptr_t)(ptep) & __p) == __p; \
})
((ptr_t)(ptep) & __p) == __p; \
})
-pte_t
-
vmm_alloc_page(pte_t* ptep, pte_t pte
);
+
extern
pte_t
+
alloc_kpage_at(pte_t* ptep, pte_t pte, int order
);
/**
* @brief Try page walk to the pte pointed by ptep and
/**
* @brief Try page walk to the pte pointed by ptep and
@@
-155,7
+155,7
@@
__alloc_level(pte_t* ptep, pte_t pte, pte_attr_t prot)
}
pte = pte_setprot(pte, prot);
}
pte = pte_setprot(pte, prot);
- return !pte_isnull(
vmm_alloc_page(ptep, pte
));
+ return !pte_isnull(
alloc_kpage_at(ptep, pte, 0
));
}
/**
}
/**
@@
-432,15
+432,25
@@
page_addr(ptr_t pfn) {
}
static inline ptr_t
}
static inline ptr_t
-
va_align
(ptr_t va) {
+
page_aligned
(ptr_t va) {
return va & ~PAGE_MASK;
}
static inline ptr_t
return va & ~PAGE_MASK;
}
static inline ptr_t
-
va_alignup
(ptr_t va) {
+
page_upaligned
(ptr_t va) {
return (va + PAGE_MASK) & ~PAGE_MASK;
}
return (va + PAGE_MASK) & ~PAGE_MASK;
}
+static inline ptr_t
+napot_aligned(ptr_t va, size_t napot_sz) {
+ return va & ~(napot_sz - 1);
+}
+
+static inline ptr_t
+napot_upaligned(ptr_t va, size_t napot_sz) {
+ return (va + napot_sz - 1) & ~(napot_sz - 1);
+}
+
static inline pte_t*
mkptep_va(ptr_t vm_mnt, ptr_t vaddr)
{
static inline pte_t*
mkptep_va(ptr_t vm_mnt, ptr_t vaddr)
{
@@
-504,4
+514,16
@@
pt_last_level(int level)
return level == _PTW_LEVEL - 1;
}
return level == _PTW_LEVEL - 1;
}
+static inline ptr_t
+va_mntpoint(ptr_t va)
+{
+ return _VM_OF(va);
+}
+
+static inline ptr_t
+va_actual(ptr_t va)
+{
+ return page_addr(_VM_OF(va) ^ va);
+}
+
#endif /* __LUNAIX_PAGETABLE_H */
#endif /* __LUNAIX_PAGETABLE_H */