1 #ifndef _RISCV_COPROCESSOR_H
2 #define _RISCV_COPROCESSOR_H
13 virtual std::vector
<insn_desc_t
> get_instructions() = 0;
14 virtual const char* name() = 0;
15 virtual void reset() {};
16 virtual ~extension_t();
18 void set_processor(processor_t
* _p
) { p
= _p
; }
22 void illegal_instruction();
23 void raise_interrupt();
24 void clear_interrupt();
27 std::map
<std::string
, std::function
<extension_t
*()>>& extensions();
29 #define REGISTER_EXTENSION(name, constructor) \
30 class register_##name { \
31 public: register_##name() { extensions()[#name] = constructor; } \
32 }; static register_##name dummy_##name;