gem5  v21.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
RegisterBank< BankByteOrder > Class Template Reference

#include <reg_bank.hh>

Inheritance diagram for RegisterBank< BankByteOrder >:
RegisterBankBase Plic::PlicRegisters Uart8250::Registers

Classes

class  Register
 
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

constexpr RegisterBank (const std::string &new_name, Addr new_base)
 
virtual ~RegisterBank ()
 
void addRegisters (std::initializer_list< std::reference_wrapper< RegisterBase >> regs)
 
void addRegister (RegisterBase &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)
 

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
 
Addr _base = 0
 
Addr _size = 0
 
const std::string _name
 

Detailed Description

template<ByteOrder BankByteOrder>
class RegisterBank< BankByteOrder >

Definition at line 295 of file reg_bank.hh.

Member Typedef Documentation

◆ Register16

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

Definition at line 769 of file reg_bank.hh.

◆ Register16BE

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

Definition at line 771 of file reg_bank.hh.

◆ Register16LE

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

Definition at line 770 of file reg_bank.hh.

◆ Register32

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

Definition at line 772 of file reg_bank.hh.

◆ Register32BE

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

Definition at line 774 of file reg_bank.hh.

◆ Register32LE

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

Definition at line 773 of file reg_bank.hh.

◆ Register64

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

Definition at line 775 of file reg_bank.hh.

◆ Register64BE

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

Definition at line 777 of file reg_bank.hh.

◆ Register64LE

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

Definition at line 776 of file reg_bank.hh.

◆ Register8

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

Definition at line 766 of file reg_bank.hh.

◆ Register8BE

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

Definition at line 768 of file reg_bank.hh.

◆ Register8LE

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

Definition at line 767 of file reg_bank.hh.

Constructor & Destructor Documentation

◆ RegisterBank()

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

Definition at line 780 of file reg_bank.hh.

◆ ~RegisterBank()

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

Definition at line 784 of file reg_bank.hh.

Member Function Documentation

◆ addRegister()

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

Definition at line 798 of file reg_bank.hh.

Referenced by Plic::PlicRegisters::init(), and TEST_F().

◆ addRegisters()

template<ByteOrder BankByteOrder>
void RegisterBank< BankByteOrder >::addRegisters ( std::initializer_list< std::reference_wrapper< RegisterBase >>  regs)
inline

◆ base()

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

◆ name()

template<ByteOrder BankByteOrder>
const std::string& RegisterBank< BankByteOrder >::name ( ) const
inline

◆ read()

template<ByteOrder BankByteOrder>
virtual void RegisterBank< BankByteOrder >::read ( Addr  addr,
void *  buf,
Addr  bytes 
)
inlinevirtual

Definition at line 805 of file reg_bank.hh.

Referenced by X86ISA::I8237::read(), Clint::read(), Plic::read(), Uart8250::read(), and TEST_F().

◆ readWithMask()

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

Definition at line 301 of file reg_bank.hh.

Referenced by RegisterBank< ByteOrder::little >::writeWithMask().

◆ size()

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

◆ write()

template<ByteOrder BankByteOrder>
virtual void RegisterBank< BankByteOrder >::write ( Addr  addr,
const void *  buf,
Addr  bytes 
)
inlinevirtual

Definition at line 862 of file reg_bank.hh.

Referenced by TEST_F(), X86ISA::I8237::write(), Clint::write(), Plic::write(), and Uart8250::write().

◆ writeWithMask()

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

Member Data Documentation

◆ _base

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

◆ _name

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

Definition at line 762 of file reg_bank.hh.

Referenced by RegisterBank< ByteOrder::little >::name().

◆ _offsetMap

template<ByteOrder BankByteOrder>
std::map<Addr, std::reference_wrapper<RegisterBase> > RegisterBank< BankByteOrder >::_offsetMap
private

◆ _size

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

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

Generated on Tue Mar 23 2021 19:41:39 for gem5 by doxygen 1.8.17