x86_64: initialise vm subsystem
This commit is contained in:
@@ -38,7 +38,7 @@ static void early_vm_init(void)
|
|||||||
int ml_init(uintptr_t arg)
|
int ml_init(uintptr_t arg)
|
||||||
{
|
{
|
||||||
multiboot_info_t *mb = (multiboot_info_t *)arg;
|
multiboot_info_t *mb = (multiboot_info_t *)arg;
|
||||||
|
|
||||||
bootstrap_cpu_init();
|
bootstrap_cpu_init();
|
||||||
vgacon_init();
|
vgacon_init();
|
||||||
|
|
||||||
@@ -50,5 +50,19 @@ int ml_init(uintptr_t arg)
|
|||||||
|
|
||||||
pmap_bootstrap();
|
pmap_bootstrap();
|
||||||
|
|
||||||
|
vm_zone_descriptor_t vm_zones[] = {
|
||||||
|
{ .zd_id = VM_ZONE_DMA, .zd_node = 0, .zd_name = "dma", .zd_base = 0x00, .zd_limit = 0xffffff },
|
||||||
|
{ .zd_id = VM_ZONE_NORMAL, .zd_node = 0, .zd_name = "normal", .zd_base = 0x1000000, .zd_limit = UINTPTR_MAX },
|
||||||
|
};
|
||||||
|
|
||||||
|
vm_bootstrap(vm_zones, sizeof vm_zones / sizeof vm_zones[0]);
|
||||||
|
|
||||||
|
/* test allocation */
|
||||||
|
vm_page_t *p = vm_page_alloc(VM_PAGE_16K, 0);
|
||||||
|
void *p_ptr = vm_page_get_vaddr(p);
|
||||||
|
memset(p_ptr, 0x00, vm_page_order_to_bytes(VM_PAGE_16K));
|
||||||
|
|
||||||
|
printk("allocated 16K at %p", p_ptr);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user