From: Lunaixsky Date: Tue, 14 Jan 2025 13:36:35 +0000 (+0000) Subject: move syscall_nr to generic for sharing between arch impls X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/commitdiff_plain/3d33d9c0d1894c447324d8327200c212ddad3716?ds=sidebyside;hp=72643802c0a85c33b2b6f7b81adf7e032c53a6d7 move syscall_nr to generic for sharing between arch impls fix the include error of arch-listing. move them to generic as fallback add default pool declaration to pmm_arch_init_pool --- 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 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 index 0000000..e69de29 diff --git a/lunaix-os/arch/generic/includes/asm-generic/bits.h b/lunaix-os/arch/generic/includes/asm-generic/bits.h index 430e395..e736f0d 100644 --- a/lunaix-os/arch/generic/includes/asm-generic/bits.h +++ b/lunaix-os/arch/generic/includes/asm-generic/bits.h @@ -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 */ diff --git a/lunaix-os/arch/x86/syscall_nr.inc b/lunaix-os/arch/generic/includes/asm-generic/syscall_nr.inc 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 c30a720..fb7fe24 100644 --- a/lunaix-os/arch/x86/syscall_nr.inc +++ b/lunaix-os/arch/generic/includes/asm-generic/syscall_nr.inc @@ -1,4 +1,6 @@ -#ifdef CONFIG_ARCH_X86_64 +#include + +#ifdef CONFIG_ARCH_BITS_64 # define PTR .8byte # define SIZE 8 #else diff --git a/lunaix-os/arch/generic/vmutils.c b/lunaix-os/arch/generic/vmutils.c index 8fc0d82..ab25524 100644 --- a/lunaix-os/arch/generic/vmutils.c +++ b/lunaix-os/arch/generic/vmutils.c @@ -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; +} diff --git a/lunaix-os/arch/x86/syscall32.S b/lunaix-os/arch/x86/syscall32.S index b8915ed..fd4b4d4 100644 --- a/lunaix-os/arch/x86/syscall32.S +++ b/lunaix-os/arch/x86/syscall32.S @@ -1,6 +1,5 @@ #define __ASM__ -#include -#include "syscall_nr.inc" +#include .section .text .type syscall_hndlr, @function diff --git a/lunaix-os/arch/x86/syscall64.S b/lunaix-os/arch/x86/syscall64.S index 6125a84..e01db2a 100644 --- a/lunaix-os/arch/x86/syscall64.S +++ b/lunaix-os/arch/x86/syscall64.S @@ -1,6 +1,5 @@ #define __ASM__ -#include -#include "syscall_nr.inc" +#include #include "asm/variants/interrupt64.S.inc" .section .text