aboutsummaryrefslogtreecommitdiff
path: root/src/core/paging.hpp
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2021-04-29 17:36:41 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2021-04-29 17:36:41 +0200
commit717556178c2017e374ee1108e6b25a24507a1dde (patch)
tree1ff935e5ee866a52ca09384a6ffa58ec334e8ac2 /src/core/paging.hpp
parentf37f5d86b74870e878f69bd41a3c70a59c4ce1c1 (diff)
Update paging system
Diffstat (limited to 'src/core/paging.hpp')
-rw-r--r--src/core/paging.hpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/core/paging.hpp b/src/core/paging.hpp
index 1aae24a..641821f 100644
--- a/src/core/paging.hpp
+++ b/src/core/paging.hpp
@@ -19,23 +19,23 @@
/// @brief Get page address that contain addr
#define PAGE(addr) (addr&(~(0xFFF)))
-#define VIRT(addr) (addr+kvar_kernel_vma)
+#define VIRT(addr) ((u64*)(((u64)addr)+kvar_kernel_vma))
/// @brief Mapping facilities
-#define PAGE_ID_MAP(addr) paging_allocate_addr(kpages[0],(u64)(addr),(u64)(addr),PAGING_OPT_P|PAGING_OPT_RW)
+#define PAGE_ID_MAP(addr) paging_allocate_addr(kpages[0],(u64)(addr),(u64)(addr),PAGING_OPT_P|PAGING_OPT_RW,1)
#define PAGE_ID_RMAP(addr, n) { \
for(u64 i=0;i<(n);i+=4096){ \
- paging_allocate_addr(kpages[0],((u64)(addr))+i,((u64)(addr))+i,PAGING_OPT_P|PAGING_OPT_RW); \
+ paging_allocate_addr(kpages[0],((u64)(addr))+i,((u64)(addr))+i,PAGING_OPT_P|PAGING_OPT_RW,1); \
}}
-#define PAGE_MAP(addr) paging_allocate_addr(kpages[0],(u64)((addr)+kvar_kernel_vma),(u64)(addr),PAGING_OPT_P|PAGING_OPT_RW)
+#define PAGE_MAP(addr) paging_allocate_addr(kpages[0],(u64)((addr)+kvar_kernel_vma),(u64)(addr),PAGING_OPT_P|PAGING_OPT_RW,1)
#define PAGE_RMAP(addr, n) { \
for(u64 i=0;i<(n);i+=4096){ \
- paging_allocate_addr(kpages[0],(((u64)(addr))+kvar_kernel_vma)+i,((u64)(addr))+i,PAGING_OPT_P|PAGING_OPT_RW); \
+ paging_allocate_addr(kpages[0],(((u64)(addr))+kvar_kernel_vma)+i,((u64)(addr))+i,PAGING_OPT_P|PAGING_OPT_RW,1); \
}}
-#define PAGE_MAP_PHY(addr,phy) paging_allocate_addr(kpages[0],(u64)((addr)+kvar_kernel_vma),(u64)(phy),PAGING_OPT_P|PAGING_OPT_RW)
+#define PAGE_MAP_PHY(addr,phy) paging_allocate_addr(kpages[0],(u64)((addr)+kvar_kernel_vma),(u64)(phy),PAGING_OPT_P|PAGING_OPT_RW,1)
#define PAGE_RMAP_PHY(addr,phy, n) { \
for(u64 i=0;i<(n);i+=4096){ \
- paging_allocate_addr(kpages[0],(((u64)(addr))+kvar_kernel_vma)+i,((u64)(phy))+i,PAGING_OPT_P|PAGING_OPT_RW); \
+ paging_allocate_addr(kpages[0],(((u64)(addr))+kvar_kernel_vma)+i,((u64)(phy))+i,PAGING_OPT_P|PAGING_OPT_RW,1); \
}}
/// @brief All PAE table structures are allocated here
@@ -80,4 +80,7 @@ void paging_deallocate_table(u64* table);
* Map virtual page associated to virt
* to the physical page associated with phy
*/
-void paging_allocate_addr(u64* pml4_table,u64 virt, u64 phy, u16 options);
+void paging_allocate_addr(u64* pml4_table,u64 virt, u64 phy, u16 options, char useKernelTables);
+
+
+u64* paging_create_task(int npages); \ No newline at end of file