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 
   44        register unsigned long a0 __asm__ (
"a0") = arg1;
 
   45        register unsigned long a1 __asm__ (
"a1") = arg2;
 
   46        register unsigned long a2 __asm__ (
"a2") = arg3;
 
   47        register unsigned long a3 __asm__ (
"a3") = arg4;
 
   48        register unsigned long a4 __asm__ (
"a4") = arg5;
 
   49        register unsigned long a5 __asm__ (
"a5") = arg6;
 
   50        register unsigned long t0 __asm__ (
"t0") = call_id;
 
   52        __asm__ 
volatile (
"ecall" 
   54                          : 
"r" (a1), 
"r" (a2), 
"r" (a3), 
"r" (a4), 
"r" (a5),
 
   65        register unsigned long a0 __asm__ (
"a0") = arg1;
 
   66        register unsigned long a1 __asm__ (
"a1") = arg2;
 
   67        register unsigned long a2 __asm__ (
"a2") = arg3;
 
   68        register unsigned long a3 __asm__ (
"a3") = arg4;
 
   69        register unsigned long a4 __asm__ (
"a4") = arg5;
 
   70        register unsigned long t0 __asm__ (
"t0") = call_id;
 
   72        __asm__ 
volatile (
"ecall" 
   74                          : 
"r" (a1), 
"r" (a2), 
"r" (a3), 
"r" (a4), 
"r" (t0)
 
   83        register unsigned long a0 __asm__ (
"a0") = arg1;
 
   84        register unsigned long a1 __asm__ (
"a1") = arg2;
 
   85        register unsigned long a2 __asm__ (
"a2") = arg3;
 
   86        register unsigned long a3 __asm__ (
"a3") = arg4;
 
   87        register unsigned long t0 __asm__ (
"t0") = call_id;
 
   89        __asm__ 
volatile (
"ecall" 
   91                          : 
"r" (a1), 
"r" (a2), 
"r" (a3), 
"r" (t0)
 
  100        register unsigned long a0 __asm__ (
"a0") = arg1;
 
  101        register unsigned long a1 __asm__ (
"a1") = arg2;
 
  102        register unsigned long a2 __asm__ (
"a2") = arg3;
 
  103        register unsigned long t0 __asm__ (
"t0") = call_id;
 
  105        __asm__ 
volatile (
"ecall" 
  107                          : 
"r" (a1), 
"r" (a2), 
"r" (t0)
 
  115        register unsigned long a0 __asm__ (
"a0") = arg1;
 
  116        register unsigned long a1 __asm__ (
"a1") = arg2;
 
  117        register unsigned long t0 __asm__ (
"t0") = call_id;
 
  119        __asm__ 
volatile (
"ecall" 
  128        register unsigned long a0 __asm__ (
"a0") = arg1;
 
  129        register unsigned long t0 __asm__ (
"t0") = call_id;
 
  131        __asm__ 
volatile (
"ecall" 
  140        register unsigned long a0 __asm__ (
"a0");
 
  141        register unsigned long t0 __asm__ (
"t0") = call_id;
 
  143        __asm__ 
volatile (
"ecall" 
  150#ifdef CONFIG_USERSPACE 
  151register unsigned long riscv_tp_reg __asm__ (
"tp");
 
  156        if (riscv_tp_reg == 0) {
 
  161        extern __thread 
uint8_t is_user_mode;
 
  163        return is_user_mode != 0;
 
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:79
 
static uintptr_t arch_syscall_invoke2(uintptr_t arg1, uintptr_t arg2, uintptr_t call_id)
Definition: syscall.h:112
 
static uintptr_t arch_syscall_invoke1(uintptr_t arg1, uintptr_t call_id)
Definition: syscall.h:126
 
static uintptr_t arch_syscall_invoke0(uintptr_t call_id)
Definition: syscall.h:138
 
static bool arch_is_user_context(void)
Definition: syscall.h:153
 
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:60
 
static uintptr_t arch_syscall_invoke3(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t call_id)
Definition: syscall.h:96
 
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:39
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:105