flash/nor/stm32l4x: Remove redundant error messages
[openocd.git] / src / target / breakpoints.h
blob64c0ce2a5ae1653b589e123eeb5fe55b2fff0243
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 /***************************************************************************
4 * Copyright (C) 2005 by Dominic Rath *
5 * Dominic.Rath@gmx.de *
6 ***************************************************************************/
8 #ifndef OPENOCD_TARGET_BREAKPOINTS_H
9 #define OPENOCD_TARGET_BREAKPOINTS_H
11 #include <stdint.h>
13 #include "helper/types.h"
15 struct target;
17 enum breakpoint_type {
18 BKPT_HARD,
19 BKPT_SOFT,
22 enum watchpoint_rw {
23 WPT_READ = 0, WPT_WRITE = 1, WPT_ACCESS = 2
26 struct breakpoint {
27 target_addr_t address;
28 uint32_t asid;
29 int length;
30 enum breakpoint_type type;
31 bool is_set;
32 unsigned int number;
33 uint8_t *orig_instr;
34 struct breakpoint *next;
35 uint32_t unique_id;
36 int linked_brp;
39 #define WATCHPOINT_IGNORE_DATA_VALUE_MASK (~(uint64_t)0)
41 struct watchpoint {
42 target_addr_t address;
43 uint32_t length;
44 uint64_t mask;
45 uint64_t value;
46 enum watchpoint_rw rw;
47 bool is_set;
48 unsigned int number;
49 struct watchpoint *next;
50 int unique_id;
53 int breakpoint_clear_target(struct target *target);
54 int breakpoint_add(struct target *target,
55 target_addr_t address, uint32_t length, enum breakpoint_type type);
56 int context_breakpoint_add(struct target *target,
57 uint32_t asid, uint32_t length, enum breakpoint_type type);
58 int hybrid_breakpoint_add(struct target *target,
59 target_addr_t address, uint32_t asid, uint32_t length, enum breakpoint_type type);
60 int breakpoint_remove(struct target *target, target_addr_t address);
61 int breakpoint_remove_all(struct target *target);
63 struct breakpoint *breakpoint_find(struct target *target, target_addr_t address);
65 static inline void breakpoint_hw_set(struct breakpoint *breakpoint, unsigned int hw_number)
67 breakpoint->is_set = true;
68 breakpoint->number = hw_number;
71 int watchpoint_clear_target(struct target *target);
72 int watchpoint_add(struct target *target,
73 target_addr_t address, uint32_t length,
74 enum watchpoint_rw rw, uint64_t value, uint64_t mask);
75 int watchpoint_remove(struct target *target, target_addr_t address);
76 int watchpoint_remove_all(struct target *target);
78 /* report type and address of just hit watchpoint */
79 int watchpoint_hit(struct target *target, enum watchpoint_rw *rw,
80 target_addr_t *address);
82 static inline void watchpoint_set(struct watchpoint *watchpoint, unsigned int number)
84 watchpoint->is_set = true;
85 watchpoint->number = number;
88 #define ERROR_BREAKPOINT_NOT_FOUND (-1600)
89 #define ERROR_WATCHPOINT_NOT_FOUND (-1601)
91 #endif /* OPENOCD_TARGET_BREAKPOINTS_H */