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:
- The PC of the instruction that caused the watchpoint to hit.
- Virtual address of the access or sub-access that caused the watchpoint to hit.
- Size in bytes of the access or sub-access that caused the watchpoint to hit.
- 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.