aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv64/asm/asm-offsets.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2022-09-15 19:21:14 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2022-09-15 19:46:07 +0300
commita717296a2036cede5fccfff544513043a984d614 (patch)
tree68f75a23adc298628fb9cab41fd47402a99dd19d /arch/riscv64/asm/asm-offsets.c
parent619725a5f2f5272f9cbb547ed95c87312c2765a9 (diff)
downloadkmi-a717296a2036cede5fccfff544513043a984d614.tar.gz
kmi-a717296a2036cede5fccfff544513043a984d614.zip
change syscalls to take 5 params and return 6
+ In total, a syscall is built up of 6 values, with the first being the syscall number. Symmetrically, the first value is now a status and the following five values return "values". This allows us to cram in more info into the ipc_* functions. The performance difference is absolutely minimal, at least from my testing in qemu.
Diffstat (limited to 'arch/riscv64/asm/asm-offsets.c')
-rw-r--r--arch/riscv64/asm/asm-offsets.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/riscv64/asm/asm-offsets.c b/arch/riscv64/asm/asm-offsets.c
index 8852d8f..3619765 100644
--- a/arch/riscv64/asm/asm-offsets.c
+++ b/arch/riscv64/asm/asm-offsets.c
@@ -8,6 +8,7 @@
*/
#include <apos/utils.h>
+#include <apos/uapi.h>
#include "../kernel/regs.h"
/**
@@ -74,4 +75,12 @@ void asm_offsets()
OFFSETOF(t5, struct riscv_regs);
OFFSETOF(t6, struct riscv_regs);
SIZEOF(registers, struct riscv_regs);
+
+ OFFSETOF(s, struct sys_ret);
+ OFFSETOF(ar0, struct sys_ret);
+ OFFSETOF(ar1, struct sys_ret);
+ OFFSETOF(ar2, struct sys_ret);
+ OFFSETOF(ar3, struct sys_ret);
+ OFFSETOF(ar4, struct sys_ret);
+ SIZEOF(sys_ret, struct sys_ret);
}