Map HULK virtual address space
This commit is contained in:
parent
f27851def9
commit
6beb7da4cd
@ -9,6 +9,8 @@ import hos.memory;
|
|||||||
__gshared EFI_SYSTEM_TABLE * st;
|
__gshared EFI_SYSTEM_TABLE * st;
|
||||||
__gshared BootInfo bootinfo;
|
__gshared BootInfo bootinfo;
|
||||||
__gshared UINTN memory_map_key;
|
__gshared UINTN memory_map_key;
|
||||||
|
extern extern(C) __gshared ubyte hulk_start;
|
||||||
|
extern extern(C) __gshared ubyte hulk_end;
|
||||||
|
|
||||||
private void wait_key()
|
private void wait_key()
|
||||||
{
|
{
|
||||||
@ -160,6 +162,18 @@ private void map(ulong source_page, ulong dest_page, PageTableEntry * pt_base)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void map_hulk(PageTableEntry * pt_base)
|
||||||
|
{
|
||||||
|
ulong virt = HULK_VIRTUAL_START;
|
||||||
|
ulong phys = cast(ulong)&hulk_start;
|
||||||
|
while (phys < cast(ulong)&hulk_end)
|
||||||
|
{
|
||||||
|
map(virt, phys, pt_base);
|
||||||
|
virt += 4096u;
|
||||||
|
phys += 4096u;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void build_page_tables()
|
private void build_page_tables()
|
||||||
{
|
{
|
||||||
PageTableEntry * pt_base = new_page_table();
|
PageTableEntry * pt_base = new_page_table();
|
||||||
@ -173,6 +187,7 @@ private void build_page_tables()
|
|||||||
map(page_addr, page_addr, pt_base);
|
map(page_addr, page_addr, pt_base);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
map_hulk(pt_base);
|
||||||
write_cr3(cast(ulong)pt_base);
|
write_cr3(cast(ulong)pt_base);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user