gem5
v22.1.0.0
|
#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)> |
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)) |
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 |
![]() | |
constexpr | RegisterBase (const std::string &new_name, size_t new_size) |
virtual | ~RegisterBase () |
virtual const std::string & | name () const |
size_t | size () const |
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) |
Private Attributes | |
Data | _data = {} |
Data | _writeMask = mask(sizeof(Data) * 8) |
ReadFunc | _reader = defaultReader |
WriteFunc | _writer = defaultWriter |
PartialWriteFunc | _partialWriter = defaultPartialWriter |
PartialReadFunc | _partialReader = defaultPartialReader |
Additional Inherited Members | |
![]() | |
const std::string | _name |
size_t | _size = 0 |
Definition at line 507 of file reg_bank.hh.
using gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::PartialReadFunc = std::function< Data (This ®, int first, int last)> |
Definition at line 514 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 517 of file reg_bank.hh.
using gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::ReadFunc = std::function<Data (This ®)> |
Definition at line 513 of file reg_bank.hh.
|
protected |
Definition at line 510 of file reg_bank.hh.
using gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::WriteFunc = std::function<void (This ®, const Data &value)> |
Definition at line 516 of file reg_bank.hh.
|
inlineconstexpr |
Definition at line 584 of file reg_bank.hh.
|
inlineconstexpr |
Definition at line 589 of file reg_bank.hh.
|
inlineconstexpr |
Definition at line 592 of file reg_bank.hh.
|
inlinestaticprotected |
Definition at line 533 of file reg_bank.hh.
References gem5::mbits(), and gem5::X86ISA::reg.
|
inlinestaticprotected |
Definition at line 545 of file reg_bank.hh.
References gem5::mask(), and gem5::X86ISA::reg.
|
inlinestaticprotected |
Definition at line 530 of file reg_bank.hh.
References gem5::X86ISA::reg.
|
inlinestaticprotected |
Definition at line 539 of file reg_bank.hh.
References gem5::X86ISA::reg.
|
inline |
Definition at line 693 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_data.
|
inline |
Definition at line 692 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 552 of file reg_bank.hh.
References data, gem5::htobe(), gem5::htole(), and panic.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::read().
|
inlineconstexpr |
Definition at line 653 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 660 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::partialReader().
|
inlineconstexpr |
Definition at line 668 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 675 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 716 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 723 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 612 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 619 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::reader().
|
inlineconstexpr |
Definition at line 606 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::writeable().
|
inlineconstexprprotected |
Definition at line 565 of file reg_bank.hh.
References gem5::betoh(), data, gem5::letoh(), and panic.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::write().
|
inlineoverridevirtual |
Implements gem5::RegisterBank< BankByteOrder >::RegisterBase.
Definition at line 767 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 773 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::get(), and gem5::VegaISA::s.
|
inline |
|
inline |
Definition at line 697 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 739 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 748 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 689 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 599 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_writeMask.
|
inlineconstexpr |
Definition at line 627 of file reg_bank.hh.
References gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::_writer.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::writer().
|
inlineconstexpr |
Definition at line 634 of file reg_bank.hh.
References gem5::X86ISA::nw, and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::writer().
|
private |
Definition at line 521 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::get(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::update().
|
private |
Definition at line 527 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 526 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 524 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 522 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::update(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::writeable().
|
private |
Definition at line 525 of file reg_bank.hh.
Referenced by gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::write(), and gem5::RegisterBank< BankByteOrder >::Register< Data, RegByteOrder >::writer().