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
Timer re-worked!
[lunaix-os.git]
/
lunaix-os
/
includes
/
lunaix
/
mm
/
page.h
diff --git
a/lunaix-os/includes/lunaix/mm/page.h
b/lunaix-os/includes/lunaix/mm/page.h
index e97de1d80b41cab1660ee0e2b886666fb195d5c5..415ea9e09847c1d4177c0f2d8eadd9b328820880 100644
(file)
--- a/
lunaix-os/includes/lunaix/mm/page.h
+++ b/
lunaix-os/includes/lunaix/mm/page.h
@@
-1,15
+1,18
@@
#ifndef __LUNAIX_PAGE_H
#define __LUNAIX_PAGE_H
#include <stdint.h>
#ifndef __LUNAIX_PAGE_H
#define __LUNAIX_PAGE_H
#include <stdint.h>
-#include <lunaix/co
nstants
.h>
+#include <lunaix/co
mmon
.h>
-#define PG_SIZE_BITS 12
+#define PG_SIZE_BITS 12
+#define PG_SIZE (1 << PG_SIZE_BITS)
#define PG_INDEX_BITS 10
#define PG_MAX_ENTRIES 1024U
#define PG_LAST_TABLE PG_MAX_ENTRIES - 1
#define PG_FIRST_TABLE 0
#define PG_INDEX_BITS 10
#define PG_MAX_ENTRIES 1024U
#define PG_LAST_TABLE PG_MAX_ENTRIES - 1
#define PG_FIRST_TABLE 0
+#define PTE_NULL 0
+
#define P2V(paddr) ((uintptr_t)(paddr) + HIGHER_HLF_BASE)
#define V2P(vaddr) ((uintptr_t)(vaddr) - HIGHER_HLF_BASE)
#define P2V(paddr) ((uintptr_t)(paddr) + HIGHER_HLF_BASE)
#define V2P(vaddr) ((uintptr_t)(vaddr) - HIGHER_HLF_BASE)
@@
-43,6
+46,9
@@
#define PG_ENTRY_FLAGS(entry) (entry & 0xFFFU)
#define PG_ENTRY_ADDR(entry) (entry & ~0xFFFU)
#define PG_ENTRY_FLAGS(entry) (entry & 0xFFFU)
#define PG_ENTRY_ADDR(entry) (entry & ~0xFFFU)
+#define HAS_FLAGS(entry, flags) ((PG_ENTRY_FLAGS(entry) & (flags)) == flags)
+#define CONTAINS_FLAGS(entry, flags) (PG_ENTRY_FLAGS(entry) & (flags))
+
#define PG_PREM_R PG_PRESENT
#define PG_PREM_RW PG_PRESENT | PG_WRITE
#define PG_PREM_UR PG_PRESENT | PG_ALLOW_USER
#define PG_PREM_R PG_PRESENT
#define PG_PREM_RW PG_PRESENT | PG_WRITE
#define PG_PREM_UR PG_PRESENT | PG_ALLOW_USER
@@
-78,5
+84,12
@@
typedef struct {
uint16_t flags;
} v_mapping;
uint16_t flags;
} v_mapping;
+typedef uint32_t x86_pte_t;
+typedef struct
+{
+ x86_pte_t entry[PG_MAX_ENTRIES];
+} __attribute__((packed)) x86_page_table;
+
+
#endif /* __LUNAIX_PAGE_H */
#endif /* __LUNAIX_PAGE_H */