1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3 * Copyright 2022-2023 NXP
4 */
5
6 #ifndef __KERNEL_ARCH_SCALL_H
7 #define __KERNEL_ARCH_SCALL_H
8
9 #include <kernel/thread.h>
10 #include <riscv.h>
11 #include <types_ext.h>
12
scall_get_max_args(struct thread_scall_regs * regs,size_t * scn,size_t * max_args)13 static inline void scall_get_max_args(struct thread_scall_regs *regs,
14 size_t *scn, size_t *max_args)
15 {
16 *scn = regs->t0;
17 *max_args = regs->t1;
18 }
19
scall_set_retval(struct thread_scall_regs * regs,uint32_t ret_val)20 static inline void scall_set_retval(struct thread_scall_regs *regs,
21 uint32_t ret_val)
22 {
23 regs->a0 = ret_val;
24 }
25
scall_set_sys_return_regs(struct thread_scall_regs * regs,bool panic,uint32_t panic_code)26 static inline void scall_set_sys_return_regs(struct thread_scall_regs *regs,
27 bool panic, uint32_t panic_code)
28 {
29 regs->a1 = panic;
30 regs->a2 = panic_code;
31 }
32
33 #endif /*__KERNEL_ARCH_SCALL_H*/
34