From 32c6d70f6acd41dd1af5ea73051dd6c8a46eac14 Mon Sep 17 00:00:00 2001 From: drath Date: Thu, 28 Jun 2007 10:32:58 +0000 Subject: - fixed endianness helper macros (thanks to obilix and wiml for finding and fixing this bug) - added declarations for 32bit fileio access functions (network byte order) - fixed bug in etm trace dump file handling - added XScale trace buffer decoding - fixed arm_simulator ERROR numbers (-7xx used twice) - fixed minor bug in debug output in stellaris.c git-svn-id: svn://svn.berlios.de/openocd/trunk@178 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/target/xscale.h | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'src/target/xscale.h') diff --git a/src/target/xscale.h b/src/target/xscale.h index 9fcb265e..86acfbde 100644 --- a/src/target/xscale.h +++ b/src/target/xscale.h @@ -24,6 +24,8 @@ #include "register.h" #include "armv4_5.h" #include "armv4_5_mmu.h" +#include "trace.h" +#include "image.h" #define XSCALE_COMMON_MAGIC 0x58534341 @@ -47,6 +49,40 @@ enum xscale_debug_reason XSCALE_DBG_REASON_TB_FULL, }; +enum xscale_trace_entry_type +{ + XSCALE_TRACE_MESSAGE, + XSCALE_TRACE_ADDRESS, +}; + +typedef struct xscale_trace_entry_s +{ + u8 data; + enum xscale_trace_entry_type type; +} xscale_trace_entry_t; + +typedef struct xscale_trace_data_s +{ + xscale_trace_entry_t *entries; + int depth; + u32 chkpt0; + u32 chkpt1; + u32 last_instruction; + struct xscale_trace_data_s *next; +} xscale_trace_data_t; + +typedef struct xscale_trace_s +{ + trace_status_t capture_status; /* current state of capture run */ + image_t *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; + u32 current_pc; + armv4_5_state_t core_state; /* current core state (ARM, Thumb, Jazelle) */ +} xscale_trace_t; + typedef struct xscale_common_s { int common_magic; @@ -93,9 +129,8 @@ typedef struct xscale_common_s u16 thumb_bkpt; u8 vector_catch; - - int trace_buffer_enabled; - int trace_buffer_fill; + + xscale_trace_t trace; int arch_debug_reason; @@ -142,4 +177,6 @@ enum XSCALE_TXRXCTRL, }; +#define ERROR_XSCALE_NO_TRACE_DATA (-1500) + #endif /* XSCALE_H */ -- cgit v1.2.3