vm: add memblock support to vm_virt_to_phys, add vm_phys_to_virt
This commit is contained in:
@@ -201,6 +201,7 @@ extern kern_status_t vm_bootstrap(const vm_zone_descriptor_t *zones, size_t nr_z
|
|||||||
extern vm_pg_data_t *vm_pg_data_get(vm_node_id_t node);
|
extern vm_pg_data_t *vm_pg_data_get(vm_node_id_t node);
|
||||||
|
|
||||||
extern phys_addr_t vm_virt_to_phys(void *p);
|
extern phys_addr_t vm_virt_to_phys(void *p);
|
||||||
|
extern void *vm_phys_to_virt(phys_addr_t p);
|
||||||
|
|
||||||
extern void vm_page_init_array();
|
extern void vm_page_init_array();
|
||||||
extern vm_page_t *vm_page_get(phys_addr_t addr);
|
extern vm_page_t *vm_page_get(phys_addr_t addr);
|
||||||
|
|||||||
13
vm/page.c
13
vm/page.c
@@ -49,10 +49,23 @@ void tmp_set_vaddr_base(void *p, size_t len)
|
|||||||
|
|
||||||
phys_addr_t vm_virt_to_phys(void *p)
|
phys_addr_t vm_virt_to_phys(void *p)
|
||||||
{
|
{
|
||||||
|
if ((uintptr_t)p >= memblock.m_alloc_start && (uintptr_t)p < memblock.m_alloc_end) {
|
||||||
|
return memblock_virt_to_phys(p);
|
||||||
|
}
|
||||||
|
|
||||||
phys_addr_t x = (phys_addr_t)p - (phys_addr_t)tmp_vaddr_base;
|
phys_addr_t x = (phys_addr_t)p - (phys_addr_t)tmp_vaddr_base;
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *vm_phys_to_virt(phys_addr_t p)
|
||||||
|
{
|
||||||
|
if (p >= (memblock.m_alloc_start - memblock.m_voffset) && p < (memblock.m_alloc_end - memblock.m_voffset)) {
|
||||||
|
return memblock_phys_to_virt(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void vm_page_init_array()
|
void vm_page_init_array()
|
||||||
{
|
{
|
||||||
size_t pmem_size = 0;
|
size_t pmem_size = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user