From b5d9da88991592d35d39dcae3829d2498b4e47e4 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Wed, 3 Dec 2014 22:54:35 +0100 Subject: increased logger grnaularity and working on memory management --- kernel/vmem.h | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'kernel/vmem.h') 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(); -- cgit v1.2.3