Final step in isolating target_type_s structure:
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 31 May 2009 12:38:28 +0000 (12:38 +0000)
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 31 May 2009 12:38:28 +0000 (12:38 +0000)
- Move definition of 'struct target_type_s' into new 'target_type.h' file.
- Forward delclaration remains in target.h, with comment pointing to new file.
- Replaces #define with #include in source files.

git-svn-id: svn://svn.berlios.de/openocd/trunk@1971 b42882b7-edfa-0310-969c-e2dbd0fdcd60

18 files changed:
src/target/Makefile.am
src/target/arm11.c
src/target/arm720t.c
src/target/arm7tdmi.c
src/target/arm920t.c
src/target/arm926ejs.c
src/target/arm966e.c
src/target/arm9tdmi.c
src/target/avrt.c
src/target/cortex_a8.c
src/target/cortex_m3.c
src/target/feroceon.c
src/target/mips_m4k.c
src/target/target.c
src/target/target.h
src/target/target_request.c
src/target/target_type.h [new file with mode: 0644]
src/target/xscale.c

index 132ac50b3663c459b1fb0f776e51b1f1c81934f8..f28561de1d9568d26acafd989b7d82eb7f315bd1 100644 (file)
@@ -55,6 +55,7 @@ libtarget_la_SOURCES = \
 
 noinst_HEADERS = \
        target.h \
+       target_type.h \
        trace.h \
        register.h \
        armv4_5.h \
index e9ba1f678d6645862b87fa08cc0a4d69f3d3c714..e4f53f1a7fc533e502efd7d5902e380c5b86e317 100644 (file)
@@ -26,8 +26,8 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "arm11.h"
+#include "target_type.h"
 
 
 #if 0
index 668f2f5e4585115b79d7a0a09023ce98f45941fd..f99ba61bebdf2eb9872b0bd32383d395800fde95 100644 (file)
@@ -21,9 +21,9 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "arm720t.h"
 #include "time_support.h"
+#include "target_type.h"
 
 
 #if 0
index 4c86f4a7861a675d6a14802a56abfd55cf398a97..69910f4c8849296644f83ed70073b15aac2e51e9 100644 (file)
@@ -27,8 +27,8 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "arm7tdmi.h"
+#include "target_type.h"
 
 
 #if 0
index 21fc46af75eb425b0a263931a2f1c847ebd26e1c..15f6378f3a33eba722cbc631a0071d0a993ae4f5 100644 (file)
@@ -21,9 +21,9 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "arm920t.h"
 #include "time_support.h"
+#include "target_type.h"
 
 
 #if 0
index b643a213df642121eb4a2714546c2471ec4d86d5..5996d089c734a814191fc327c82a01c88a5bf787 100644 (file)
@@ -21,9 +21,9 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "arm926ejs.h"
 #include "time_support.h"
+#include "target_type.h"
 
 
 #if 0
index 7f39d3a769c69e2cea4f3e705827355604640634..425cf6673e4646e6277c993d717fafe499b62d09 100644 (file)
@@ -24,8 +24,8 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "arm966e.h"
+#include "target_type.h"
 
 
 #if 0
index 2edeea546c0c8c4e5635d934a2f3673511909838..eb743b12727218cef34bb65bdcec26d684426af8 100644 (file)
@@ -27,8 +27,8 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "arm9tdmi.h"
+#include "target_type.h"
 
 
 #if 0
index db6c101d68545febad28755c306b3f235b66f233..a0b271139db988fa276d88106592b1de8e6c2e99 100644 (file)
@@ -21,9 +21,9 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "avrt.h"
 #include "target.h"
+#include "target_type.h"
 
 
 #define AVR_JTAG_INS_LEN       4
index 9d62b01522a4d00233bd9d30487feb0a33d6ae0e..025eb45f8f42ce11c1323418a543d14b270c9fa4 100644 (file)
@@ -33,9 +33,9 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "cortex_a8.h"
 #include "target_request.h"
+#include "target_type.h"
 
 
 /* cli handling */
index fe14cd9e5fe2135658d98a0ca5c58d3e882fbde5..33bfd6ab01eed24e75db763f55e38dbf0fb65345 100644 (file)
@@ -31,9 +31,9 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "cortex_m3.h"
 #include "target_request.h"
+#include "target_type.h"
 
 
 /* cli handling */
