diff options
Diffstat (limited to 'kernel/vmem.h')
| -rw-r--r-- | kernel/vmem.h | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/kernel/vmem.h b/kernel/vmem.h index 5d35a30..7c7ffd0 100644 --- a/kernel/vmem.h +++ b/kernel/vmem.h @@ -1 +1,37 @@ -void vmem_init(); +//! i86 architecture defines 1024 entries per table--do not change +#define PAGES_PER_TABLE 1024 +#define PAGES_PER_DIR 1024 + +#define PAGE_DIRECTORY_INDEX(x) (((x) >> 22) & 0x3ff) +#define PAGE_TABLE_INDEX(x) (((x) >> 12) & 0x3ff) +#define PAGE_GET_PHYSICAL_ADDRESS(x) (*x & ~0xfff) + +//! page table represents 4mb address space +#define PTABLE_ADDR_SPACE_SIZE 0x400000 + +//! directory table represents 4gb address space +#define DTABLE_ADDR_SPACE_SIZE 0x100000000 + +//! page sizes are 4k +#define PAGE_SIZE 4096 + +//! page table entry +typedef uint32_t pt_entry; + +//! a page directery entry +typedef uint32_t pd_entry; + + +//! page table +typedef struct ptable_struct { + + pt_entry m_entries[PAGES_PER_TABLE]; +}ptable ; + +//! page directory +typedef struct pdirectory_struct { + + pd_entry m_entries[PAGES_PER_DIR]; +}pdirectory; + +pdirectory* vmem_init(); |
