B.3.1. CADIBptRequest_t

The breakpoint request provides the PC address at which a breakpoint must occur and a string that describes the condition of the breakpoint. The target decides whether it can implement the breakpoint conditions.

Example B.24. CADIBptRequest_t

struct CADIBptRequest_t
{
public: // methods
        CADIBptRequest_t(const CADIAddrComplete_t address = CADIAddrComplete_t(),
                         uint64_t sizeOfAddressRange=0,
                         int32_t enabled=0,
                         const char *conditions_par = "",
                         bool useFormalCondition = 1,
                         CADIBptCondition_t formalCondition = CADIBptCondition_t(),
                         CADIBptType_t type = CADI_BPT_PROGRAM,
                             uint32_t regNumber = 0, 
                         int32_t temporary = false,
                         uint8_t triggerType = 0, 
                         uint32_t continueExecution = false) : 
                 address(address),
                 sizeOfAddressRange(sizeOfAddressRange),
                 enabled(enabled),
                 useFormalCondition(useFormalCondition),
                 formalCondition(formalCondition), type(type),
                 regNumber(regNumber),
                 temporary(temporary),
                 triggerType(triggerType),
                 continueExecution(continueExecution)
        {
            AssignString(conditions, conditions_par, CADI_DESCRIPTION_SIZE);
        }
public: // data
        CADIAddrComplete_t  address;    
        uint64_t            sizeOfAddressRange; 
        int32_t             enabled;           
        char                conditions[CADI_DESCRIPTION_SIZE]; 
        bool                useFormalCondition;   
        CADIBptCondition_t  formalCondition;  
        CADIBptType_t       type;   
        uint32_t            regNumber;   
        int32_t             temporary;   
        uint8_t             triggerType; 
        uint32_t            continueExecution;  
    };

Where:

address

is the PC address at which the breakpoint is to occur.

sizeOfAddressRange

is used only if type is CADI_BPT_PROGRAM_RANGE.

enabled

selects Enable/Disable breakpoint.

conditions

are the breakpoint conditions. Ultimately the target decides if it can implement breakpoint conditions.

useFormalCondition

if 0, use free-form conditions. If 1, use formalCondition.

formalCondition

are the formal conditions.

type

is the type.

regNumber

is only used for the register type.

temporary

specifies a temporary breakpoint.

triggerType

enables breakpoints that trigger only on read, write, or modify of the register or memory. Use the following defines to set the trigger:

  • CADI_BPT_TRIGGER_ON_READ triggers a breakpoint if the associated memory or register is read from by either a normal or debug read.

  • CADI_BPT_TRIGGER_ON_WRITE triggers a breakpoint if the associated memory or register is written to by either a normal or debug read.

  • CADI_BPT_TRIGGER_ON_MODIFY triggers a breakpoint if the value of the associated register/memory has been modified. This might be the result of an explicit register/memory access or (for example in case of registers/memory-mapped registers) of executing an instruction.

The trigger condition defines can be ORed together to make the breakpoint sensitive to more than one condition.

Note

triggerType only has meaning for CADI_BPT_REGISTER and CADI_BPT_MEMORY breakpoints:

  • The debugger must set this to zero for other breakpoint types.

  • Setting triggerType to zero for CADI_BPT_REGISTER and CADI_BPT_MEMORY results in undefined behavior and must not be done.

continueExecution

if 1, continue execution after breakpoint has been hit. This field must be obeyed by all types of breakpoints, including CADI_BPT_INST_STEP.

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