ARMv7-M: make DAP commands verify target is an ARMv7-M
[openocd.git] / src / target / target.h
index 06105ee6d60128d84452de6ebea5afd79b19c6d3..da91d464c8db02346a3225ead10b54e405b2cd38 100644 (file)
@@ -2,7 +2,7 @@
  *   Copyright (C) 2005 by Dominic Rath                                    *
  *   Dominic.Rath@gmx.de                                                   *
  *                                                                         *
- *   Copyright (C) 2007,2008,2009 Øyvind Harboe                            *
+ *   Copyright (C) 2007-9 Øyvind Harboe                                    *
  *   oyvind.harboe@zylin.com                                               *
  *                                                                         *
  *   Copyright (C) 2008 by Spencer Oliver                                  *
 #ifndef TARGET_H
 #define TARGET_H
 
-#include <stddef.h>
-
-#include "algorithm.h"
-#include "command.h"
+#include <helper/types.h>
 
 struct reg;
 struct trace;
 struct command_context;
 struct breakpoint;
 struct watchpoint;
+struct mem_param;
+struct reg_param;
 
 
-/**
- * Cast a member of a structure out to the containing structure.
- * @param ptr The pointer to the member.
- * @param type The type of the container struct this is embedded in.
- * @param member The name of the member within the struct.
- *
- * This is a mechanism which is used throughout the Linux kernel.
- */
-#define container_of(ptr, type, member) ({                     \
-       const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
-       (type *)( (char *)__mptr - offsetof(type,member) );})
-
 /*
  * TARGET_UNKNOWN = 0: we don't know anything about the target yet
  * TARGET_RUNNING = 1: the target is executing user code
@@ -73,15 +60,11 @@ enum target_state
        TARGET_DEBUG_RUNNING = 4,
 };
 
-extern const Jim_Nvp nvp_target_state[];
-
 enum nvp_assert {
        NVP_DEASSERT,
        NVP_ASSERT,
 };
 
-extern const Jim_Nvp nvp_assert[];
-
 enum target_reset_mode
 {
        RESET_UNKNOWN = 0,
@@ -90,8 +73,6 @@ enum target_reset_mode
        RESET_INIT = 3,         /* reset and halt target out of reset, then run init script */
 };
 
-extern const Jim_Nvp nvp_reset_mode[];
-
 enum target_debug_reason
 {
        DBG_REASON_DBGRQ = 0,
@@ -103,16 +84,12 @@ enum target_debug_reason
        DBG_REASON_UNDEFINED = 6
 };
 
-extern const Jim_Nvp nvp_target_debug_reason[];
-
 enum target_endianess
 {
        TARGET_ENDIAN_UNKNOWN = 0,
        TARGET_BIG_ENDIAN = 1, TARGET_LITTLE_ENDIAN = 2
 };
 
-extern const Jim_Nvp nvp_target_endian[];
-
 struct working_area
 {
        uint32_t address;
@@ -171,6 +148,14 @@ struct target
        long long halt_issued_time;                     /* Note time when halt was issued */
 };
 
+/** Returns the instance-specific name of the specified target. */
+static inline const char *target_name(struct target *target)
+{
+       return target->cmd_name;
+}
+
+const char *debug_reason_name(struct target *t);
+
 enum target_event
 {
        /* LD historical names
@@ -178,8 +163,6 @@ enum target_event
         * - June/July/Aug 2008
         * - Duane Ellis */
        TARGET_EVENT_OLD_gdb_program_config,
-       TARGET_EVENT_OLD_pre_reset,
-       TARGET_EVENT_OLD_post_reset,
        TARGET_EVENT_OLD_pre_resume,
 
        /* allow GDB to do stuff before others handle the halted event,
@@ -202,6 +185,7 @@ enum target_event
 
        TARGET_EVENT_RESET_START,
        TARGET_EVENT_RESET_ASSERT_PRE,
+       TARGET_EVENT_RESET_ASSERT,      /* C code uses this instead of SRST */
        TARGET_EVENT_RESET_ASSERT_POST,
        TARGET_EVENT_RESET_DEASSERT_PRE,
        TARGET_EVENT_RESET_DEASSERT_POST,
@@ -229,10 +213,13 @@ enum target_event
 
 struct target_event_action {
        enum target_event event;
-       Jim_Obj *body;
+       struct Jim_Interp *interp;
+       struct Jim_Obj *body;
        int has_percent;
        struct target_event_action *next;
- };
+};
+
+bool target_has_event_action(struct target *target, enum target_event event);
 
 struct target_event_callback
 {
@@ -255,7 +242,6 @@ int target_register_commands(struct command_context *cmd_ctx);
 int target_register_user_commands(struct command_context *cmd_ctx);
 int target_init(struct command_context *cmd_ctx);
 int target_examine(void);
-int handle_target(void *priv);
 int target_process_reset(struct command_context *cmd_ctx,
                enum target_reset_mode reset_mode);
 
@@ -292,11 +278,12 @@ struct target* get_current_target(struct command_context *cmd_ctx);
 struct target *get_target(const char *id);
 
 /**
- * Get the target name.
+ * Get the target type name.
  *
  * This routine is a wrapper for the target->type->name field.
+ * Note that this is not an instance-specific name for his target.
  */
-const char *target_get_name(struct target *target);
+const char *target_type_name(struct target *target);
 
 /**
  * Examine the specified @a target, letting it perform any
@@ -494,8 +481,8 @@ void target_all_handle_event(enum target_event e);
 #define ERROR_TARGET_NOT_RUNNING (-310)
 #define ERROR_TARGET_NOT_EXAMINED (-311)
 
-extern const Jim_Nvp nvp_error_target[];
-
 const char *target_strerror_safe(int err);
 
+extern bool get_target_reset_nag(void);
+
 #endif /* TARGET_H */

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)