diff options
Diffstat (limited to 'kernel/vmem.c')
| -rw-r--r-- | kernel/vmem.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/vmem.c b/kernel/vmem.c index 590722d..4f854b6 100644 --- a/kernel/vmem.c +++ b/kernel/vmem.c @@ -26,6 +26,8 @@ //! page sizes are 4kb #define PAGE_SIZE 4096 +uint32_t e1000_addr; + //! page table entry typedef uint32_t pt_entry; @@ -296,6 +298,7 @@ pdirectory* vmem_kernel_dir() pdirectory* dir = vmem_clean_dir(); vmem_add_identity(dir,0,1024*8,false);//identity map first 32 megs... + vmem_add_identity(dir,e1000_addr,32,false);//identity map 32 pages for e1000 vmem_add_remap(dir,fb_addr,VMEM_FRAMEBUFFER,1024*8,false);//32megs should be enough for 4k (think about pitch) vmem_add_remap(dir,local_apic_addr,VMEM_LAPIC,1,false); //apic addr should be at pagestart, right? TODO: check. @@ -417,8 +420,9 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only) return dir; } -void vmem_init(multiboot_information *cfg_multiboot, acpi_information *cfg_acpi) +void vmem_init(multiboot_information *cfg_multiboot, acpi_information *cfg_acpi,uint32_t e1000addr) { + e1000_addr=e1000addr; fixme("do not share fb_addr with syscalls like that!"); fb_addr=cfg_multiboot->framebuffer_addr; local_apic_addr=cfg_acpi->local_apic_address; @@ -427,3 +431,4 @@ void vmem_init(multiboot_information *cfg_multiboot, acpi_information *cfg_acpi) mod_start=mod->mod_start; mod_end=mod->mod_end; } + |
