summaryrefslogtreecommitdiff
path: root/lume-legacy/include/kernel/mm.h
diff options
context:
space:
mode:
Diffstat (limited to 'lume-legacy/include/kernel/mm.h')
-rw-r--r--lume-legacy/include/kernel/mm.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/lume-legacy/include/kernel/mm.h b/lume-legacy/include/kernel/mm.h
new file mode 100644
index 0000000..e3de09a
--- /dev/null
+++ b/lume-legacy/include/kernel/mm.h
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2026 Richard QIn
+ */
+
+#pragma once
+#include "common/types.h"
+
+namespace VM
+{
+ extern uint64 *kernel_pagetable;
+
+ void kvminit();
+ void kvminithart();
+
+ uint64 *uvmcreate();
+ void uvminit(uint64 *pagetable, uchar *src, uint64 sz);
+ uint64 uvmalloc(uint64 *pagetable, uint64 oldsz, uint64 newsz, int xperm);
+ uint64 uvmdealloc(uint64 *pagetable, uint64 oldsz, uint64 newsz);
+ void uvmfree(uint64 *pagetable, uint64 sz);
+ int uvmcopy(uint64 *oldpt, uint64 *newpt, uint64 sz);
+ void uvmunmap(uint64 *pagetable, uint64 va, uint64 npages, int do_free);
+
+ int copyout(uint64 *pagetable, uint64 dstva, char *src, uint64 len);
+ int copyin(uint64 *pagetable, char *dst, uint64 srcva, uint64 len);
+ int copyinstr(uint64 *pagetable, char *dst, uint64 srcva, uint64 max);
+
+ int handle_cow_fault(uint64 *pagetable, uint64 va);
+ int mappages(uint64 *pagetable, uint64 va, uint64 size, uint64 pa, int perm);
+
+ uint64 walkaddr(uint64 *pagetable, uint64 va);
+} \ No newline at end of file