index 38cd0b06433339d94d2f969a68e2a15a1216012e..a6b0202203387012b47c5673254f032a73131a81 100644 (file)
@@ -49,8 +49,8 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "arm926ejs.h"
+#include "target_type.h"
 
 
 int feroceon_examine(struct target_s *target);
index fb4729665e8dfa3ea14a686c31a842a5984e906c..7af40c12b132be3697bb81cf30932deb94f79fa8 100644 (file)
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "mips32.h"
 #include "mips_m4k.h"
 #include "mips32_dmaacc.h"
+#include "target_type.h"
 
 
 /* cli handling */
index d06c317e830d349fe7dc56398fe2e245b6cb4e96..ece03a3a79322fe2aa20be35caa666c3ab96b268 100644 (file)
@@ -33,9 +33,8 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
-
 #include "target.h"
+#include "target_type.h"
 #include "target_request.h"
 #include "time_support.h"
 #include "register.h"
index dc871bf20f6dfae6532d28d35b7b7f762014dcaf..41b6f4dd4e6d4537fb470d4202632f95caa41509 100644 (file)
@@ -105,164 +105,8 @@ typedef struct working_area_s
        struct working_area_s *next;
 } working_area_t;
 
-#ifdef DEFINE_TARGET_TYPE_S
-struct target_type_s
-{
-       /**
-        * Name of the target.  Do @b not access this field directly, use
-        * target_get_name() instead.
-        */
-       char *name;
-
-       /**
-        * Indicates whether this target has been examined.
-        *
-        * Do @b not access this field directly, use target_was_examined()
-        * target_set_examined(), and target_reset_examined().
-        */
-       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.  Do @b not call this function
-        * directly, use target_get_gdb_reg_list() instead.
-        *
-        * 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);
-       /**
-        * Target memory read callback.  Do @b not call this function
-        * directly, use target_read_memory() instead.
-        */
-       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);
-       /**
-        * Target memory write callback.  Do @b not call this function
-        * directly, use target_write_memory() instead.
-        */
-       int (*write_memory)(struct target_s *target, u32 address, u32 size, u32 count, u8 *buffer);
-
-       /**
-        * Write target memory in multiples of 4 bytes, optimized for
-        * writing large quantities of data.  Do @b not call this
-        * function directly, use target_bulk_write_memory() instead.
-        */
-       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.
-        */
-       int (*remove_watchpoint)(struct target_s *target, watchpoint_t *watchpoint);
-
-       /* target algorithm support */
-       int (*run_algorithm_imp)(struct target_s *target, int num_mem_params, mem_param_t *mem_params, int num_reg_params, reg_param_t *reg_param, u32 entry_point, u32 exit_point, int timeout_ms, void *arch_info);
-       /**
-        * Target algorithm support.  Do @b not call this method directly,
-        * use target_run_algorithm() instead.
-        */
-       int (*run_algorithm)(struct target_s *target, int num_mem_params, mem_param_t *mem_params, int num_reg_params, reg_param_t *reg_param, u32 entry_point, u32 exit_point, int timeout_ms, void *arch_info);
-
-       int (*register_commands)(struct command_context_s *cmd_ctx);
-
-       /* called when target is created */
-       int (*target_create)( struct target_s *target, Jim_Interp *interp );
-
-       /* called for various config parameters */
-       /* returns JIM_CONTINUE - if option not understood */
-       /* otherwise: JIM_OK, or JIM_ERR, */
-       int (*target_jim_configure)( struct target_s *target, Jim_GetOptInfo *goi );
-
-       /* target commands specifically handled by the target */
-       /* returns JIM_OK, or JIM_ERR, or JIM_CONTINUE - if option not understood */
-       int (*target_jim_commands)( struct target_s *target, Jim_GetOptInfo *goi );
-
-       /* invoked after JTAG chain has been examined & validated. During
-        * this stage the target is examined and any additional setup is
-        * performed.
-        *
-        * invoked every time after the jtag chain has been validated/examined
-        */
-       int (*examine)(struct target_s *target);
-       /* Set up structures for target.
-        *
-        * It is illegal to talk to the target at this stage as this fn is invoked
-        * before the JTAG chain has been examined/verified
-        * */
-       int (*init_target)(struct command_context_s *cmd_ctx, struct target_s *target);
-       int (*quit)(void);
-
-       int (*virt2phys)(struct target_s *target, u32 address, u32 *physical);
-       int (*mmu)(struct target_s *target, int *enabled);
-
-};
-#else
+// target_type.h contains the full definitionof struct target_type_s
 struct target_type_s;
