1 // SPDX-License-Identifier: GPL-2.0 2 #ifndef ARCH_PERF_RISCV_TRAP_TYPES_H 3 #define ARCH_PERF_RISCV_TRAP_TYPES_H 4 5 /* Exception cause high bit - is an interrupt if set */ 6 #define CAUSE_IRQ_FLAG (_AC(1, UL) << (__riscv_xlen - 1)) 7 8 /* Interrupt causes (minus the high bit) */ 9 #define IRQ_S_SOFT 1 10 #define IRQ_VS_SOFT 2 11 #define IRQ_M_SOFT 3 12 #define IRQ_S_TIMER 5 13 #define IRQ_VS_TIMER 6 14 #define IRQ_M_TIMER 7 15 #define IRQ_S_EXT 9 16 #define IRQ_VS_EXT 10 17 #define IRQ_M_EXT 11 18 #define IRQ_S_GEXT 12 19 #define IRQ_PMU_OVF 13 20 21 /* Exception causes */ 22 #define EXC_INST_MISALIGNED 0 23 #define EXC_INST_ACCESS 1 24 #define EXC_INST_ILLEGAL 2 25 #define EXC_BREAKPOINT 3 26 #define EXC_LOAD_MISALIGNED 4 27 #define EXC_LOAD_ACCESS 5 28 #define EXC_STORE_MISALIGNED 6 29 #define EXC_STORE_ACCESS 7 30 #define EXC_SYSCALL 8 31 #define EXC_HYPERVISOR_SYSCALL 9 32 #define EXC_SUPERVISOR_SYSCALL 10 33 #define EXC_INST_PAGE_FAULT 12 34 #define EXC_LOAD_PAGE_FAULT 13 35 #define EXC_STORE_PAGE_FAULT 15 36 #define EXC_INST_GUEST_PAGE_FAULT 20 37 #define EXC_LOAD_GUEST_PAGE_FAULT 21 38 #define EXC_VIRTUAL_INST_FAULT 22 39 #define EXC_STORE_GUEST_PAGE_FAULT 23 40 41 #define TRAP(x) { x, #x } 42 43 #define kvm_riscv_trap_class \ 44 TRAP(IRQ_S_SOFT), TRAP(IRQ_VS_SOFT), TRAP(IRQ_M_SOFT), \ 45 TRAP(IRQ_S_TIMER), TRAP(IRQ_VS_TIMER), TRAP(IRQ_M_TIMER), \ 46 TRAP(IRQ_S_EXT), TRAP(IRQ_VS_EXT), TRAP(IRQ_M_EXT), \ 47 TRAP(IRQ_S_GEXT), TRAP(IRQ_PMU_OVF), \ 48 TRAP(EXC_INST_MISALIGNED), TRAP(EXC_INST_ACCESS), TRAP(EXC_INST_ILLEGAL), \ 49 TRAP(EXC_BREAKPOINT), TRAP(EXC_LOAD_MISALIGNED), TRAP(EXC_LOAD_ACCESS), \ 50 TRAP(EXC_STORE_MISALIGNED), TRAP(EXC_STORE_ACCESS), TRAP(EXC_SYSCALL), \ 51 TRAP(EXC_HYPERVISOR_SYSCALL), TRAP(EXC_SUPERVISOR_SYSCALL), \ 52 TRAP(EXC_INST_PAGE_FAULT), TRAP(EXC_LOAD_PAGE_FAULT), \ 53 TRAP(EXC_STORE_PAGE_FAULT), TRAP(EXC_INST_GUEST_PAGE_FAULT), \ 54 TRAP(EXC_LOAD_GUEST_PAGE_FAULT), TRAP(EXC_VIRTUAL_INST_FAULT), \ 55 TRAP(EXC_STORE_GUEST_PAGE_FAULT) 56 57 #endif /* ARCH_PERF_RISCV_TRAP_TYPES_H */ 58