xscale: fix bug in xscale_receive()
authorMatt Reimer <mreimer@sdgsystems.com>
Mon, 19 Sep 2011 14:30:13 +0000 (10:30 -0400)
committerØyvind Harboe <oyvindharboe@gmail.com>
Tue, 18 Oct 2011 20:32:36 +0000 (20:32 +0000)
The code in xscale_receive() that tries to skip invalid reads (i.e.
reads that don't have the DBG_SR[0] 'valid' bit set) seems to be
wrong, as it only looks at the first word's valid flag rather than
each word's own valid flag. Am I reading the code correctly? If so,
the attached patch should fix it.

If this looks correct, I'll generate a proper patch and commit message.

Matt

Change-Id: I74ebe2ad7a36d340a9dd3b8487578b6ea7f3cf1e
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Reviewed-on: http://openocd.zylin.com/32
Tested-by: jenkins
Reviewed-by: Øyvind Harboe <oyvindharboe@gmail.com>
src/target/xscale.c

index 3b5674581c2b3131c9695b8648986ec77602ea92..b469b86449c155bcc328b4b4fcb6ad4ae8db7957 100644 (file)
@@ -317,7 +317,7 @@ static int xscale_receive(struct target *target, uint32_t *buffer, int num_words
                /* examine results */
                for (i = words_done; i < num_words; i++)
                {
-                       if (!(field0[0] & 1))
+                       if (!(field0[i] & 1))
                        {
                                /* move backwards if necessary */
                                int j;