move syscall_nr to generic for sharing between arch impls
authorLunaixsky <lunaixsky@qq.com>
Tue, 14 Jan 2025 13:36:35 +0000 (13:36 +0000)
committerLunaixsky <lunaixsky@qq.com>
Tue, 14 Jan 2025 13:36:35 +0000 (13:36 +0000)
fix the include error of arch-listing. move them to generic as fallback
add default pool declaration to pmm_arch_init_pool

lunaix-os/arch/generic/includes/arch-listings/devnum.lst [new file with mode: 0644]
lunaix-os/arch/generic/includes/arch-listings/devnum_fn.lst [new file with mode: 0644]
lunaix-os/arch/generic/includes/asm-generic/bits.h
lunaix-os/arch/generic/includes/asm-generic/syscall_nr.inc [moved from lunaix-os/arch/x86/syscall_nr.inc with 96% similarity]
lunaix-os/arch/generic/vmutils.c
lunaix-os/arch/x86/syscall32.S
lunaix-os/arch/x86/syscall64.S

diff --git a/lunaix-os/arch/generic/includes/arch-listings/devnum.lst b/lunaix-os/arch/generic/includes/arch-listings/devnum.lst
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/lunaix-os/arch/generic/includes/arch-listings/devnum_fn.lst b/lunaix-os/arch/generic/includes/arch-listings/devnum_fn.lst
new file mode 100644 (file)
index 0000000..e69de29
index 430e3954669c566d114bfbdfb1475cb5ed1b371d..e736f0dde0db5bc5292b37e08c22703d999cc757 100644 (file)
@@ -2,12 +2,15 @@
 #define __LUNAIX_ARCH_GENERIC_BITS_H
 
 #define _BITS_GENMASK(h, l)     \
-        (((1UL << ((h) + 1)) - 1) ^ ((1UL << (l)) - 1))
+        (((1 << ((h) + 1)) - 1) ^ ((1 << (l)) - 1))
 
 #define _BITS_EXTRACT(from, h, l)     \
-        (((from) & (((1UL << (h + 1)) - 1) ^ ((1UL << l) - 1))) >> l)
+        (((from) & (((1 << (h + 1)) - 1) ^ ((1 << (l)) - 1))) >> (l))
 
 #define _BITS_INSERT(to, from, h, l)    \
-        (((to) & ~_BITS_GENMASK(h, l)) | (((from) << l) & _BITS_GENMASK(h, l)))
+        (((to) & ~_BITS_GENMASK(h, l)) | (((from) << (l)) & _BITS_GENMASK(h, l)))
+
+#define _BITS_STATIC(val, h, l)         \
+        (((val) & _BITS_GENMASK(h, l)) << (l))
 
 #endif /* __LUNAIX_ARCH_BITS_H */
similarity index 96%
rename from lunaix-os/arch/x86/syscall_nr.inc
rename to lunaix-os/arch/generic/includes/asm-generic/syscall_nr.inc
index c30a720180d3019ffd0892e38c7c81ae453d090a..fb7fe245201c829f7f37936a8308dd20f9fcf4ac 100644 (file)
@@ -1,4 +1,6 @@
-#ifdef CONFIG_ARCH_X86_64
+#include <lunaix/syscall.h>
+
+#ifdef CONFIG_ARCH_BITS_64
 #   define PTR     .8byte
 #   define SIZE    8
 #else
index 8fc0d820cab2d72c210fb6b3b18d337e06bbb984..ab25524e85d773bcc5b52461d539114e98bb8eb0 100644 (file)
@@ -10,7 +10,7 @@ dup_leaflet(struct leaflet* leaflet)
 _default void
 pmm_arch_init_pool(struct pmem* memory)
 {
-    fail("unimplemented");
+    pmm_declare_pool(POOL_UNIFIED, 1, memory->list_len);
 }
 
 _default ptr_t
@@ -18,3 +18,22 @@ pmm_arch_init_remap(struct pmem* memory, struct boot_handoff* bctx)
 {
     fail("unimplemented");
 }
+
+_default pte_t
+translate_vmr_prot(unsigned int vmr_prot, pte_t pte)
+{
+    pte = pte_mkuser(pte);
+
+    if ((vmr_prot & PROT_WRITE)) {
+        pte = pte_mkwritable(pte);
+    }
+
+    if ((vmr_prot & PROT_EXEC)) {
+        pte = pte_mkexec(pte);
+    }
+    else {
+        pte = pte_mknexec(pte);
+    }
+
+    return pte;
+}
index b8915ed8a0b165f5e1701c5b650a44d2dcf88d5a..fd4b4d449b2d03b080e752d8b1609277b7beac9d 100644 (file)
@@ -1,6 +1,5 @@
 #define __ASM__
-#include <lunaix/syscall.h>
-#include "syscall_nr.inc"
+#include <asm-generic/syscall_nr.inc>
 
 .section .text
     .type syscall_hndlr, @function
index 6125a84f5252d08d05306756febaa4cae0fe6710..e01db2a957a27b864224e0aa6fde5a89ccc5f5f4 100644 (file)
@@ -1,6 +1,5 @@
 #define __ASM__
-#include <lunaix/syscall.h>
-#include "syscall_nr.inc"
+#include <asm-generic/syscall_nr.inc>
 #include "asm/variants/interrupt64.S.inc"
 
 .section .text