aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/riscv64/kernel/except.c15
-rw-r--r--include/arch/tcb.h4
2 files changed, 19 insertions, 0 deletions
diff --git a/arch/riscv64/kernel/except.c b/arch/riscv64/kernel/except.c
index 2525716..5f182fd 100644
--- a/arch/riscv64/kernel/except.c
+++ b/arch/riscv64/kernel/except.c
@@ -1,9 +1,24 @@
+/* SPDX-License-Identifier: copyleft-next-0.3.1 */
+/* Copyright 2024, Kim Kuparinen < kimi.h.kuparinen@gmail.com > */
+
+/**
+ * @file except.c
+ * riscv64 exception handling.
+ */
+
#include <kmi/types.h>
#include <kmi/panic.h>
#include <kmi/debug.h>
#include <kmi/vmem.h>
#include <kmi/bkl.h>
+/**
+ * Handle exception. Intended to be called from entry.S.
+ *
+ * @param pc Where exception occurred.
+ * @param addr What address caused the exception, if any.
+ * @param id ID of exception, see riscv spec.
+ */
void riscv_handle_exception(void *pc, void *addr, unsigned long id)
{
switch (id) {
diff --git a/include/arch/tcb.h b/include/arch/tcb.h
index 709a3db..b04dc56 100644
--- a/include/arch/tcb.h
+++ b/include/arch/tcb.h
@@ -125,6 +125,10 @@ void open_rpc(struct tcb *t, vm_t top);
* ctx | user | user | <
* ```
*
+ * @note \p top is (at least currently) not checked for legitimacy, it is
+ * assumed that \ref in_rpc_stack() has been checked beforehand. Should probably
+ * handle this better.
+ *
* @param t tcb whose stack to grow.
* @param top Address to grow to.
*/