From f28c4a64407098e4cd6b3c59edf705c1b1d2821e Mon Sep 17 00:00:00 2001 From: Berkus Decker Date: Tue, 29 Dec 2020 16:18:53 +0200 Subject: [PATCH] [wip] start kernel API/ABI for syscalls --- nucleus/src/api.rs | 5 +++++ nucleus/src/arch/aarch64/abi.rs | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 nucleus/src/arch/aarch64/abi.rs diff --git a/nucleus/src/api.rs b/nucleus/src/api.rs index b8ef8ed..6189a43 100644 --- a/nucleus/src/api.rs +++ b/nucleus/src/api.rs @@ -3,6 +3,11 @@ * Copyright (c) Berkus Decker */ +//! Syscall API for calling kernel functions. +//! +//! Arch-specific kernel ABI decodes syscall invocations and calls API functions to perform actual +//! operations. + // Syscalls (kernel API) trait API { fn send(cap: Cap, msg_info: MessageInfo); diff --git a/nucleus/src/arch/aarch64/abi.rs b/nucleus/src/arch/aarch64/abi.rs new file mode 100644 index 0000000..c2fc422 --- /dev/null +++ b/nucleus/src/arch/aarch64/abi.rs @@ -0,0 +1,17 @@ +/* + * SPDX-License-Identifier: BlueOak-1.0.0 + * Copyright (c) Berkus Decker + */ + +//! Syscall ABI for calling kernel functions. +//! +//! Principally, there are two syscalls - one does not use capabilities, `Yield` and one is performing +//! a capability invocation, `InvokeCapability`. However internally the invocation is dispatched to +//! multiple available kernel functions, specific to each capability. + +/// Parse syscall and invoke API functions. +/// +/// Implements C ABI to easily parse passed in parameters. +/// @todo Move this to aarch64-specific part. +#[no_mangle] +extern "C" pub(crate) syscall_entry() {}