adds handling of variable number of clic interrupts
This commit is contained in:
		| @@ -417,7 +417,7 @@ protected: | ||||
|     std::vector<std::function<mem_write_f>> memfn_write; | ||||
|     void insert_mem_range(uint64_t, uint64_t, std::function<mem_read_f>, std::function<mem_write_f>); | ||||
|     feature_config cfg; | ||||
|     uint64_t mcause_max_irq{(FEAT & features_e::FEAT_CLIC) ? 4096 : 16}; | ||||
|     unsigned mcause_max_irq{(FEAT & features_e::FEAT_CLIC) ? std::max(16U,static_cast<unsigned>(traits<BASE>::CLIC_NUM_IRQ)) : 16U}; | ||||
|     inline bool debug_mode_active() { return this->reg.PRIV & 0x4; } | ||||
|     std::pair<std::function<mem_read_f>, std::function<mem_write_f>> replace_mem_access(std::function<mem_read_f> rd, | ||||
|                                                                                         std::function<mem_write_f> wr) { | ||||
|   | ||||
| @@ -447,7 +447,7 @@ protected: | ||||
|     std::vector<std::function<mem_write_f>> memfn_write; | ||||
|     void insert_mem_range(uint64_t, uint64_t, std::function<mem_read_f>, std::function<mem_write_f>); | ||||
|     feature_config cfg; | ||||
|     uint64_t mcause_max_irq{(FEAT & features_e::FEAT_CLIC) ? 4096 : 16}; | ||||
|     unsigned mcause_max_irq{(FEAT & features_e::FEAT_CLIC) ? std::max(16U,static_cast<unsigned>(traits<BASE>::CLIC_NUM_IRQ)) : 16U}; | ||||
|     inline bool debug_mode_active() { return this->reg.PRIV & 0x4; } | ||||
|  | ||||
|     std::pair<std::function<mem_read_f>, std::function<mem_write_f>> replace_mem_access(std::function<mem_read_f> rd, | ||||
|   | ||||
| @@ -53,7 +53,7 @@ template <> struct traits<tgc5c> { | ||||
|     static constexpr std::array<const char*, 36> reg_aliases{ | ||||
|         {"zero", "ra", "sp", "gp", "tp", "t0", "t1", "t2", "s0", "s1", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "t3", "t4", "t5", "t6", "pc", "next_pc", "priv", "dpc"}}; | ||||
|  | ||||
|     enum constants {MISA_VAL=1073746180ULL, MARCHID_VAL=2147483651ULL, XLEN=32ULL, INSTR_ALIGNMENT=2ULL, RFS=32ULL, fence=0ULL, fencei=1ULL, fencevmal=2ULL, fencevmau=3ULL, CSR_SIZE=4096ULL, MUL_LEN=64ULL}; | ||||
|     enum constants {MISA_VAL=1073746180ULL, MARCHID_VAL=2147483651ULL, CLIC_NUM_IRQ=0ULL, XLEN=32ULL, INSTR_ALIGNMENT=2ULL, RFS=32ULL, fence=0ULL, fencei=1ULL, fencevmal=2ULL, fencevmau=3ULL, CSR_SIZE=4096ULL, MUL_LEN=64ULL}; | ||||
|  | ||||
|     constexpr static unsigned FP_REGS_SIZE = 0; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user