pmap: change pmap_add* virtual pointer parameter to virt_addr_t
This commit is contained in:
@@ -133,12 +133,11 @@ static void delete_pdir(phys_addr_t pd)
|
||||
|
||||
static kern_status_t do_pmap_add(
|
||||
pmap_t pmap,
|
||||
void *p,
|
||||
virt_addr_t pv,
|
||||
pfn_t pfn,
|
||||
enum vm_prot prot,
|
||||
enum page_size size)
|
||||
{
|
||||
uintptr_t pv = (uintptr_t)p;
|
||||
unsigned int pml4t_index = BAD_INDEX, pdpt_index = BAD_INDEX,
|
||||
pd_index = BAD_INDEX, pt_index = BAD_INDEX;
|
||||
|
||||
@@ -261,11 +260,11 @@ void pmap_bootstrap(void)
|
||||
/* map 2GiB at the end of the address space to
|
||||
replace the mapping created by start_32 and allow access to
|
||||
the kernel and memblock-allocated data. */
|
||||
uintptr_t vbase = VM_KERNEL_VOFFSET;
|
||||
virt_addr_t vbase = VM_KERNEL_VOFFSET;
|
||||
for (size_t i = 0; i < C_2GiB; i += hugepage_sz) {
|
||||
do_pmap_add(
|
||||
kernel_pmap,
|
||||
(void *)(vbase + i),
|
||||
vbase + i,
|
||||
PFN(i),
|
||||
VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXEC
|
||||
| VM_PROT_SVR,
|
||||
@@ -285,7 +284,7 @@ void pmap_bootstrap(void)
|
||||
for (size_t i = 0; i < pmem_limit; i += hugepage_sz) {
|
||||
do_pmap_add(
|
||||
kernel_pmap,
|
||||
(void *)(vbase + i),
|
||||
vbase + i,
|
||||
PFN(i),
|
||||
VM_PROT_READ | VM_PROT_WRITE | VM_PROT_SVR
|
||||
| VM_PROT_NOCACHE,
|
||||
@@ -306,7 +305,7 @@ void pmap_destroy(pmap_t pmap)
|
||||
|
||||
kern_status_t pmap_add(
|
||||
pmap_t pmap,
|
||||
void *p,
|
||||
virt_addr_t p,
|
||||
pfn_t pfn,
|
||||
enum vm_prot prot,
|
||||
enum pmap_flags flags)
|
||||
@@ -321,7 +320,7 @@ kern_status_t pmap_add(
|
||||
|
||||
kern_status_t pmap_add_block(
|
||||
pmap_t pmap,
|
||||
void *p,
|
||||
virt_addr_t p,
|
||||
pfn_t pfn,
|
||||
size_t len,
|
||||
enum vm_prot prot,
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
|
||||
/* all the functions declared in this file are defined in arch/xyz/pmap.c */
|
||||
|
||||
#include <mango/vm.h>
|
||||
#include <mango/status.h>
|
||||
#include <mango/machine/pmap.h>
|
||||
#include <mango/status.h>
|
||||
#include <mango/vm.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define PMAP_INVALID ML_PMAP_INVALID
|
||||
#define PFN(x) ((x) >> VM_PAGE_SHIFT)
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -29,8 +30,19 @@ extern pmap_t pmap_create(void);
|
||||
extern void pmap_destroy(pmap_t pmap);
|
||||
extern void pmap_switch(pmap_t pmap);
|
||||
|
||||
extern kern_status_t pmap_add(pmap_t pmap, void *p, pfn_t pfn, enum vm_prot prot, enum pmap_flags flags);
|
||||
extern kern_status_t pmap_add_block(pmap_t pmap, void *p, pfn_t pfn, size_t len, enum vm_prot prot, enum pmap_flags flags);
|
||||
extern kern_status_t pmap_add(
|
||||
pmap_t pmap,
|
||||
virt_addr_t p,
|
||||
pfn_t pfn,
|
||||
enum vm_prot prot,
|
||||
enum pmap_flags flags);
|
||||
extern kern_status_t pmap_add_block(
|
||||
pmap_t pmap,
|
||||
virt_addr_t p,
|
||||
pfn_t pfn,
|
||||
size_t len,
|
||||
enum vm_prot prot,
|
||||
enum pmap_flags flags);
|
||||
|
||||
extern kern_status_t pmap_remove(pmap_t pmap, void *p);
|
||||
extern kern_status_t pmap_remove_range(pmap_t pmap, void *p, size_t len);
|
||||
|
||||
Reference in New Issue
Block a user