x86_64: initialise vm subsystem

This commit is contained in:
2023-02-07 16:00:45 +00:00
parent 9879bbf646
commit b13907f3bc

View File

@@ -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;
} }