target/cortex_a: add support for watchpoints
The current implementation of OpenOCD does not support watchpoints for cortex_a architecture. So, I replaced the add_watchpoint and remove_watchpoint with the specific implementation for the cortex a and using the breakpoint implementation and the arm documentation [1] as reference. In particular, I have made the following changes: * added the following functions - cortex_a_add_watchpoint This wrapper function check whether there are any watchpoint available on the target device by calling cortex_a_set_watchpoint. - cortex_a_set_watchpoint This function is responsible for settings the watchpoint register pair. In particular, it sets the WVR and the WCR registers with the cortex_a_dap command. - cortex_a_remove_watchpoint This wrapper function the selected watchpoint on the target device by calling cortex_a_unset_watchpoint. - cortex_a_unset_watchpoint This function sets both the WVR and the WCR registers to zero, thus unsetting the watchpoint. [1] http://infocenter.arm.com/help/topic/com.arm.doc.ddi0464f/BCGDHIEJ.html Change-Id: I86611dab474cb84836662af572b17636dc68e282 Signed-off-by: Chengyu Zheng <chengyu.zheng@polimi.it> Reviewed-on: http://openocd.zylin.com/3913 Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-by: Marc Schink <dev@zapb.de> Tested-by: jenkins
This commit is contained in:
committed by
Antonio Borneo
parent
b40dc09dd9
commit
1fb736f6c5
@@ -1088,9 +1088,11 @@ int arm_dpm_setup(struct arm_dpm *dpm)
|
||||
target->type->remove_breakpoint = dpm_remove_breakpoint;
|
||||
}
|
||||
|
||||
/* watchpoint setup */
|
||||
target->type->add_watchpoint = dpm_add_watchpoint;
|
||||
target->type->remove_watchpoint = dpm_remove_watchpoint;
|
||||
/* watchpoint setup -- optional until it works everywhere */
|
||||
if (!target->type->add_watchpoint) {
|
||||
target->type->add_watchpoint = dpm_add_watchpoint;
|
||||
target->type->remove_watchpoint = dpm_remove_watchpoint;
|
||||
}
|
||||
|
||||
/* FIXME add vector catch support */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user