gem5 v24.0.0.0
Loading...
Searching...
No Matches
gem5::RegisterBank< BankByteOrder > Class Template Reference

#include <reg_bank.hh>

Inheritance diagram for gem5::RegisterBank< BankByteOrder >:
gem5::RegisterBankBase

Classes

class  Register
 
class  RegisterAdder
 
class  RegisterBase
 
class  RegisterBuf
 
class  RegisterLBuf
 
class  RegisterRao
 
class  RegisterRaz
 
class  RegisterRoFill
 

Public Types

using Register8 = Register<uint8_t>
 
using Register8LE = Register<uint8_t, ByteOrder::little>
 
using Register8BE = Register<uint8_t, ByteOrder::big>
 
using Register16 = Register<uint16_t>
 
using Register16LE = Register<uint16_t, ByteOrder::little>
 
using Register16BE = Register<uint16_t, ByteOrder::big>
 
using Register32 = Register<uint32_t>
 
using Register32LE = Register<uint32_t, ByteOrder::little>
 
using Register32BE = Register<uint32_t, ByteOrder::big>
 
using Register64 = Register<uint64_t>
 
using Register64LE = Register<uint64_t, ByteOrder::little>
 
using Register64BE = Register<uint64_t, ByteOrder::big>
 

Public Member Functions

void setDebugFlag (const ::gem5::debug::SimpleFlag &flag)
 
constexpr RegisterBank (const std::string &new_name, Addr new_base)
 
virtual ~RegisterBank ()
 
void addRegisters (std::initializer_list< RegisterAdder > adders)
 
template<class FillerReg >
void addRegistersAt (std::initializer_list< RegisterAdder > adders)
 
void addRegister (RegisterAdder reg)
 
Addr base () const
 
Addr size () const
 
const std::string & name () const
 
virtual void read (Addr addr, void *buf, Addr bytes)
 
virtual void write (Addr addr, const void *buf, Addr bytes)
 
virtual void reset ()
 

Static Public Member Functions

template<typename Data >
static constexpr Data readWithMask (const Data &value, const Data &bitmask)
 
template<typename Data >
static constexpr Data writeWithMask (const Data &old, const Data &value, const Data &bitmask)
 

Private Attributes

std::map< Addr, std::reference_wrapper< RegisterBase > > _offsetMap
 
const ::gem5::debug::SimpleFlag_debug_flag = nullptr
 
Addr _base = 0
 
Addr _size = 0
 
const std::string _name
 
std::vector< std::unique_ptr< RegisterBase > > owned
 

Detailed Description

template<ByteOrder BankByteOrder>
class gem5::RegisterBank< BankByteOrder >

Definition at line 356 of file reg_bank.hh.

Member Typedef Documentation

◆ Register16

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register16 = Register<uint16_t>

Definition at line 919 of file reg_bank.hh.

◆ Register16BE

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register16BE = Register<uint16_t, ByteOrder::big>

Definition at line 921 of file reg_bank.hh.

◆ Register16LE

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register16LE = Register<uint16_t, ByteOrder::little>

Definition at line 920 of file reg_bank.hh.

◆ Register32

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register32 = Register<uint32_t>

Definition at line 922 of file reg_bank.hh.

◆ Register32BE

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register32BE = Register<uint32_t, ByteOrder::big>

Definition at line 924 of file reg_bank.hh.

◆ Register32LE

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register32LE = Register<uint32_t, ByteOrder::little>

Definition at line 923 of file reg_bank.hh.

◆ Register64

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register64 = Register<uint64_t>

Definition at line 925 of file reg_bank.hh.

◆ Register64BE

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register64BE = Register<uint64_t, ByteOrder::big>

Definition at line 927 of file reg_bank.hh.

◆ Register64LE

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register64LE = Register<uint64_t, ByteOrder::little>

Definition at line 926 of file reg_bank.hh.

◆ Register8

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register8 = Register<uint8_t>

Definition at line 916 of file reg_bank.hh.

