#ifndef MEM_HPP #define MEM_HPP #include #include #include "avalon.hpp" namespace taller::avalon { class mem : public slave { public: mem(std::uint32_t base, std::uint32_t size); virtual inline std::uint32_t base_address() noexcept final override { return base; } virtual inline std::uint32_t address_mask() noexcept final override { return mask; } virtual bool read(std::uint32_t addr, std::uint32_t &data) final override; virtual bool write(std::uint32_t addr, std::uint32_t data, unsigned byte_enable = 0b1111) final override; private: std::unique_ptr block; std::uint32_t base; std::uint32_t mask; }; } #endif