summaryrefslogtreecommitdiff
path: root/kernel/vmem.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-23 00:06:55 +0200
committerMiguel <m.i@gmx.at>2018-09-23 00:06:55 +0200
commite73d89fd48a71a1cff764fc07edd46cb951e9418 (patch)
tree9d71bc8387ac32cfce69df5d3c7d345dc9e59a40 /kernel/vmem.c
parent80f7ccf5f82d8f04f853bde0bdee5b44a5403104 (diff)
struggling with e1000
Diffstat (limited to 'kernel/vmem.c')
-rw-r--r--kernel/vmem.c7
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;
}
+