CADI sync watchpoints
The CADI/Synchronous CADI (SCADI) interfaces of processor components support watchpoints. Memory components like RAMDevice do not.
When the simulator hits a watchpoint, the CADI/SCADI interface
emits a sequence, typically only one, of modeChange(CADI_EXECMODE_Bpt,
bptNumber)
callbacks, where bptNumber
is
the breakpoint ID of the watchpoint. After this sequence it sends
a modeChange(CADI_EXECMODE_Stop)
callback.
Only after the debugger receives this Stop
callback
might it inspect the state of the model.
You can read additional information about the last of the hit watchpoints
from these CADI registers declared by the processor in register group Simulation
:
memoryBptPC
- The PC of the instruction that caused the watchpoint to hit.
memoryBptAccessVA
- Virtual address of the access or sub-access that caused the watchpoint to hit.
memoryBptAccessSize
- Size in bytes of the access or sub-access that caused the watchpoint to hit.
memoryBptAccessRW
- Type of access or sub-access that caused the watchpoint to hit: 1 = read, 2 = write, 3 = both, 0 = no access.
These registers are not memory (or CPnn-) mapped anywhere and are not
accessible to target programs. These registers are read-only. memoryBptPC
and memoryBptAccessVA
are 32 or 64 bit depending on the architecture.
memoryBptAccessSize
and memoryBptAccessRW
are 32
bit.
When multiple accesses have hit watchpoints at the same time, for example during the same instruction, the information contained in these registers is valid and consistent only for one of these accesses.
Whenever at least one CADI watchpoint is set on a processor, the syncLevel on that processor is at least 2.