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
24#define RV_ECALL_SCHEDULE 2
45 register unsigned long a0 __asm__ (
"a0") = arg1;
46 register unsigned long a1 __asm__ (
"a1") = arg2;
47 register unsigned long a2 __asm__ (
"a2") = arg3;
48 register unsigned long a3 __asm__ (
"a3") = arg4;
49 register unsigned long a4 __asm__ (
"a4") = arg5;
50 register unsigned long a5 __asm__ (
"a5") = arg6;
51 register unsigned long t0 __asm__ (
"t0") = call_id;
53 __asm__
volatile (
"ecall"
55 :
"r" (a1),
"r" (a2),
"r" (a3),
"r" (a4),
"r" (a5),
66 register unsigned long a0 __asm__ (
"a0") = arg1;
67 register unsigned long a1 __asm__ (
"a1") = arg2;
68 register unsigned long a2 __asm__ (
"a2") = arg3;
69 register unsigned long a3 __asm__ (
"a3") = arg4;
70 register unsigned long a4 __asm__ (
"a4") = arg5;
71 register unsigned long t0 __asm__ (
"t0") = call_id;
73 __asm__
volatile (
"ecall"
75 :
"r" (a1),
"r" (a2),
"r" (a3),
"r" (a4),
"r" (t0)
84 register unsigned long a0 __asm__ (
"a0") = arg1;
85 register unsigned long a1 __asm__ (
"a1") = arg2;
86 register unsigned long a2 __asm__ (
"a2") = arg3;
87 register unsigned long a3 __asm__ (
"a3") = arg4;
88 register unsigned long t0 __asm__ (
"t0") = call_id;
90 __asm__
volatile (
"ecall"
92 :
"r" (a1),
"r" (a2),
"r" (a3),
"r" (t0)
101 register unsigned long a0 __asm__ (
"a0") = arg1;
102 register unsigned long a1 __asm__ (
"a1") = arg2;
103 register unsigned long a2 __asm__ (
"a2") = arg3;
104 register unsigned long t0 __asm__ (
"t0") = call_id;
106 __asm__
volatile (
"ecall"
108 :
"r" (a1),
"r" (a2),
"r" (t0)
116 register unsigned long a0 __asm__ (
"a0") = arg1;
117 register unsigned long a1 __asm__ (
"a1") = arg2;
118 register unsigned long t0 __asm__ (
"t0") = call_id;
120 __asm__
volatile (
"ecall"
129 register unsigned long a0 __asm__ (
"a0") = arg1;
130 register unsigned long t0 __asm__ (
"t0") = call_id;
132 __asm__
volatile (
"ecall"
141 register unsigned long a0 __asm__ (
"a0");
142 register unsigned long t0 __asm__ (
"t0") = call_id;
144 __asm__
volatile (
"ecall"
151#ifdef CONFIG_USERSPACE
164 if (__builtin_thread_pointer() ==
NULL) {
173 return z_riscv_thread_is_user_mode();
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:89
static uintptr_t arch_syscall_invoke2(uintptr_t arg1, uintptr_t arg2, uintptr_t call_id)
Definition syscall.h:131
static uintptr_t arch_syscall_invoke1(uintptr_t arg1, uintptr_t call_id)
Definition syscall.h:149
static uintptr_t arch_syscall_invoke0(uintptr_t call_id)
Definition syscall.h:165
static bool arch_is_user_context(void)
Definition syscall.h:181
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:65
static uintptr_t arch_syscall_invoke3(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t call_id)
Definition syscall.h:111
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:40
Per-arch thread definition.
#define NULL
Definition iar_missing_defs.h:20
__UINTPTR_TYPE__ uintptr_t
Definition stdint.h:105