X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Fxscale.h;h=c5cd7b7746bba45d0e4239bc2278f38d7f8d5ea7;hp=dd7b034652bc754ef74750fef117cde06ab8f1c9;hb=08d4411b59dd8bd0e7d8009003b71d23acbf6eee;hpb=f6dae0cf84de26846a18f3fcaea842ccd898a5c1 diff --git a/src/target/xscale.h b/src/target/xscale.h index dd7b034652..c5cd7b7746 100644 --- a/src/target/xscale.h +++ b/src/target/xscale.h @@ -18,12 +18,13 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * ***************************************************************************/ + #ifndef XSCALE_H #define XSCALE_H -#include "armv4_5.h" +#include "arm.h" #include "armv4_5_mmu.h" #include "trace.h" @@ -37,56 +38,59 @@ #define XSCALE_LDIC 0x07 #define XSCALE_SELDCSR 0x09 -enum xscale_debug_reason -{ +/* Possible CPU types */ +#define XSCALE_IXP4XX_PXA2XX 0x0 +#define XSCALE_PXA3XX 0x4 + +enum xscale_debug_reason { XSCALE_DBG_REASON_GENERIC, XSCALE_DBG_REASON_RESET, XSCALE_DBG_REASON_TB_FULL, }; -enum xscale_trace_entry_type -{ +enum xscale_trace_entry_type { XSCALE_TRACE_MESSAGE = 0x0, 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; +}; -typedef struct xscale_trace_data_s -{ - xscale_trace_entry_t *entries; +struct xscale_trace_data { + struct xscale_trace_entry *entries; int depth; uint32_t chkpt0; uint32_t chkpt1; uint32_t last_instruction; - struct xscale_trace_data_s *next; -} xscale_trace_data_t; + unsigned int num_checkpoints; + struct xscale_trace_data *next; +}; -typedef struct xscale_trace_s -{ - trace_status_t capture_status; /* current state of capture run */ - struct image_s *image; /* source for target opcodes */ - xscale_trace_data_t *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; - -typedef struct xscale_common_s -{ +enum trace_mode { + XSCALE_TRACE_DISABLED, + XSCALE_TRACE_FILL, + XSCALE_TRACE_WRAP +}; + +struct xscale_trace { + struct image *image; /* source for target opcodes */ + struct xscale_trace_data *data; /* linked list of collected trace data */ + 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 arm; int common_magic; /* XScale registers (CP15, DBG) */ - reg_cache_t *reg_cache; + struct reg_cache *reg_cache; /* current state of the debug handler */ uint32_t handler_address; @@ -120,7 +124,7 @@ typedef struct xscale_common_s uint8_t vector_catch; - xscale_trace_t trace; + struct xscale_trace trace; int arch_debug_reason; @@ -129,23 +133,23 @@ typedef struct xscale_common_s uint32_t cp15_control_reg; int fast_memory_access; -} xscale_common_t; -static inline struct xscale_common_s * -target_to_xscale(struct target_s *target) + /* CPU variant */ + int xscale_variant; +}; + +static inline struct xscale_common * +target_to_xscale(struct target *target) { - return container_of(target->arch_info, struct xscale_common_s, - armv4_5_common); + return container_of(target->arch_info, struct xscale_common, arm); } -typedef struct xscale_reg_s -{ +struct xscale_reg { int dbg_handler_number; - target_t *target; -} xscale_reg_t; + struct target *target; +}; -enum -{ +enum { XSCALE_MAINID, /* 0 */ XSCALE_CACHETYPE, XSCALE_CTRL, @@ -170,6 +174,6 @@ enum XSCALE_TXRXCTRL, }; -#define ERROR_XSCALE_NO_TRACE_DATA (-1500) +#define ERROR_XSCALE_NO_TRACE_DATA (-700) #endif /* XSCALE_H */