summaryrefslogtreecommitdiff
path: root/na/arch/riscv/syscall
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-07-10 11:31:46 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-07-10 11:31:46 +0800
commite90b72ec3082588b296956730bd2930cf8d5d671 (patch)
tree36ff6916af9b4176ea5a9662219d11e721f0b691 /na/arch/riscv/syscall
parent1767d390fbf3d0c65389de46caf0b6d43ef3b6ad (diff)
downloadlume-e90b72ec3082588b296956730bd2930cf8d5d671.tar.gz
lume-e90b72ec3082588b296956730bd2930cf8d5d671.tar.xz
refactor: promote new architecture to repository root
Archive the deprecated implementation under lume-legacy, make the new kernel the default root-level build, and update repository entry points without changing kernel behavior.
Diffstat (limited to 'na/arch/riscv/syscall')
-rw-r--r--na/arch/riscv/syscall/syscall_md.cc42
1 files changed, 0 insertions, 42 deletions
diff --git a/na/arch/riscv/syscall/syscall_md.cc b/na/arch/riscv/syscall/syscall_md.cc
deleted file mode 100644
index 26320c8..0000000
--- a/na/arch/riscv/syscall/syscall_md.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/* Copyright (C) 2026 Richard Qin */
-
-/*
- * Syscall MD Layer — RISC-V Register Extraction
- *
- * Extracts syscall number (a7) and arguments (a0-a5) from the TrapFrame,
- * calls the MI dispatcher, and writes the return value back to a0.
- *
- * Reference: docs/specs/syscall.md §5
- */
-
-#include <lume/syscall.h>
-#include <lume/syscall_nr.h>
-#include <arch/trapframe.h>
-#include <arch/cpu.h>
-
-void syscall_dispatch_md(arch::TrapFrame* tf)
-{
- uint64 nr = tf->a[7]; /* RISC-V ABI: syscall number in a7 */
-
- uint64 args[6] = {
- tf->a[0], tf->a[1], tf->a[2],
- tf->a[3], tf->a[4], tf->a[5],
- };
-
- /* Enable interrupts so timer and preemption work during syscalls */
- arch::cpu::intr_on();
-
- int64 ret = syscall_dispatch(nr, args);
-
- arch::cpu::intr_off();
-
- /* sys_rt_sigreturn restores the entire TrapFrame from the signal
- * frame on the user stack. Writing ret into a[0] would clobber
- * the restored value, so we must skip the writeback. */
- if (nr == static_cast<uint64>(SYS_rt_sigreturn)){
- return;
- }
- tf->a[0] = static_cast<uint64>(ret); /* Return value in a0 */
-}
-