14#ifndef ZEPHYR_INCLUDE_ARCH_RISCV_ERROR_H_
15#define ZEPHYR_INCLUDE_ARCH_RISCV_ERROR_H_
25#ifdef CONFIG_USERSPACE
38#define ARCH_EXCEPT(reason_p) do { \
39 if (k_is_user_context()) { \
40 arch_syscall_invoke1(reason_p, \
41 K_SYSCALL_USER_FAULT); \
44 z_impl_user_fault(reason_p); \
54#define ARCH_EXCEPT_MARKER 0x00DEAD00
55#define ARCH_EXCEPT(reason_p) do { \
56 __asm__ volatile("addi t5, %[marker], 0" \
57 : : [marker] "r" (ARCH_EXCEPT_MARKER)); \
58 __asm__ volatile("addi t6, %[reason], 0" \
59 : : [reason] "r" (reason_p)); \
60 __asm__ volatile("unimp"); \
66#include <syscalls/error.h>
RISCV specific syscall header.
void user_fault(unsigned int reason)
RISCV public exception handling.