◆ Register8BE

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register8BE = Register<uint8_t, ByteOrder::big>

Definition at line 918 of file reg_bank.hh.

◆ Register8LE

template<ByteOrder BankByteOrder>
using gem5::RegisterBank< BankByteOrder >::Register8LE = Register<uint8_t, ByteOrder::little>

Definition at line 917 of file reg_bank.hh.

Constructor & Destructor Documentation

◆ RegisterBank()

template<ByteOrder BankByteOrder>
gem5::RegisterBank< BankByteOrder >::RegisterBank ( const std::string & new_name,
Addr new_base )
inlineconstexpr

Definition at line 930 of file reg_bank.hh.

◆ ~RegisterBank()

template<ByteOrder BankByteOrder>
virtual gem5::RegisterBank< BankByteOrder >::~RegisterBank ( )
inlinevirtual

Definition at line 934 of file reg_bank.hh.

Member Function Documentation

◆ addRegister()

template<ByteOrder BankByteOrder>
void gem5::RegisterBank< BankByteOrder >::addRegister ( RegisterAdder reg)
inline

◆ addRegisters()

◆ addRegistersAt()

◆ base()

template<ByteOrder BankByteOrder>
Addr gem5::RegisterBank< BankByteOrder >::base ( ) const
inline

◆ name()

◆ read()

◆ readWithMask()

template<ByteOrder BankByteOrder>
template<typename Data >
static constexpr Data gem5::RegisterBank< BankByteOrder >::readWithMask ( const Data & value,
const Data & bitmask )
inlinestaticconstexpr

Definition at line 362 of file reg_bank.hh.

Referenced by gem5::RegisterBank< BankByteOrder >::writeWithMask().

◆ reset()

template<ByteOrder BankByteOrder>
virtual void gem5::RegisterBank< BankByteOrder >::reset ( )
inlinevirtual

Definition at line 1122 of file reg_bank.hh.

References gem5::RegisterBank< BankByteOrder >::_offsetMap.

◆ setDebugFlag()

template<ByteOrder BankByteOrder>
void gem5::RegisterBank< BankByteOrder >::setDebugFlag ( const ::gem5::debug::SimpleFlag & flag)
inline

Definition at line 900 of file reg_bank.hh.

References gem5::RegisterBank< BankByteOrder >::_debug_flag.

◆ size()

template<ByteOrder BankByteOrder>
Addr gem5::RegisterBank< BankByteOrder >::size ( ) const
inline

◆ write()

◆ writeWithMask()

template<ByteOrder BankByteOrder>
template<typename Data >
static constexpr Data gem5::RegisterBank< BankByteOrder >::writeWithMask ( const Data & old,
const Data & value,
const Data & bitmask )
inlinestaticconstexpr

Member Data Documentation

◆ _base

template<ByteOrder BankByteOrder>
Addr gem5::RegisterBank< BankByteOrder >::_base = 0
private

◆ _debug_flag

template<ByteOrder BankByteOrder>
const ::gem5::debug::SimpleFlag* gem5::RegisterBank< BankByteOrder >::_debug_flag = nullptr
private

◆ _name

template<ByteOrder BankByteOrder>
const std::string gem5::RegisterBank< BankByteOrder >::_name
private

Definition at line 911 of file reg_bank.hh.

Referenced by gem5::RegisterBank< BankByteOrder >::name().

◆ _offsetMap

◆ _size

template<ByteOrder BankByteOrder>
Addr gem5::RegisterBank< BankByteOrder >::_size = 0
private

◆ owned

template<ByteOrder BankByteOrder>
std::vector<std::unique_ptr<RegisterBase> > gem5::RegisterBank< BankByteOrder >::owned
private

Definition at line 912 of file reg_bank.hh.

Referenced by gem5::RegisterBank< BankByteOrder >::addRegistersAt().


The documentation for this class was generated from the following file:

Generated on Tue Jun 18 2024 16:24:13 for gem5 by doxygen 1.11.0