Compare commits
	
		
			1 Commits
		
	
	
		
			2095ac985b
			...
			b7f023756e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b7f023756e | 
| @@ -46,7 +46,7 @@ public: | |||||||
|     using this_class = hwl<BASE>; |     using this_class = hwl<BASE>; | ||||||
|     using reg_t = typename BASE::reg_t; |     using reg_t = typename BASE::reg_t; | ||||||
|  |  | ||||||
|     hwl(); |     hwl(feature_config cfg = feature_config{}); | ||||||
|     virtual ~hwl() = default; |     virtual ~hwl() = default; | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
| @@ -56,7 +56,7 @@ protected: | |||||||
|  |  | ||||||
|  |  | ||||||
| template<typename BASE> | template<typename BASE> | ||||||
| inline hwl<BASE>::hwl() { | inline hwl<BASE>::hwl(feature_config cfg): BASE(cfg) { | ||||||
|     for (unsigned addr = 0x800; addr < 0x803; ++addr){ |     for (unsigned addr = 0x800; addr < 0x803; ++addr){ | ||||||
|         this->register_custom_csr_rd(addr); |         this->register_custom_csr_rd(addr); | ||||||
|         this->register_custom_csr_wr(addr); |         this->register_custom_csr_wr(addr); | ||||||
|   | |||||||
| @@ -226,6 +226,8 @@ struct feature_config { | |||||||
|     unsigned clic_num_trigger{0}; |     unsigned clic_num_trigger{0}; | ||||||
|     uint64_t tcm_base{0x10000000}; |     uint64_t tcm_base{0x10000000}; | ||||||
|     uint64_t tcm_size{0x8000}; |     uint64_t tcm_size{0x8000}; | ||||||
|  |     uint64_t io_address{0xf0000000}; | ||||||
|  |     uint64_t io_addr_mask{0xf0000000}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class trap_load_access_fault : public trap_access { | class trap_load_access_fault : public trap_access { | ||||||
|   | |||||||
| @@ -81,7 +81,7 @@ public: | |||||||
|     using mem_write_f = typename BASE::mem_write_f; |     using mem_write_f = typename BASE::mem_write_f; | ||||||
|     using phys_addr_t = typename BASE::phys_addr_t; |     using phys_addr_t = typename BASE::phys_addr_t; | ||||||
|  |  | ||||||
|     wt_cache(); |     wt_cache(feature_config cfg = feature_config{}); | ||||||
|     virtual ~wt_cache() = default; |     virtual ~wt_cache() = default; | ||||||
|  |  | ||||||
|     unsigned size{4096}; |     unsigned size{4096}; | ||||||
| @@ -103,7 +103,11 @@ protected: | |||||||
|  |  | ||||||
|  |  | ||||||
| template<typename BASE> | template<typename BASE> | ||||||
| inline wt_cache<BASE>::wt_cache() { | inline wt_cache<BASE>::wt_cache(feature_config cfg) | ||||||
|  | :BASE(cfg) | ||||||
|  | , io_address{cfg.io_address} | ||||||
|  | , io_addr_mask{cfg.io_addr_mask} | ||||||
|  | { | ||||||
|     auto cb = base_class::replace_mem_access( |     auto cb = base_class::replace_mem_access( | ||||||
|             [this](phys_addr_t a, unsigned l, uint8_t* const d) -> iss::status { return read_cache(a, l,d);}, |             [this](phys_addr_t a, unsigned l, uint8_t* const d) -> iss::status { return read_cache(a, l,d);}, | ||||||
|             [this](phys_addr_t a, unsigned l, uint8_t const* const d) -> iss::status { return write_cache(a, l,d);}); |             [this](phys_addr_t a, unsigned l, uint8_t const* const d) -> iss::status { return write_cache(a, l,d);}); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user