- char *name;
-
- int examined;
-
- /* poll current target status */
- int (*poll)(struct target_s *target);
- /* Invoked only from target_arch_state().
- * Issue USER() w/architecture specific status. */
- int (*arch_state)(struct target_s *target);
-
- /* target request support */
- int (*target_request_data)(struct target_s *target, u32 size, u8 *buffer);
-
- /* halt will log a warning, but return ERROR_OK if the target is already halted. */
- int (*halt)(struct target_s *target);
- int (*resume)(struct target_s *target, int current, u32 address, int handle_breakpoints, int debug_execution);
- int (*step)(struct target_s *target, int current, u32 address, int handle_breakpoints);
-
- /* target reset control. assert reset can be invoked when OpenOCD and
- * the target is out of sync.
- *
- * A typical example is that the target was power cycled while OpenOCD
- * thought the target was halted or running.
- *
- * assert_reset() can therefore make no assumptions whatsoever about the
- * state of the target
- *
- * Before assert_reset() for the target is invoked, a TRST/tms and
- * chain validation is executed. TRST should not be asserted
- * during target assert unless there is no way around it due to
- * the way reset's are configured.
- *
- */
- int (*assert_reset)(struct target_s *target);
- int (*deassert_reset)(struct target_s *target);
- int (*soft_reset_halt_imp)(struct target_s *target);
- int (*soft_reset_halt)(struct target_s *target);
-
- /* target register access for gdb.
- *
- * Danger! this function will succeed even if the target is running
- * and return a register list with dummy values.
- *
- * The reason is that GDB connection will fail without a valid register
- * list, however it is after GDB is connected that monitor commands can
- * be run to properly initialize the target
- */
- int (*get_gdb_reg_list)(struct target_s *target, struct reg_s **reg_list[], int *reg_list_size);
-
- /* target memory access
- * size: 1 = byte (8bit), 2 = half-word (16bit), 4 = word (32bit)
- * count: number of items of <size>
- */
- int (*read_memory_imp)(struct target_s *target, u32 address, u32 size, u32 count, u8 *buffer);
- int (*read_memory)(struct target_s *target, u32 address, u32 size, u32 count, u8 *buffer);
- int (*write_memory_imp)(struct target_s *target, u32 address, u32 size, u32 count, u8 *buffer);
- int (*write_memory)(struct target_s *target, u32 address, u32 size, u32 count, u8 *buffer);
-
- /* write target memory in multiples of 4 byte, optimized for writing large quantities of data */
- int (*bulk_write_memory)(struct target_s *target, u32 address, u32 count, u8 *buffer);
-
- int (*checksum_memory)(struct target_s *target, u32 address, u32 count, u32* checksum);
- int (*blank_check_memory)(struct target_s *target, u32 address, u32 count, u32* blank);
-
- /*
- * target break-/watchpoint control
- * rw: 0 = write, 1 = read, 2 = access
- *
- * Target must be halted while this is invoked as this
- * will actually set up breakpoints on target.
- *
- * The breakpoint hardware will be set up upon adding the first breakpoint.
- *
- * Upon GDB connection all breakpoints/watchpoints are cleared.
- */
- int (*add_breakpoint)(struct target_s *target, breakpoint_t *breakpoint);
-
- /* remove breakpoint. hw will only be updated if the target is currently halted.
- * However, this method can be invoked on unresponsive targets.
- */
- int (*remove_breakpoint)(struct target_s *target, breakpoint_t *breakpoint);
- int (*add_watchpoint)(struct target_s *target, watchpoint_t *watchpoint);
- /* remove watchpoint. hw will only be updated if the target is currently halted.
- * However, this method can be invoked on unresponsive targets.
+ struct target *target;
+ /* field for smp display */
+ /* element 0 coreid currently displayed ( 1 till n) */
+ /* element 1 coreid to be displayed at next resume 1 till n 0 means resume
+ * all cores
+ core displayed */
+ int32_t core[2];
+};
+
+// target_type.h contains the full definitionof struct targe_type
+struct target
+{
+ struct target_type *type; /* target type definition (name, access functions) */
+ const char *cmd_name; /* tcl Name of target */
+ int target_number; /* DO NOT USE! field to be removed in 2010 */
+ struct jtag_tap *tap; /* where on the jtag chain is this */
+ int32_t coreid; /* which device on the TAP? */
+ const char *variant; /* what variant of this chip is it? */
+
+ /**
+ * Indicates whether this target has been examined.
+ *
+ * Do @b not access this field directly, use target_was_examined()
+ * or target_set_examined().