| /* SPDX-License-Identifier: GPL-2.0-only */ |
| #ifndef _ASMRISCV_PROCESSOR_H_ |
| #define _ASMRISCV_PROCESSOR_H_ |
| #include <asm/csr.h> |
| #include <asm/ptrace.h> |
| |
| #define EXCEPTION_CAUSE_MAX 16 |
| |
| typedef void (*exception_fn)(struct pt_regs *); |
| |
| struct thread_info { |
| int cpu; |
| unsigned long hartid; |
| unsigned long isa[1]; |
| exception_fn exception_handlers[EXCEPTION_CAUSE_MAX]; |
| }; |
| |
| static inline struct thread_info *current_thread_info(void) |
| { |
| return (struct thread_info *)csr_read(CSR_SSCRATCH); |
| } |
| |
| void install_exception_handler(unsigned long cause, void (*handler)(struct pt_regs *)); |
| void do_handle_exception(struct pt_regs *regs); |
| void thread_info_init(void); |
| |
| void show_regs(struct pt_regs *regs); |
| |
| #endif /* _ASMRISCV_PROCESSOR_H_ */ |