From b13907f3bcb3cda0f8b5418b79854a9fa4104796 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Tue, 7 Feb 2023 16:00:45 +0000 Subject: [PATCH] x86_64: initialise vm subsystem --- arch/x86_64/init.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/arch/x86_64/init.c b/arch/x86_64/init.c index ebdb374..ed7137e 100644 --- a/arch/x86_64/init.c +++ b/arch/x86_64/init.c @@ -38,7 +38,7 @@ static void early_vm_init(void) int ml_init(uintptr_t arg) { multiboot_info_t *mb = (multiboot_info_t *)arg; - + bootstrap_cpu_init(); vgacon_init(); @@ -50,5 +50,19 @@ int ml_init(uintptr_t arg) 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; }