14#ifndef ZEPHYR_INCLUDE_ARCH_RISCV_ERROR_H_
15#define ZEPHYR_INCLUDE_ARCH_RISCV_ERROR_H_
25#ifdef CONFIG_RISCV_S_MODE
33#define ARCH_EXCEPT(reason_p) do { \
34 if (k_is_user_context()) { \
35 arch_syscall_invoke1(reason_p, \
36 K_SYSCALL_USER_FAULT); \
38 register unsigned long _r __asm__("a0") = \
39 (unsigned long)(reason_p); \
40 register unsigned long _t __asm__("t0") = 0; \
41 __asm__ volatile("ebreak" \
42 : : "r"(_r), "r"(_t) \
48#elif defined(CONFIG_USERSPACE)
50#define ARCH_EXCEPT(reason_p) do { \
51 if (k_is_user_context()) { \
52 arch_syscall_invoke1(reason_p, \
53 K_SYSCALL_USER_FAULT); \
56 arch_syscall_invoke1(reason_p, \
57 RV_ECALL_RUNTIME_EXCEPT);\
62#define ARCH_EXCEPT(reason_p) \
63 arch_syscall_invoke1(reason_p, RV_ECALL_RUNTIME_EXCEPT)
68#include <zephyr/syscalls/error.h>
RISCV specific syscall header.
void user_fault(unsigned int reason)