image_t -> struct image
[fw/openocd] / src / target / cortex_m3.h
index f4cefa7803256e5e5768611eedefe6338901e1a1..f5dde5b1d61e440c584b0d3317f60547b3028189 100644 (file)
@@ -45,6 +45,7 @@
 #define DCRSR_WnR      (1 << 16)
 
 #define DWT_CTRL       0xE0001000
+#define DWT_CYCCNT     0xE0001004
 #define DWT_COMP0      0xE0001020
 #define DWT_MASK0      0xE0001024
 #define DWT_FUNCTION0  0xE0001028
@@ -60,8 +61,6 @@
 #define FP_COMP6       0xE0002020
 #define FP_COMP7       0xE0002024
 
-#define DWT_CTRL       0xE0001000
-
 /* DCB_DHCSR bit and field definitions */
 #define DBGKEY         (0xA05F << 16)
 #define C_DEBUGEN      (1 << 0)
 #define FPCR_REPLACE_BKPT_HIGH  (2 << 30)
 #define FPCR_REPLACE_BKPT_BOTH  (3 << 30)
 
-typedef struct  cortex_m3_fp_comparator_s
+struct cortex_m3_fp_comparator
 {
        int used;
        int type;
        uint32_t fpcr_value;
        uint32_t fpcr_address;
-} cortex_m3_fp_comparator_t;
+};
 
-typedef struct  cortex_m3_dwt_comparator_s
+struct cortex_m3_dwt_comparator
 {
        int used;
        uint32_t comp;
        uint32_t mask;
        uint32_t function;
        uint32_t dwt_comparator_address;
-} cortex_m3_dwt_comparator_t;
+};
 
-typedef struct cortex_m3_common_s
+struct cortex_m3_common
 {
        int common_magic;
-       arm_jtag_t jtag_info;
+       struct arm_jtag jtag_info;
 
        /* Context information */
        uint32_t dcb_dhcsr;
@@ -153,19 +152,22 @@ typedef struct cortex_m3_common_s
        int fp_code_available;
        int fpb_enabled;
        int auto_bp_type;
-       cortex_m3_fp_comparator_t *fp_comparator_list;
+       struct cortex_m3_fp_comparator *fp_comparator_list;
 
        /* Data Watchpoint and Trace (DWT) */
        int dwt_num_comp;
        int dwt_comp_available;
-       cortex_m3_dwt_comparator_t *dwt_comparator_list;
+       struct cortex_m3_dwt_comparator *dwt_comparator_list;
+       struct reg_cache *dwt_cache;
 
-       /* Interrupts */
-       int intlinesnum;
-       uint32_t *intsetenable;
+       struct armv7m_common armv7m;
+};
 
-       armv7m_common_t armv7m;
-       void *arch_info;
-} cortex_m3_common_t;
+static inline struct cortex_m3_common *
+target_to_cm3(struct target_s *target)
+{
+       return container_of(target->arch_info,
+                       struct cortex_m3_common, armv7m);
+}
 
 #endif /* CORTEX_M3_H */