dsp5680xx - mark erase after unlocking flash
[fw/openocd] / src / target / xscale.h
index 63655ffbe9cdb4bfaf18e11b7f1bbb3d4ac0dcb8..e480da9307ffc0594195d90fcae3316388f52e2b 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef XSCALE_H
 #define XSCALE_H
 
-#include "armv4_5.h"
+#include "arm.h"
 #include "armv4_5_mmu.h"
 #include "trace.h"
 
 #define XSCALE_LDIC    0x07
 #define XSCALE_SELDCSR 0x09
 
+/* Possible CPU types */
+#define        XSCALE_IXP4XX_PXA2XX    0x0
+#define        XSCALE_PXA3XX           0x4
+
 enum xscale_debug_reason
 {
        XSCALE_DBG_REASON_GENERIC,
@@ -50,38 +54,44 @@ enum xscale_trace_entry_type
        XSCALE_TRACE_ADDRESS = 0x1,
 };
 
-typedef struct xscale_trace_entry_s
+struct xscale_trace_entry
 {
        uint8_t data;
        enum xscale_trace_entry_type type;
-} xscale_trace_entry_t;
+};
 
 struct xscale_trace_data
 {
-       xscale_trace_entry_t *entries;
+       struct xscale_trace_entry *entries;
        int depth;
        uint32_t chkpt0;
        uint32_t chkpt1;
        uint32_t last_instruction;
+       unsigned int num_checkpoints;
        struct xscale_trace_data *next;
 };
 
-typedef struct xscale_trace_s
+enum trace_mode
+{
+   XSCALE_TRACE_DISABLED,
+   XSCALE_TRACE_FILL,
+   XSCALE_TRACE_WRAP
+};
+
+struct xscale_trace
 {
-       trace_status_t capture_status;  /* current state of capture run */
-       struct image_s *image;                                  /* source for target opcodes */
+       struct image *image;                                    /* source for target opcodes */
        struct xscale_trace_data *data;         /* linked list of collected trace data */
-       int buffer_enabled;                             /* whether trace buffer is enabled */
-       int buffer_fill;                                /* maximum number of trace runs to read (-1 for wrap-around) */
-       int pc_ok;
-       uint32_t current_pc;
-       armv4_5_state_t core_state;             /* current core state (ARM, Thumb, Jazelle) */
-} xscale_trace_t;
+       int buffer_fill;                                /* maximum number of trace runs to read */
+    int fill_counter;                          /* running count during trace collection */
+    enum trace_mode mode;
+       enum arm_state core_state;      /* current core state (ARM, Thumb) */
+};
 
 struct xscale_common
 {
        /* armv4/5 common stuff */
-       armv4_5_common_t armv4_5_common;
+       struct arm armv4_5_common;
 
        int common_magic;
 
@@ -120,7 +130,7 @@ struct xscale_common
 
        uint8_t vector_catch;
 
-       xscale_trace_t trace;
+       struct xscale_trace trace;
 
        int arch_debug_reason;
 
@@ -129,20 +139,23 @@ struct xscale_common
        uint32_t cp15_control_reg;
 
        int fast_memory_access;
+
+       /* CPU variant */
+       int xscale_variant;
 };
 
 static inline struct xscale_common *
-target_to_xscale(struct target_s *target)
+target_to_xscale(struct target *target)
 {
        return container_of(target->arch_info, struct xscale_common,
                        armv4_5_common);
 }
 
-typedef struct xscale_reg_s
+struct xscale_reg
 {
        int dbg_handler_number;
-       target_t *target;
-} xscale_reg_t;
+       struct target *target;
+};
 
 enum
 {
@@ -170,6 +183,6 @@ enum
        XSCALE_TXRXCTRL,
 };
 
-#define ERROR_XSCALE_NO_TRACE_DATA     (-1500)
+#define ERROR_XSCALE_NO_TRACE_DATA     (-700)
 
 #endif /* XSCALE_H */