summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-05-07 13:04:13 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-05-07 13:04:13 +0000
commitc4ee880715121ccfb2ad960673d0f5e603c60d3d (patch)
tree4c642bbe249930cc5b41225c4207721e50a27111 /src
parent146b6462a3fea7073a73487d8c943eb0ef20c469 (diff)
downloadopenocd+libswd-c4ee880715121ccfb2ad960673d0f5e603c60d3d.tar.gz
openocd+libswd-c4ee880715121ccfb2ad960673d0f5e603c60d3d.tar.bz2
openocd+libswd-c4ee880715121ccfb2ad960673d0f5e603c60d3d.tar.xz
openocd+libswd-c4ee880715121ccfb2ad960673d0f5e603c60d3d.zip
jtag API error handling refactoring.
git-svn-id: svn://svn.berlios.de/openocd/trunk@1638 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src')
-rw-r--r--src/jtag/jtag.c4
-rw-r--r--src/jtag/jtag.h13
2 files changed, 15 insertions, 2 deletions
diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c
index 242eb56b..981f47e1 100644
--- a/src/jtag/jtag.c
+++ b/src/jtag/jtag.c
@@ -42,7 +42,7 @@
#include <strings.h>
#endif
-static void jtag_execute_queue_noclear(void);
+
/* note that this is not marked as static as it must be available from outside jtag.c for those
that implement the jtag_xxx() minidriver layer
@@ -1446,7 +1446,7 @@ int MINIDRIVER(interface_jtag_execute_queue)(void)
return retval;
}
-static void jtag_execute_queue_noclear(void)
+void jtag_execute_queue_noclear(void)
{
int retval=interface_jtag_execute_queue();
/* we keep the first error */
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index c0f94856..ce11d592 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -700,6 +700,9 @@ int interface_jtag_add_clocks(int num_cycles);
*/
extern int jtag_execute_queue(void);
+/* same as jtag_execute_queue() but does not clear the error flag */
+extern void jtag_execute_queue_noclear(void);
+
/* this flag is set when an error occurs while executing the queue. cleared
* by jtag_execute_queue()
*
@@ -708,6 +711,16 @@ extern int jtag_execute_queue(void);
*/
extern int jtag_error;
+static __inline__ void jtag_set_error(int error)
+{
+ if ((error==ERROR_OK)||(jtag_error!=ERROR_OK))
+ {
+ /* keep first error */
+ return;
+ }
+ jtag_error=error;
+}
+
/* can be implemented by hw+sw */