diff --git a/sandbox/base/memory_test.c b/sandbox/base/memory_test.c index f152829..e5812fe 100644 --- a/sandbox/base/memory_test.c +++ b/sandbox/base/memory_test.c @@ -41,6 +41,8 @@ static struct mem_map_region mem_map[] = { { .base = 0x00800000, .limit = MB_TO_BYTES(MEMORY_SIZE_MB) - 1, .status = REGION_FREE }, }; +extern void tmp_set_vaddr_base(void *); + /* virtual address of where system memory is mapped */ static void *system_memory = NULL; @@ -108,6 +110,7 @@ int memory_test(void) } } + tmp_set_vaddr_base(system_memory); memblock_add(pmem_base, pmem_limit + 1); for (size_t i = 0; i < nr_mem_map_entries; i++) { diff --git a/sandbox/vm/page.c b/sandbox/vm/page.c index 51ba4cf..8caf2e8 100644 --- a/sandbox/vm/page.c +++ b/sandbox/vm/page.c @@ -39,6 +39,13 @@ static size_t page_order_bytes[] = { #endif }; +/* temporary */ +static void *tmp_vaddr_base = NULL; +void tmp_set_vaddr_base(void *p) +{ + tmp_vaddr_base = p; +} + void vm_page_init_array() { size_t pmem_size = 0; @@ -90,8 +97,7 @@ phys_addr_t vm_page_get_paddr(vm_page_t *pg) void *vm_page_get_vaddr(vm_page_t *pg) { - /* TODO */ - return NULL; + return (void *)((char *)tmp_vaddr_base + (vm_page_get_pfn(pg) * VM_PAGE_SIZE)); } size_t vm_page_get_pfn(vm_page_t *pg) @@ -148,7 +154,7 @@ vm_zone_t *vm_page_get_zone(vm_page_t *pg) if (pg->p_zone >= VM_MAX_ZONES) { return NULL; } - + return &node->pg_zones[pg->p_zone]; } @@ -176,7 +182,7 @@ vm_page_t *vm_page_alloc(vm_page_order_t order, vm_flags_t flags) zone_id--; } - + return NULL; } @@ -216,7 +222,7 @@ int vm_page_split(vm_page_t *pg, vm_page_t **a, vm_page_t **b) *a = pg; *b = buddy; - + return 0; } @@ -258,7 +264,7 @@ vm_page_t *vm_page_merge(vm_page_t *a, vm_page_t *b) } a->p_flags |= VM_PAGE_HEAD; - + return a; }