X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Fxscale.h;h=7213db7b6eda4f31646e640c377c284fa8ae3bfc;hb=ceb402dc9e903d2f3f6bc8125dfed9d82b83d2d1;hp=43edeecd0cacd45afa00e35af916f34befa99a83;hpb=340e2eb7629fc1fdb6d2ead2952982584abdcefa;p=openocd.git diff --git a/src/target/xscale.h b/src/target/xscale.h index 43edeecd0c..7213db7b6e 100644 --- a/src/target/xscale.h +++ b/src/target/xscale.h @@ -20,12 +20,13 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ + #ifndef XSCALE_H #define XSCALE_H -#include -#include -#include +#include "arm.h" +#include "armv4_5_mmu.h" +#include "trace.h" #define XSCALE_COMMON_MAGIC 0x58534341 @@ -41,51 +42,50 @@ #define XSCALE_IXP4XX_PXA2XX 0x0 #define XSCALE_PXA3XX 0x4 -enum xscale_debug_reason -{ +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, }; -struct xscale_trace_entry -{ +struct xscale_trace_entry { uint8_t data; enum xscale_trace_entry_type type; }; -struct xscale_trace_data -{ +struct xscale_trace_data { 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; }; -struct xscale_trace -{ - trace_status_t capture_status; /* current state of capture run */ +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_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; + 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 -{ +struct xscale_common { /* armv4/5 common stuff */ - struct arm armv4_5_common; + struct arm arm; int common_magic; @@ -141,18 +141,15 @@ struct xscale_common static inline struct xscale_common * target_to_xscale(struct target *target) { - return container_of(target->arch_info, struct xscale_common, - armv4_5_common); + return container_of(target->arch_info, struct xscale_common, arm); } -struct xscale_reg -{ +struct xscale_reg { int dbg_handler_number; struct target *target; }; -enum -{ +enum { XSCALE_MAINID, /* 0 */ XSCALE_CACHETYPE, XSCALE_CTRL, @@ -177,6 +174,6 @@ enum XSCALE_TXRXCTRL, }; -#define ERROR_XSCALE_NO_TRACE_DATA (-1500) +#define ERROR_XSCALE_NO_TRACE_DATA (-700) #endif /* XSCALE_H */