From 717556178c2017e374ee1108e6b25a24507a1dde Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Thu, 29 Apr 2021 17:36:41 +0200 Subject: Update paging system --- src/core/paging.hpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src/core/paging.hpp') 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 -- cgit v1.2.3