target: provide container_of()
[openocd.git] / src / target / arm7_9_common.h
index 68197b46d65c5c43b73e01f2f87cebb1c9d517ff..d86ac24dc92a50d7dc9602d59f185bbc5b6ada42 100644 (file)
@@ -46,6 +46,8 @@ typedef struct arm7_9_common_s
 
        uint32_t arm_bkpt; /**< ARM breakpoint instruction */
        uint16_t thumb_bkpt; /**< Thumb breakpoint instruction */
+       bool force_hw_bkpts;
+
        int sw_breakpoints_added; /**< Specifies which watchpoint software breakpoints are setup on */
        int sw_breakpoint_count; /**< keep track of number of software breakpoints we have set */
        int breakpoint_count; /**< Current number of set breakpoints */
@@ -54,23 +56,22 @@ typedef struct arm7_9_common_s
        int wp0_used; /**< Specifies if and how watchpoint unit 0 is used */
        int wp1_used; /**< Specifies if and how watchpoint unit 1 is used */
        int wp1_used_default; /**< Specifies if and how watchpoint unit 1 is used by default */
-       int force_hw_bkpts;
        int dbgreq_adjust_pc; /**< Amount of PC adjustment caused by a DBGREQ */
-       int use_dbgrq; /**< Specifies if DBGRQ should be used to halt the target */
-       int need_bypass_before_restart; /**< Specifies if there should be a bypass before a JTAG restart */
+       bool use_dbgrq; /**< Specifies if DBGRQ should be used to halt the target */
+       bool need_bypass_before_restart; /**< Specifies if there should be a bypass before a JTAG restart */
 
-       etm_context_t *etm_ctx;
+       bool has_single_step;
+       bool has_monitor_mode;
+       bool has_vector_catch; /**< Specifies if the target has a reset vector catch */
 
-       int has_single_step;
-       int has_monitor_mode;
-       int has_vector_catch; /**< Specifies if the target has a reset vector catch */
+       bool debug_entry_from_reset; /**< Specifies if debug entry was from a reset */
 
-       int debug_entry_from_reset; /**< Specifies if debug entry was from a reset */
+       bool fast_memory_access;
+       bool dcc_downloads;
 
-       struct working_area_s *dcc_working_area;
+       etm_context_t *etm_ctx;
 
-       int fast_memory_access;
-       int dcc_downloads;
+       struct working_area_s *dcc_working_area;
 
        int (*examine_debug_reason)(target_t *target); /**< Function for determining why debug state was entered */
 
@@ -101,7 +102,6 @@ typedef struct arm7_9_common_s
 
        void (*set_special_dbgrq)(target_t *target); /**< Function for setting DBGRQ if the normal way won't work */
 
-       void (*pre_debug_entry)(target_t *target); /**< Callback function called before entering debug mode */
        void (*post_debug_entry)(target_t *target); /**< Callback function called after entering debug mode */
 
        void (*pre_restore_context)(target_t *target); /**< Callback function called before restoring the processor context */
@@ -112,6 +112,13 @@ typedef struct arm7_9_common_s
 
 } arm7_9_common_t;
 
+static inline struct arm7_9_common_s *
+target_to_arm7_9(struct target_s *target)
+{
+       return container_of(target->arch_info, struct arm7_9_common_s,
+                       armv4_5_common);
+}
+
 int arm7_9_register_commands(struct command_context_s *cmd_ctx);
 
 int arm7_9_poll(target_t *target);

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)