summaryrefslogtreecommitdiff
path: root/src/target/xscale.c
diff options
context:
space:
mode:
authordrath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-08-21 16:21:05 +0000
committerdrath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-08-21 16:21:05 +0000
commitecfc1e39a2621cf3f2d2c67841cc31cb670326c0 (patch)
tree8776c39a78f842a99e7a393c19112a9681c60c0d /src/target/xscale.c
parent580bb852019869a2dafa73d5725439a29ec9c873 (diff)
downloadopenocd_libswd-ecfc1e39a2621cf3f2d2c67841cc31cb670326c0.tar.gz
openocd_libswd-ecfc1e39a2621cf3f2d2c67841cc31cb670326c0.tar.bz2
openocd_libswd-ecfc1e39a2621cf3f2d2c67841cc31cb670326c0.tar.xz
openocd_libswd-ecfc1e39a2621cf3f2d2c67841cc31cb670326c0.zip
- correctly initialize start address for XScale trace buffer decodes in fill-once mode
git-svn-id: svn://svn.berlios.de/openocd/trunk@202 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target/xscale.c')
-rw-r--r--src/target/xscale.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/target/xscale.c b/src/target/xscale.c
index 59f1795e..b207dbb2 100644
--- a/src/target/xscale.c
+++ b/src/target/xscale.c
@@ -3440,6 +3440,19 @@ int xscale_handle_trace_buffer_command(struct command_context_s *cmd_ctx, char *
xscale->trace.buffer_fill = -1;
}
+ if (xscale->trace.buffer_enabled)
+ {
+ /* if we enable the trace buffer in fill-once
+ * mode we know the address of the first instruction */
+ xscale->trace.pc_ok = 1;
+ xscale->trace.current_pc = buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32);
+ }
+ else
+ {
+ /* otherwise the address is unknown, and we have no known good PC */
+ xscale->trace.pc_ok = 0;
+ }
+
command_print(cmd_ctx, "trace buffer %s (%s)",
(xscale->trace.buffer_enabled) ? "enabled" : "disabled",
(xscale->trace.buffer_fill > 0) ? "fill" : "wrap");