Hi all,

This patch -- also derived from Jeff Williams' work -- reorders the enum
tap_state symbols to reflect the states used by most/all ARM parts.

I verified that these states match the documentation that I have here,
and I tested that nothing appears immediately broken.  If I am right in
say that OpenOCD does not care about their specific values (only that
they have unique values), then this is completely safe to apply.

Cheers,

Zach

Index: src/jtag/jtag.h
===================================================================
--- src/jtag/jtag.h	(revision 1503)
+++ src/jtag/jtag.h	(working copy)
@@ -41,20 +41,37 @@
 #endif
 
 
-/* 16 Tap States, from page 21 of ASSET InterTech, Inc.'s svf.pdf
+/*
+ * Tap states from ARM7TDMI-S Technical reference manual.
+ * Also, validated against several other ARM core technical manuals.
+ *
+ * N.B. tap_get_tms_path() was changed to reflect this corrected
+ * numbering and ordering of the TAP states.
  */
-enum tap_state {
-	TAP_RESET    = 0, TAP_IDLE = 8,
-	TAP_DRSELECT = 1, TAP_DRCAPTURE = 2, TAP_DRSHIFT = 3, TAP_DREXIT1 = 4,
-	TAP_DRPAUSE  = 5, TAP_DREXIT2 = 6, TAP_DRUPDATE = 7,
-	TAP_IRSELECT = 9, TAP_IRCAPTURE = 10, TAP_IRSHIFT = 11, TAP_IREXIT1 = 12,
-	TAP_IRPAUSE  = 13, TAP_IREXIT2 = 14, TAP_IRUPDATE = 15,
+typedef enum tap_state
+{
+	TAP_DREXIT2 = 0x0,
+	TAP_DREXIT1 = 0x1,
+	TAP_DRSHIFT = 0x2,
+	TAP_DRPAUSE = 0x3,
+	TAP_IRSELECT = 0x4,
+	TAP_DRUPDATE = 0x5,
+	TAP_DRCAPTURE = 0x6,
+	TAP_DRSELECT = 0x7,
+	TAP_IREXIT2 = 0x8,
+	TAP_IREXIT1 = 0x9,
+	TAP_IRSHIFT = 0xa,
+	TAP_IRPAUSE = 0xb,
+	TAP_IDLE = 0xc,
+	TAP_IRUPDATE = 0xd,
+	TAP_IRCAPTURE = 0xe,
+	TAP_RESET = 0x0f,
 
-	TAP_NUM_STATES = 16, TAP_INVALID = -1,
-};
+	TAP_NUM_STATES = 0x10,
 
-typedef enum tap_state tap_state_t;
-
+	TAP_INVALID = -1,
+} tap_state_t;
+ 
 typedef struct tap_transition_s
 {
 	tap_state_t high;
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to