52class MappableConfObject;
75 byte_order_ = byte_order;
85 byte_order_(rhs.byte_order_),
86 regs_(
std::move(rhs.regs_)),
87 newd_regs_(
std::move(rhs.newd_regs_)),
88 callbacks_(rhs.callbacks_),
89 allocated_memory_(rhs.allocated_memory_) {
91 rhs.callbacks_ =
nullptr;
92 rhs.allocated_memory_ =
nullptr;
102 byte_order_ = rhs.byte_order_;
103 regs_ = std::move(rhs.regs_);
104 newd_regs_ = std::move(rhs.newd_regs_);
105 callbacks_ = rhs.callbacks_;
106 rhs.callbacks_ =
nullptr;
107 allocated_memory_ = rhs.allocated_memory_;
108 rhs.allocated_memory_ =
nullptr;
113 std::string_view
name()
const override {
129 const std::vector<field_t> &fields)
override;
132 unsigned index)
const override;
133 const std::map<size_t,
136 callbacks_ = callbacks;
140 miss_pattern_ = miss_pattern;
143 uint64_t offset)
override;
147 virtual std::vector<uint8_t>
read(
148 uint64_t offset,
size_t size,
151 virtual void write(uint64_t offset,
const std::vector<uint8_t> &value,
165 std::vector<uint8_t> &bytes)
const;
167 std::vector<uint8_t> &bytes)
const;
170 bool has_range_overlap(uint64_t offset, uint64_t size)
const;
176 std::optional<uint8_t> miss_pattern_;
179 std::map<size_t, RegisterInterface *> regs_;
182 std::vector<std::unique_ptr<RegisterInterface>> newd_regs_;
struct transaction transaction_t
Definition: bank-interface.h:30
Definition: bank-interface.h:45
Definition: bank-issue-callbacks-interface.h:31
void set_miss_pattern(uint8_t miss_pattern) override
Definition: bank.h:139
Bank(MappableConfObject *dev_obj, const std::string &name, ByteOrder byte_order)
Definition: bank.h:72
virtual std::vector< uint8_t > read(uint64_t offset, size_t size, Inquiry inquiry=Inquiry::NonInquiry) const
void allocate_bank_memory(std::string_view name)
std::string_view name() const override
Definition: bank.h:113
Bank & operator=(const Bank &)=delete
exception_type_t transaction_access(transaction_t *t, uint64_t offset) override
Bank(MappableConfObject *dev_obj, const std::string &name)
Definition: bank.h:66
MappableConfObject * dev_obj() const override
Definition: bank.h:116
void add_register(const register_t ®) override
void add_register(std::string_view name, std::string_view desc, Offset offset, ByteSize number_of_bytes, InitValue init_value, const std::vector< field_t > &fields) override
virtual void unmapped_read(size_t offset, size_t size) const
unsigned number_of_registers() const override
Definition: bank.h:130
void set_callbacks(BankIssueCallbacksInterface *callbacks) override
Definition: bank.h:135
Bank & operator=(Bank &&rhs)
Definition: bank.h:95
ByteOrder get_byte_order() const override
Definition: bank.h:138
virtual void unmapped_write(size_t offset, size_t size) const
Bank(const Bank &)=delete
void set_description(std::string_view desc) override
Definition: bank.h:122
const std::string & description() const override
Definition: bank.h:119
std::pair< size_t, RegisterInterface * > register_at_index(unsigned index) const override
Bank(Bank &&rhs)
Definition: bank.h:83
const std::map< size_t, RegisterInterface * > & mapped_registers() const override
virtual void write(uint64_t offset, const std::vector< uint8_t > &value, size_t size, Inquiry inquiry=Inquiry::NonInquiry) const
Definition: hierarchical-object.h:43
void init_iface(BankInterface *iface)
Definition: hierarchical-object.h:113
HierarchicalObject & operator=(const HierarchicalObject &)=delete
std::string_view name() const override
Definition: hierarchical-object.h:147
const std::string & description() const override
Definition: hierarchical-object.h:156
void set_description(std::string_view desc) override
Definition: hierarchical-object.h:160
MappableConfObject * dev_obj() const override
Definition: hierarchical-object.h:177
Definition: mappable-conf-object.h:131
Definition: register-interface.h:36
Literal type that extends size_t type.
Definition: common-types.h:27
Definition: attr-value.h:23
std::unordered_map< Offset, uint8_t > bank_memory_t
Definition: bank-type.h:48
ByteOrder
Definition: bank-interface.h:34
std::pair< size_t, size_t > overlap_range(size_t r1_start, size_t r1_end, size_t r2_start, size_t r2_end)
std::tuple< Name, Description, Offset, ByteSize, InitValue, std::vector< field_t > > register_t
Definition: register-type.h:45
Inquiry
Definition: bank.h:47
Definition: common-types.h:63
Definition: bank-access.h:43