1 // See LICENSE for license details.
13 trap_t(reg_t which
) : which(which
) {}
14 virtual const char* name();
15 virtual void side_effects(state_t
* state
) {}
16 reg_t
cause() { return which
; }
22 class mem_trap_t
: public trap_t
25 mem_trap_t(reg_t which
, reg_t badvaddr
)
26 : trap_t(which
), badvaddr(badvaddr
) {}
27 void side_effects(state_t
* state
);
28 reg_t
get_badvaddr() { return badvaddr
; }
33 #define DECLARE_TRAP(n, x) class trap_##x : public trap_t { \
35 trap_##x() : trap_t(n) {} \
36 const char* name() { return "trap_"#x; } \
39 #define DECLARE_MEM_TRAP(n, x) class trap_##x : public mem_trap_t { \
41 trap_##x(reg_t badvaddr) : mem_trap_t(n, badvaddr) {} \
42 const char* name() { return "trap_"#x; } \
45 DECLARE_TRAP(0, instruction_address_misaligned
)
46 DECLARE_TRAP(1, instruction_access_fault
)
47 DECLARE_TRAP(2, illegal_instruction
)
48 DECLARE_TRAP(3, privileged_instruction
)
49 DECLARE_TRAP(4, fp_disabled
)
50 DECLARE_TRAP(5, reserved0
)
51 DECLARE_TRAP(6, syscall
)
52 DECLARE_TRAP(7, breakpoint
)
53 DECLARE_MEM_TRAP(8, load_address_misaligned
)
54 DECLARE_MEM_TRAP(9, store_address_misaligned
)
55 DECLARE_MEM_TRAP(10, load_access_fault
)
56 DECLARE_MEM_TRAP(11, store_access_fault
)
57 DECLARE_TRAP(12, accelerator_disabled
)