-#endif // DEFINE_TARGET_TYPE_S
 typedef struct target_type_s target_type_t;
 
 /* forward decloration */
index 30c0c7610b5bb33a466e7b8597830fdd44b3fb2c..202701face4218fd4fa6f43bb2431993dfbe1568 100644 (file)
@@ -27,8 +27,8 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "target_request.h"
+#include "target_type.h"
 #include "binarybuffer.h"
 #include "trace.h"
 #include "log.h"
diff --git a/src/target/target_type.h b/src/target/target_type.h
new file mode 100644 (file)
index 0000000..6936bb7
--- /dev/null
@@ -0,0 +1,163 @@
+#ifndef TARGET_TYPE_H
+#define TARGET_TYPE_H
+
+#include "types.h"
+
+struct target_s;
+
+struct target_type_s
+{
+       /**
+        * Name of the target.  Do @b not access this field directly, use
+        * target_get_name() instead.
+        */
+       char *name;
+
+       /**
+        * Indicates whether this target has been examined.
+        *
+        * Do @b not access this field directly, use target_was_examined()
+        * target_set_examined(), and target_reset_examined().
+        */
+       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.  Do @b not call this function
+        * directly, use target_get_gdb_reg_list() instead.
+        *
+        * 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);
+       /**
+        * Target memory read callback.  Do @b not call this function
+        * directly, use target_read_memory() instead.
+        */
+       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);
+       /**
+        * Target memory write callback.  Do @b not call this function
+        * directly, use target_write_memory() instead.
+        */
+       int (*write_memory)(struct target_s *target, u32 address, u32 size, u32 count, u8 *buffer);
+
+       /**
+        * Write target memory in multiples of 4 bytes, optimized for
+        * writing large quantities of data.  Do @b not call this
+        * function directly, use target_bulk_write_memory() instead.
+        */
+       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.
+        */
+       int (*remove_watchpoint)(struct target_s *target, watchpoint_t *watchpoint);
+
+       /* target algorithm support */
+       int (*run_algorithm_imp)(struct target_s *target, int num_mem_params, mem_param_t *mem_params, int num_reg_params, reg_param_t *reg_param, u32 entry_point, u32 exit_point, int timeout_ms, void *arch_info);
+       /**
+        * Target algorithm support.  Do @b not call this method directly,
+        * use target_run_algorithm() instead.
+        */
+       int (*run_algorithm)(struct target_s *target, int num_mem_params, mem_param_t *mem_params, int num_reg_params, reg_param_t *reg_param, u32 entry_point, u32 exit_point, int timeout_ms, void *arch_info);
+
+       int (*register_commands)(struct command_context_s *cmd_ctx);
+
+       /* called when target is created */
+       int (*target_create)( struct target_s *target, Jim_Interp *interp );
+
+       /* called for various config parameters */
+       /* returns JIM_CONTINUE - if option not understood */
+       /* otherwise: JIM_OK, or JIM_ERR, */
+       int (*target_jim_configure)( struct target_s *target, Jim_GetOptInfo *goi );
+
+       /* target commands specifically handled by the target */
+       /* returns JIM_OK, or JIM_ERR, or JIM_CONTINUE - if option not understood */
+       int (*target_jim_commands)( struct target_s *target, Jim_GetOptInfo *goi );
+
+       /* invoked after JTAG chain has been examined & validated. During
+        * this stage the target is examined and any additional setup is
+        * performed.
+        *
+        * invoked every time after the jtag chain has been validated/examined
+        */
+       int (*examine)(struct target_s *target);
+       /* Set up structures for target.
+        *
+        * It is illegal to talk to the target at this stage as this fn is invoked
+        * before the JTAG chain has been examined/verified
+        * */
+       int (*init_target)(struct command_context_s *cmd_ctx, struct target_s *target);
+       int (*quit)(void);
+
+       int (*virt2phys)(struct target_s *target, u32 address, u32 *physical);
+       int (*mmu)(struct target_s *target, int *enabled);
+
+};
+
+#endif // TARGET_TYPE_H
index a375608d186d755e76f7df3afaa4213ad0817e8d..7838e50e6b729ce79d6bb64b562b8cf3008cc199 100644 (file)
@@ -24,8 +24,8 @@
 #include "config.h"
 #endif
 
-#define DEFINE_TARGET_TYPE_S
 #include "xscale.h"
+#include "target_type.h"
 #include "arm7_9_common.h"
 #include "arm_simulator.h"
 #include "arm_disassembler.h"