16#ifndef ZEPHYR_INCLUDE_ARCH_RISCV_SYSCALL_H_
17#define ZEPHYR_INCLUDE_ARCH_RISCV_SYSCALL_H_
22#define RV_ECALL_RUNTIME_EXCEPT 0
23#define RV_ECALL_IRQ_OFFLOAD 1
43 register ulong_t a0 __asm__ (
"a0") = arg1;
44 register ulong_t a1 __asm__ (
"a1") = arg2;
45 register ulong_t a2 __asm__ (
"a2") = arg3;
46 register ulong_t a3 __asm__ (
"a3") = arg4;
47 register ulong_t a4 __asm__ (
"a4") = arg5;
48 register ulong_t a5 __asm__ (
"a5") = arg6;
49 register ulong_t a7 __asm__ (
"a7") = call_id;
51 __asm__
volatile (
"ecall"
53 :
"r" (a1),
"r" (a2),
"r" (a3),
"r" (a4),
"r" (a5),
64 register ulong_t a0 __asm__ (
"a0") = arg1;
65 register ulong_t a1 __asm__ (
"a1") = arg2;
66 register ulong_t a2 __asm__ (
"a2") = arg3;
67 register ulong_t a3 __asm__ (
"a3") = arg4;
68 register ulong_t a4 __asm__ (
"a4") = arg5;
69 register ulong_t a7 __asm__ (
"a7") = call_id;
71 __asm__
volatile (
"ecall"
73 :
"r" (a1),
"r" (a2),
"r" (a3),
"r" (a4),
"r" (a7)
82 register ulong_t a0 __asm__ (
"a0") = arg1;
83 register ulong_t a1 __asm__ (
"a1") = arg2;
84 register ulong_t a2 __asm__ (
"a2") = arg3;
85 register ulong_t a3 __asm__ (
"a3") = arg4;
86 register ulong_t a7 __asm__ (
"a7") = call_id;
88 __asm__
volatile (
"ecall"
90 :
"r" (a1),
"r" (a2),
"r" (a3),
"r" (a7)
99 register ulong_t a0 __asm__ (
"a0") = arg1;
100 register ulong_t a1 __asm__ (
"a1") = arg2;
101 register ulong_t a2 __asm__ (
"a2") = arg3;
102 register ulong_t a7 __asm__ (
"a7") = call_id;
104 __asm__
volatile (
"ecall"
106 :
"r" (a1),
"r" (a2),
"r" (a7)
114 register ulong_t a0 __asm__ (
"a0") = arg1;
115 register ulong_t a1 __asm__ (
"a1") = arg2;
116 register ulong_t a7 __asm__ (
"a7") = call_id;
118 __asm__
volatile (
"ecall"
127 register ulong_t a0 __asm__ (
"a0") = arg1;
128 register ulong_t a7 __asm__ (
"a7") = call_id;
130 __asm__
volatile (
"ecall"
139 register ulong_t a0 __asm__ (
"a0");
140 register ulong_t a7 __asm__ (
"a7") = call_id;
142 __asm__
volatile (
"ecall"
149#ifdef CONFIG_USERSPACE
171 register ulong_t is_user __asm__ (
"t0");
172 __asm__ (
"csrr %0, mscratch" :
"=r" (is_user));
static uintptr_t arch_syscall_invoke4(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t call_id)
Definition: syscall.h:78
static uintptr_t arch_syscall_invoke2(uintptr_t arg1, uintptr_t arg2, uintptr_t call_id)
Definition: syscall.h:111
static uintptr_t arch_syscall_invoke1(uintptr_t arg1, uintptr_t call_id)
Definition: syscall.h:125
static uintptr_t arch_syscall_invoke0(uintptr_t call_id)
Definition: syscall.h:137
static bool arch_is_user_context(void)
Definition: syscall.h:150
static uintptr_t arch_syscall_invoke5(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5, uintptr_t call_id)
Definition: syscall.h:59
static uintptr_t arch_syscall_invoke3(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t call_id)
Definition: syscall.h:95
static uintptr_t arch_syscall_invoke6(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5, uintptr_t arg6, uintptr_t call_id)
Definition: syscall.h:38
unsigned long ulong_t
Definition: types.h:18
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:105