B.2.2. CADIRegInfo_t

This structure defines information about a register.

Example B.11. CADIRegInfo_t

struct CADIRegInfo_t 
{ 
public: // methods 
    CADIRegInfo_t(const char *name_par = "",
                  const char *description_par = "", 
                  uint32_t regNumber = 0,
                  uint32_t bitsWide = 0, 
                  int32_t hasSideEffects = 0, 
                  CADIRegDetails_t details = CADIRegDetails_t(), 
                  CADIRegDisplay_t display = CADI_REGTYPE_HEX, 
                  CADIRegSymbols_t symbols = CADIRegSymbols_t(), 
                  CADIRegFloatFormat_t fpFormat = CADIRegFloatFormat_t(), 
                  uint32_t lsbOffset = 0, uint32_t dwarfIndex = ~0U, 
                  bool isProfiled = false, bool isPipeStageField = false, 
                  uint32_t threadID = 0, 
                  CADIRegAccessAttribute_t attribute = CADI_REG_READ_WRITE, 
                  uint32_t canonicalRegisterNumber_ = 0): 
            regNumber(regNumber),
            bitsWide(bitsWide), 
            hasSideEffects(hasSideEffects),
            details(details),
            display(display), 
            symbols(symbols),
            fpFormat(fpFormat),
            lsbOffset(lsbOffset), 
            dwarfIndex(dwarfIndex),
            isProfiled(isProfiled), 
            isPipeStageField(isPipeStageField),
            threadID(threadID), 
            attribute(attribute),
            canonicalRegisterNumber(canonicalRegisterNumber_) 
        { 
            AssignString(name, name_par, CADI_NAME_SIZE); 
            AssignString(description, description_par, CADI_DESCRIPTION_SIZE); 
        } 
 
public: // data 
        char              name[CADI_NAME_SIZE]; 
        char              description[CADI_DESCRIPTION_SIZE]; 
        uint32_t          regNumber;
        uint32_t          bitsWide; 
        int32_t           hasSideEffects; 
        CADIRegDetails_t  details; 
        CADIRegDisplay_t  display; 
        CADIRegSymbols_t  symbols;  
        CADIRegFloatFormat_t  fpFormat; 
        uint32_t          lsbOffset;  
        enum { CADI_REGINFO_NO_DWARF_INDEX = 0xffffffff }; 
        uint32_t          dwarfIndex; 
        bool              isPipeStageField; 
        uint32_t          threadID;  
        CADIRegAccessAttribute_t attribute; 
        uint32_t          canonicalRegisterNumber;
 
};

Where:

name

are the names in the info array.

description

are the descriptions in the array.

regNumber

is the register ID. Used by read/write functions to identify the register.

bitsWide

is the bitwidth of non-string register. Ignored for string registers (targets must specify 0 for string registers).

hasSideEffects

is reserved. Targets must set this to 0 for all registers.

details

is of type CADIRegDetails_t, and used to form the Register/SubRegister/SubSubRegister hierarchy. It has two fields:

  • Simple (contains no subregisters).

  • Compound (contains subregisters).

The two register types work with CADIRegGetCompound() CADI::CADIRegGetCompound().

display

is the display format. The default is "HEX".

symbols

used for type "symbolic" only.

fpFormat

used for type "float" only.

lsbOffset

is the offset of the least significant bit relative to bit 0 in the parent register (or 0 if there is no parent).

dwarfIndex

is the DWARF register index or CADI_REGINFO_NO_DWARF_INDEX if register has no DWARF register index).

isProfiled

indicates that profiling info is available.

isPipeStageField

is pipe stage field, also true for pc and contentInfoRegisterId in CADIPipeStage_t.

threadID

is the hardware thread ID, always set to 0.

attribute

are the register access attributes.

canonicalRegisterNumber

is the canonical register number as defined by the scheme specified in CADITargetFeatures_t::canonicalRegisterDescription. If the scheme is the empty string then no meaning can be ascribed to this field.

Copyright © 2008-2014 ARM. All rights reserved.ARM DUI 0444M
Non-ConfidentialID051314