diff options
Diffstat (limited to 'kernel/vmem.h')
| -rw-r--r-- | kernel/vmem.h | 38 |
1 files changed, 5 insertions, 33 deletions
diff --git a/kernel/vmem.h b/kernel/vmem.h index 2a8e7cc..4d00c3e 100644 --- a/kernel/vmem.h +++ b/kernel/vmem.h @@ -47,39 +47,11 @@ * */ -//! i86 architecture defines 1024 entries per table--do not change -#define PAGES_PER_TABLE 1024 -#define PAGES_PER_DIR 1024 +#include <stdint.h> -#define PAGE_DIRECTORY_INDEX(x) (((x) >> 22) & 0x3ff) -#define PAGE_TABLE_INDEX(x) (((x) >> 12) & 0x3ff) -#define PAGE_GET_PHYSICAL_ADDRESS(x) (*x & ~0xfff) +struct pdirectory_struct; -//! page table represents 4mb address space -#define PTABLE_ADDR_SPACE_SIZE 0x400000 +struct pdirectory_struct* vmem_init(uint32_t kernel_blocks,uint32_t fb_addr,uint32_t apic_addr, uint32_t ioapic_addr); +void vmem_free_dir(struct pdirectory_struct *dir); +struct pdirectory_struct* vmem_new_space_dir(struct pdirectory_struct *copy_dir,bool stack_only); -//! directory table represents 4gb address space -#define DTABLE_ADDR_SPACE_SIZE 0x100000000 - -//! page sizes are 4kb -#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(uint32_t kernel_blocks,uint32_t fb_addr,uint32_t apic_addr, uint32_t ioapic_addr); -void vmem_free_dir(pdirectory *dir); -pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only); |
