mirror of
https://github.com/linux-msm/openocd.git
synced 2026-02-25 13:15:07 -08:00
- 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
This commit is contained in:
@@ -148,7 +148,7 @@ int stellaris_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, c
|
||||
stellaris_info->target = get_target_by_num(strtoul(args[5], NULL, 0));
|
||||
if (!stellaris_info->target)
|
||||
{
|
||||
ERROR("no target '%i' configured", args[5]);
|
||||
ERROR("no target '%s' configured", args[5]);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +82,8 @@ extern int fileio_read(fileio_t *fileio, u32 size, u8 *buffer, u32 *size_read);
|
||||
extern int fileio_seek(fileio_t *fileio, u32 position);
|
||||
extern int fileio_close(fileio_t *fileio);
|
||||
extern int fileio_open(fileio_t *fileio, char *url, enum fileio_access access, enum fileio_type type);
|
||||
extern int fileio_read_u32(fileio_t *fileio, u32 *data);
|
||||
extern int fileio_write_u32(fileio_t *fileio, u32 data);
|
||||
|
||||
#define ERROR_FILEIO_LOCATION_UNKNOWN (-1200)
|
||||
#define ERROR_FILEIO_NOT_FOUND (-1201)
|
||||
|
||||
@@ -40,23 +40,23 @@ typedef unsigned long long u64;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN /* big endian host */
|
||||
|
||||
#define le_to_h_u32(x) (u32)(x[0] | x[1] << 8 | x[2] << 16 | x[3] << 24)
|
||||
#define le_to_h_u16(x) (u16)(x[0] | x[1] << 8)
|
||||
#define le_to_h_u32(x) (u32)((x)[0] | (x)[1] << 8 | (x)[2] << 16 | (x)[3] << 24)
|
||||
#define le_to_h_u16(x) (u16)((x)[0] | (x)[1] << 8)
|
||||
#define be_to_h_u32(x) (*(u32*)(x))
|
||||
#define be_to_h_u16(x) (*(u16*)(x))
|
||||
|
||||
#define h_u32_to_le(buf, val) \
|
||||
do { \
|
||||
buf[3] = (val & 0xff000000) >> 24; \
|
||||
buf[2] = (val & 0x00ff0000) >> 16; \
|
||||
buf[1] = (val & 0x0000ff00) >> 8; \
|
||||
buf[0] = (val & 0x000000ff); \
|
||||
(buf)[3] = ((val) & 0xff000000) >> 24; \
|
||||
(buf)[2] = ((val) & 0x00ff0000) >> 16; \
|
||||
(buf)[1] = ((val) & 0x0000ff00) >> 8; \
|
||||
(buf)[0] = ((val) & 0x000000ff); \
|
||||
} while (0)
|
||||
|
||||
#define h_u16_to_le(buf, val) \
|
||||
do { \
|
||||
buf[0] = (val & 0xff000) >> 8; \
|
||||
buf[1] = (val & 0x00ff); \
|
||||
(buf)[0] = ((val) & 0xff000) >> 8; \
|
||||
(buf)[1] = ((val) & 0x00ff); \
|
||||
} while (0)
|
||||
|
||||
#define h_u32_to_be(buf, val) do { *(u32*)(buf) = (val); } while (0)
|
||||
@@ -73,16 +73,16 @@ typedef unsigned long long u64;
|
||||
|
||||
#define h_u32_to_be(buf, val) \
|
||||
do { \
|
||||
buf[0] = (val & 0xff000000) >> 24; \
|
||||
buf[1] = (val & 0x00ff0000) >> 16; \
|
||||
buf[2] = (val & 0x0000ff00) >> 8; \
|
||||
buf[3] = (val & 0x000000ff); \
|
||||
(buf)[0] = ((val) & 0xff000000) >> 24; \
|
||||
(buf)[1] = ((val) & 0x00ff0000) >> 16; \
|
||||
(buf)[2] = ((val) & 0x0000ff00) >> 8; \
|
||||
(buf)[3] = ((val) & 0x000000ff); \
|
||||
} while (0)
|
||||
|
||||
#define h_u16_to_be(buf, val) \
|
||||
do { \
|
||||
buf[0] = (val & 0xff000) >> 8; \
|
||||
buf[1] = (val & 0x00ff); \
|
||||
(buf)[0] = ((val) & 0xff000) >> 8; \
|
||||
(buf)[1] = ((val) & 0x00ff); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#define OPENOCD_VERSION "Open On-Chip Debugger (2007-06-15 16:00 CEST)"
|
||||
#define OPENOCD_VERSION "Open On-Chip Debugger (2007-06-28 12:30 CEST)"
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
|
||||
@@ -26,6 +26,6 @@
|
||||
extern int arm_simulate_step(target_t *target, u32 *dry_run_pc);
|
||||
|
||||
|
||||
#define ERROR_ARM_SIMULATOR_NOT_IMPLEMENTED (-1000)
|
||||
#define ERROR_ARM_SIMULATOR_NOT_IMPLEMENTED (-700)
|
||||
|
||||
#endif /* ARM_SIMULATOR_H */
|
||||
|
||||
@@ -1502,9 +1502,13 @@ int handle_etm_load_command(struct command_context_s *cmd_ctx, char *cmd, char *
|
||||
|
||||
for (i = 0; i < etm_ctx->trace_depth; i++)
|
||||
{
|
||||
fileio_read_u32(&file, &etm_ctx->trace_data[i].pipestat);
|
||||
fileio_read_u32(&file, &etm_ctx->trace_data[i].packet);
|
||||
fileio_read_u32(&file, &etm_ctx->trace_data[i].flags);
|
||||
u32 pipestat, packet, flags;
|
||||
fileio_read_u32(&file, &pipestat);
|
||||
fileio_read_u32(&file, &packet);
|
||||
fileio_read_u32(&file, &flags);
|
||||
etm_ctx->trace_data[i].pipestat = pipestat & 0xff;
|
||||
etm_ctx->trace_data[i].packet = packet & 0xffff;
|
||||
etm_ctx->trace_data[i].flags = flags;
|
||||
}
|
||||
|
||||
fileio_close(&file);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user