|
gem5 v23.0.0.1
|
#include <reg_bank.hh>
Public Types | |
| using | ReadFunc = std::function< Data(This ®)> |
| using | PartialReadFunc = std::function< Data(This ®, int first, int last)> |
| using | WriteFunc = std::function< void(This ®, const Data &value)> |
| using | PartialWriteFunc = std::function< void(This ®, const Data &value, int first, int last)> |
| using | ResetFunc = std::function< void(This ®)> |
Public Member Functions | |
| constexpr | Register (const std::string &new_name) |
| constexpr | Register (const std::string &new_name, const Data &new_data) |
| constexpr | Register (const std::string &new_name, const Data &&new_data) |
| constexpr This & | writeable (const Data &new_mask) |
| constexpr This & | readonly () |
| constexpr This & | reader (const ReadFunc &new_reader) |
| template<class Parent , class... Args> | |
| constexpr This & | reader (Parent *parent, Data(Parent::*nr)(Args... args)) |
| constexpr This & | writer (const WriteFunc &new_writer) |
| template<class Parent , class... Args> | |
| constexpr This & | writer (Parent *parent, void(Parent::*nw)(Args... args)) |
| constexpr This & | partialReader (const PartialReadFunc &new_reader) |
| template<class Parent , class... Args> | |
| constexpr This & | partialReader (Parent *parent, Data(Parent::*nr)(Args... args)) |
| constexpr This & | partialWriter (const PartialWriteFunc &new_writer) |
| template<class Parent , class... Args> | |
| constexpr This & | partialWriter (Parent *parent, void(Parent::*nw)(Args... args)) |
| constexpr This & | resetter (const ResetFunc &new_resetter) |
| template<class Parent , class... Args> | |
| constexpr This & | resetter (Parent *parent, void(Parent::*nr)(Args... args)) |
| const Data & | initialValue () const |
| void | resetInitialValue () |
| const Data & | writeable () const |
| const Data & | get () const |
| Data & | get () |
| void | update (const Data &new_data, const Data &bitmask) |
| void | update (const Data &new_data) |
| void | read (void *buf) override |
| void | read (void *buf, off_t offset, size_t bytes) override |
| void | write (const void *buf) override |
| void | write (const void *buf, off_t offset, size_t bytes) override |
| void | serialize (std::ostream &os) const override |
| bool | unserialize (const std::string &s) override |
| void | reset () override |
Public Member Functions inherited from gem5::RegisterBank< BankByteOrder >::RegisterBase | |
| constexpr | RegisterBase (const std::string &new_name, size_t new_size) |
| virtual | ~RegisterBase () |
| virtual const std::string & | name () const |
| size_t | size () const |
| virtual void | read (void *buf)=0 |
| virtual void | read (void *buf, off_t offset, size_t bytes)=0 |
| virtual void | write (const void *buf)=0 |
| virtual void | write (const void *buf, off_t offset, size_t bytes)=0 |
| virtual void | serialize (std::ostream &os) const =0 |
| virtual bool | unserialize (const std::string &s)=0 |
| virtual void | reset ()=0 |
Protected Types | |
| using | This = Register< Data, RegByteOrder > |
Protected Member Functions | |
| constexpr Data | htoreg (Data data) |
| constexpr Data | regtoh (Data data) |
Static Protected Member Functions | |
| static Data | defaultReader (This ®) |
| static Data | defaultPartialReader (This ®, int first, int last) |
| static void | defaultWriter (This ®, const Data &value) |
| static void | defaultPartialWriter (This ®, const Data &value, int first, int last) |
| static void | defaultResetter (This ®) |
Private Attributes | |
| Data | _data = {} |
| Data | _resetData = {} |
| Data | _writeMask = mask(sizeof(Data) * 8) |
| ReadFunc | _reader = defaultReader |
| WriteFunc | _writer = defaultWriter |
| PartialWriteFunc | _partialWriter = defaultPartialWriter |
| PartialReadFunc | _partialReader = defaultPartialReader |
| ResetFunc | _resetter = defaultResetter |
Additional Inherited Members | |
Protected Attributes inherited from gem5::RegisterBank< BankByteOrder >::RegisterBase | |
| const std::string | _name |
| size_t | _size = 0 |
Definition at line 551 of file reg_bank.hh.
| using gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::PartialReadFunc = std::function< Data (This ®, int first, int last)> |
Definition at line 558 of file reg_bank.hh.
| using gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::PartialWriteFunc = std::function< void (This ®, const Data &value, int first, int last)> |
Definition at line 561 of file reg_bank.hh.
| using gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::ReadFunc = std::function<Data (This ®)> |
Definition at line 557 of file reg_bank.hh.
| using gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::ResetFunc = std::function<void (This ®)> |
Definition at line 563 of file reg_bank.hh.
|
protected |
Definition at line 554 of file reg_bank.hh.
| using gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::WriteFunc = std::function<void (This ®, const Data &value)> |
Definition at line 560 of file reg_bank.hh.
|
inlineconstexpr |
Definition at line 637 of file reg_bank.hh.
|
inlineconstexpr |
Definition at line 642 of file reg_bank.hh.
|
inlineconstexpr |
Definition at line 646 of file reg_bank.hh.
|
inlinestaticprotected |
Definition at line 580 of file reg_bank.hh.
References gem5::mbits(), and gem5::X86ISA::reg.
|
inlinestaticprotected |
Definition at line 592 of file reg_bank.hh.
References gem5::ArmISA::mask, and gem5::X86ISA::reg.
|
inlinestaticprotected |
Definition at line 577 of file reg_bank.hh.
References gem5::X86ISA::reg.
|
inlinestaticprotected |
Definition at line 599 of file reg_bank.hh.
References gem5::X86ISA::reg.
|
inlinestaticprotected |
Definition at line 586 of file reg_bank.hh.
References gem5::X86ISA::reg.
|
inline |
Definition at line 775 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_data.
|
inline |
Definition at line 774 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_data.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::serialize(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::unserialize().
|
inlineconstexprprotected |
Definition at line 605 of file reg_bank.hh.
References data, gem5::htobe(), gem5::htole(), and panic.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::read(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::read().
|
inline |
Definition at line 760 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_resetData.
|
inlineconstexpr |
Definition at line 708 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_partialReader.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::partialReader().
|
inlineconstexpr |
Definition at line 715 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::partialReader().
|
inlineconstexpr |
Definition at line 723 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_partialWriter.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::partialWriter().
|
inlineconstexpr |
Definition at line 730 of file reg_bank.hh.
References gem5::X86ISA::nw, and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::partialWriter().
|
inlineoverridevirtual |
Implements gem5::RegisterBank< BankByteOrder >::RegisterBase.
Definition at line 798 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_reader, data, and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::htoreg().
|
inlineoverridevirtual |
Implements gem5::RegisterBank< BankByteOrder >::RegisterBase.
Definition at line 805 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_partialReader, data, gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::htoreg(), and gem5::ArmISA::offset.
|
inlineconstexpr |
Definition at line 667 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_reader.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::reader().
|
inlineconstexpr |
Definition at line 674 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::reader().
|
inlineconstexpr |
Definition at line 661 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::writeable().
|
inlineconstexprprotected |
Definition at line 618 of file reg_bank.hh.
References gem5::betoh(), data, gem5::letoh(), and panic.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::write(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::write().
|
inlineoverridevirtual |
Implements gem5::RegisterBank< BankByteOrder >::RegisterBase.
Definition at line 861 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_resetter.
|
inline |
Definition at line 764 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_data, and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_resetData.
|
inlineconstexpr |
Definition at line 743 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_resetter.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::resetter().
|
inlineconstexpr |
Definition at line 750 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::resetter().
|
inlineoverridevirtual |
Implements gem5::RegisterBank< BankByteOrder >::RegisterBase.
Definition at line 849 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::get(), gem5::X86ISA::os, and gem5::ShowParam< T, Enabled >::show().
|
inlineoverridevirtual |
Implements gem5::RegisterBank< BankByteOrder >::RegisterBase.
Definition at line 855 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::get(), and gem5::ArmISA::s.
|
inline |
|
inline |
Definition at line 779 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_data, and gem5::RegisterBank< BankByteOrder >::writeWithMask().
|
inlineoverridevirtual |
Implements gem5::RegisterBank< BankByteOrder >::RegisterBase.
Definition at line 821 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_writer, data, and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::regtoh().
|
inlineoverridevirtual |
Implements gem5::RegisterBank< BankByteOrder >::RegisterBase.
Definition at line 830 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_partialWriter, data, gem5::ArmISA::offset, and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::regtoh().
|
inline |
Definition at line 771 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_writeMask.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::readonly().
|
inlineconstexpr |
Definition at line 654 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_writeMask.
|
inlineconstexpr |
Definition at line 682 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_writer.
|
inlineconstexpr |
Definition at line 689 of file reg_bank.hh.
References gem5::X86ISA::nw.
|
private |
Definition at line 566 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::get(), gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::get(), gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::resetInitialValue(), gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::update(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::update().
|
private |
Definition at line 573 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::partialReader(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::read().
|
private |
Definition at line 572 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::partialWriter(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::write().
|
private |
Definition at line 570 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::read(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::reader().
|
private |
Definition at line 567 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::initialValue(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::resetInitialValue().
|
private |
Definition at line 574 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::reset(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::resetter().
|
private |
Definition at line 568 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::update(), gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::writeable(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::writeable().
|
private |
Definition at line 571 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::write(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::writer().