From 537cadbf78695a01ea1c00a0a5a4b6b70ddac8c3 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 7 Sep 2025 18:12:25 +0200 Subject: feat: `ne_launch` and `LaunchHelpers.fwrk`: PID zero of NeKernel. Signed-off-by: Amlal El Mahrouss --- dev/libDDK/DriverKit/cpp/object.hpp | 16 ++++++++++++++++ dev/libDDK/DriverKit/ddk.h | 4 +++- dev/libDDK/src/ddk_kernel_call.c | 2 +- dev/libDDK/src/ddk_kernel_call_dispatch.S | 3 ++- 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 dev/libDDK/DriverKit/cpp/object.hpp (limited to 'dev/libDDK') 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 + +#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 /// @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__) -- cgit v1.2.3