summaryrefslogtreecommitdiffhomepage
path: root/dev/libDDK
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-09-07 18:12:25 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-09-07 18:12:25 +0200
commit537cadbf78695a01ea1c00a0a5a4b6b70ddac8c3 (patch)
tree293cd2e60b377729805f1252c37dd28bb332ee6d /dev/libDDK
parentd9e1479799ef2d7594c9c9f7dc2724353a01faff (diff)
feat: `ne_launch` and `LaunchHelpers.fwrk`: PID zero of NeKernel.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/libDDK')
-rw-r--r--dev/libDDK/DriverKit/cpp/object.hpp16
-rw-r--r--dev/libDDK/DriverKit/ddk.h4
-rw-r--r--dev/libDDK/src/ddk_kernel_call.c2
-rw-r--r--dev/libDDK/src/ddk_kernel_call_dispatch.S3
4 files changed, 22 insertions, 3 deletions
diff --git a/dev/libDDK/DriverKit/cpp/object.hpp b/dev/libDDK/DriverKit/cpp/object.hpp
new file mode 100644
index 00000000..3bf52657
--- /dev/null
+++ b/dev/libDDK/DriverKit/cpp/object.hpp
@@ -0,0 +1,16 @@
+/* -------------------------------------------
+
+ Copyright Amlal El Mahrouss 2025, all rights reserved.
+
+ FILE: ddk.h
+ PURPOSE: DDK Driver model base header.
+
+ ------------------------------------------- */
+
+#pragma once
+
+#include <DriverKit/macros.h>
+
+#define DK_INTERFACE_IMPL : public ::DKInterface
+
+class DKInterface;
diff --git a/dev/libDDK/DriverKit/ddk.h b/dev/libDDK/DriverKit/ddk.h
index 254137f9..2e2dddf0 100644
--- a/dev/libDDK/DriverKit/ddk.h
+++ b/dev/libDDK/DriverKit/ddk.h
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Amlal El Mahrouss.
+ Copyright Amlal El Mahrouss 2025, all rights reserved.
FILE: ddk.h
PURPOSE: DDK Driver model base header.
@@ -29,6 +29,8 @@ struct DDK_STATUS_STRUCT DDK_FINAL {
struct DDK_OBJECT_MANIFEST* s_object;
};
+typedef void* ptr_t;
+
/// @brief Call Kernel procedure.
/// @param name the procedure name.
/// @param cnt number of elements in **dat**
diff --git a/dev/libDDK/src/ddk_kernel_call.c b/dev/libDDK/src/ddk_kernel_call.c
index 1ac0a0aa..61742b7b 100644
--- a/dev/libDDK/src/ddk_kernel_call.c
+++ b/dev/libDDK/src/ddk_kernel_call.c
@@ -12,7 +12,7 @@
#include <stdarg.h>
/// @brief this is an internal call, do not use it.
-DDK_EXTERN ATTRIBUTE(naked) void* __ke_call_dispatch(const int32_t name, int32_t cnt, void* data,
+DDK_EXTERN ATTRIBUTE(naked) ptr_t __ke_call_dispatch(const int32_t name, int32_t cnt, void* data,
size_t sz);
/// @brief This function hashes the path into a FNV symbol.
/// @param path the path to hash.
diff --git a/dev/libDDK/src/ddk_kernel_call_dispatch.S b/dev/libDDK/src/ddk_kernel_call_dispatch.S
index 7b7a26cb..a607fe40 100644
--- a/dev/libDDK/src/ddk_kernel_call_dispatch.S
+++ b/dev/libDDK/src/ddk_kernel_call_dispatch.S
@@ -21,10 +21,11 @@ __ke_call_dispatch:
push rbp
mov rbp, rsp
+ /* registers have already been pushed. */
+
int kKernelCallTrapId
pop rbp
-
ret
#elif defined(__DDK_POWER64__)