aboutsummaryrefslogtreecommitdiff
path: root/sys/vm
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-03-17 20:59:31 -0400
committerIan Moffett <ian@osmora.org>2024-03-17 20:59:31 -0400
commit0776264c266e7c1619b8b8b84d2da5384979bb3c (patch)
tree80b6ded012336e24c72cc2c16e4c3ce952b7b739 /sys/vm
parent7895aaff402a021a1b04645ca8d251f760e5662e (diff)
parent2896f4126de2ee0fd1bab4b960bfb2213c359f18 (diff)
Merge branch 'user' into dev
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_init.c9
-rw-r--r--sys/vm/vm_map.c6
2 files changed, 13 insertions, 2 deletions
diff --git a/sys/vm/vm_init.c b/sys/vm/vm_init.c
index f15cb0b..6096059 100644
--- a/sys/vm/vm_init.c
+++ b/sys/vm/vm_init.c
@@ -59,6 +59,15 @@ vm_get_ctx(void)
return &bsp_vm_ctx;
}
+/*
+ * Return the kernel VAS.
+ */
+struct vas
+vm_get_kvas(void)
+{
+ return kernel_vas;
+}
+
void
vm_init(void)
{
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 0d27738..f65bad2 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -78,12 +78,13 @@ int
vm_map_create(struct vas vas, vaddr_t va, paddr_t pa, vm_prot_t prot, size_t bytes)
{
size_t granule = vm_get_page_size();
+ size_t misalign = va & (granule - 1);
int s;
struct vm_ctx *ctx = vm_get_ctx();
/* We want bytes to be aligned by the granule */
- bytes = __ALIGN_UP(bytes, granule);
+ bytes = __ALIGN_UP(bytes + misalign, granule);
/* Align VA/PA by granule */
va = __ALIGN_DOWN(va, granule);
@@ -115,10 +116,11 @@ vm_map_destroy(struct vas vas, vaddr_t va, size_t bytes)
{
struct vm_ctx *ctx = vm_get_ctx();
size_t granule = vm_get_page_size();
+ size_t misalign = va & (granule - 1);
int s;
/* We want bytes to be aligned by the granule */
- bytes = __ALIGN_UP(bytes, granule);
+ bytes = __ALIGN_UP(bytes + misalign, granule);
/* Align VA by granule */
va = __ALIGN_DOWN(va, granule);