From 4afdeade47b4295e49b9d65ae26fa218e2fd81dd Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Wed, 8 Oct 2025 21:50:05 +0200 Subject: feat: libSystem: new version of libSystem. --- dev/libSystem/src/JailCalls.cc | 17 +++++++ dev/libSystem/src/Makefile | 6 +-- dev/libSystem/src/SystemCalls.cc | 7 --- dev/libSystem/src/SystemCallsABI+AMD64.asm | 81 ++++++++++++++++++++++++++++++ dev/libSystem/src/SystemProc.asm | 81 ------------------------------ dev/libSystem/src/VerifyCalls.cc | 17 +++++++ 6 files changed, 118 insertions(+), 91 deletions(-) create mode 100644 dev/libSystem/src/JailCalls.cc create mode 100644 dev/libSystem/src/SystemCallsABI+AMD64.asm delete mode 100644 dev/libSystem/src/SystemProc.asm create mode 100644 dev/libSystem/src/VerifyCalls.cc diff --git a/dev/libSystem/src/JailCalls.cc b/dev/libSystem/src/JailCalls.cc new file mode 100644 index 00000000..32192a13 --- /dev/null +++ b/dev/libSystem/src/JailCalls.cc @@ -0,0 +1,17 @@ +/* ------------------------------------------- + + Copyright (C) 2025, Amlal El Mahrouss, all rights reserved. + +------------------------------------------- */ + +#include +#include +#include +#include +#include + +using namespace LibSystem; + +IMPORT_C struct JAIL* JailGetCurrent(Void) { + (struct JAIL*)libsys_syscall_arg_1(SYSCALL_HASH("JailGetCurrent")); +} \ No newline at end of file diff --git a/dev/libSystem/src/Makefile b/dev/libSystem/src/Makefile index 64ef02cc..ea8e9905 100644 --- a/dev/libSystem/src/Makefile +++ b/dev/libSystem/src/Makefile @@ -1,5 +1,5 @@ ################################################## -# (c) Amlal El Mahrouss, all rights reserved. +# (c) Amlal El Mahrouss and NeKernel contributors, all rights reserved. # This file is for libSystem.dll's syscall stubs. ################################################## @@ -8,9 +8,9 @@ FLAGS=-f win64 .PHONY: error error: - @echo "==> Invalid rule." + @echo "==> Invalid recipe." @echo "==> Use libsys_asm_io_ instead." .PHONY: libsys_asm_io_x64 libsys_asm_io_x64: - $(ASM) $(FLAGS) SystemProc.asm -o SystemProc.stub.obj + $(ASM) $(FLAGS) SystemCallsABI+AMD64.asm -o SystemCallsABI+AMD64.stub.obj diff --git a/dev/libSystem/src/SystemCalls.cc b/dev/libSystem/src/SystemCalls.cc index 571a99a6..3db9368d 100644 --- a/dev/libSystem/src/SystemCalls.cc +++ b/dev/libSystem/src/SystemCalls.cc @@ -11,13 +11,6 @@ using namespace LibSystem; -IMPORT_C Void _rtl_assert(Bool expr, const Char* origin) { - if (!expr) { - PrintOut(nullptr, "Assertion failed: %s\r", origin); - libsys_syscall_arg_1(SYSCALL_HASH("_rtl_debug_break")); - } -} - /// @note this uses the FNV 64-bit variant. IMPORT_C UInt64 libsys_hash_64(const Char* path) { if (!path || *path == 0) return 0; diff --git a/dev/libSystem/src/SystemCallsABI+AMD64.asm b/dev/libSystem/src/SystemCallsABI+AMD64.asm new file mode 100644 index 00000000..da19f41f --- /dev/null +++ b/dev/libSystem/src/SystemCallsABI+AMD64.asm @@ -0,0 +1,81 @@ +;; /* +;; * ======================================================== +;; * +;; * libSystem/src/SystemCallsABI+AMD64.asm +;; * Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. +;; * +;; * ======================================================== +;; */ + +[bits 64] + +section .text + +global libsys_syscall_arg_1 +global libsys_syscall_arg_2 +global libsys_syscall_arg_3 +global libsys_syscall_arg_4 + +libsys_syscall_arg_1: + push rbp + mov rbp, rsp + + mov r8, rcx + + xor rax, rax + + syscall + + pop rbp + + ret + +libsys_syscall_arg_2: + push rbp + mov rbp, rsp + + mov r8, rcx + mov r9, rdx + + xor rax, rax + + syscall + + pop rbp + + ret + +libsys_syscall_arg_3: + push rbp + mov rbp, rsp + + mov r8, rcx + mov r9, rdx + mov r10, rbx + + xor rax, rax + + syscall + + pop rbp + + ret + +libsys_syscall_arg_4: + push rbp + mov rbp, rsp + + mov rax, r8 + + mov r8, rcx + mov r9, rdx + mov r10, rbx + mov r11, rax + + xor rax, rax + + syscall + + pop rbp + + ret diff --git a/dev/libSystem/src/SystemProc.asm b/dev/libSystem/src/SystemProc.asm deleted file mode 100644 index 991a371f..00000000 --- a/dev/libSystem/src/SystemProc.asm +++ /dev/null @@ -1,81 +0,0 @@ -;; /* -;; * ======================================================== -;; * -;; * libSystem/src/SystemProc.asm -;; * Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. -;; * -;; * ======================================================== -;; */ - -[bits 64] - -section .text - -global libsys_syscall_arg_1 -global libsys_syscall_arg_2 -global libsys_syscall_arg_3 -global libsys_syscall_arg_4 - -libsys_syscall_arg_1: - push rbp - mov rbp, rsp - - mov r8, rcx - - xor rax, rax - - syscall - - pop rbp - - ret - -libsys_syscall_arg_2: - push rbp - mov rbp, rsp - - mov r8, rcx - mov r9, rdx - - xor rax, rax - - syscall - - pop rbp - - ret - -libsys_syscall_arg_3: - push rbp - mov rbp, rsp - - mov r8, rcx - mov r9, rdx - mov r10, rbx - - xor rax, rax - - syscall - - pop rbp - - ret - -libsys_syscall_arg_4: - push rbp - mov rbp, rsp - - mov rax, r8 - - mov r8, rcx - mov r9, rdx - mov r10, rbx - mov r11, rax - - xor rax, rax - - syscall - - pop rbp - - ret diff --git a/dev/libSystem/src/VerifyCalls.cc b/dev/libSystem/src/VerifyCalls.cc new file mode 100644 index 00000000..fb38c682 --- /dev/null +++ b/dev/libSystem/src/VerifyCalls.cc @@ -0,0 +1,17 @@ +/* ------------------------------------------- + + Copyright (C) 2025, Amlal El Mahrouss, all rights reserved. + +------------------------------------------- */ + +#include +#include + +using namespace LibSystem; + +IMPORT_C Void _rtl_assert(Bool expr, const Char* origin) { + if (!expr) { + PrintOut(nullptr, "Assertion failed: %s\r", origin); + libsys_syscall_arg_1(SYSCALL_HASH("_rtl_debug_break")); + } +} \ No newline at end of file -- cgit v1.2.3