]> git.sur5r.net Git - openocd/commitdiff
added jtag_alloc_in_value32 - not used in this commit.
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Tue, 12 May 2009 06:59:21 +0000 (06:59 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Tue, 12 May 2009 06:59:21 +0000 (06:59 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@1752 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/jtag/jtag.c
src/jtag/jtag.h

index 27fe524846982e1e3edfaab5a35d20c4bb2e7a1f..d66a779d13f818fdd749f38b049d7b64c448c161 100644 (file)
@@ -718,7 +718,7 @@ static void jtag_add_scan_check(void (*jtag_add_scan)(int num_fields, scan_field
                        if (fields[i].num_bits<=32)
                        {
                                /* This is enough space and we're executing this synchronously */
-                               fields[i].in_value=(u8 *)&fields[i].intmp;
+                               fields[i].in_value=fields[i].intmp;
                        } else
                        {
                                fields[i].in_value=(u8 *)malloc(CEIL(fields[i].num_bits, 8));
@@ -3562,4 +3562,12 @@ tap_state_t jtag_debug_state_machine(const void *tms_buf, const void *tdi_buf,
 }
 #endif // _DEBUG_JTAG_IO_
 
+#ifndef HAVE_JTAG_MINIDRIVER_H
+void jtag_alloc_in_value32(scan_field_t *field)
+{
+       field->in_value=(u8 *)cmd_queue_alloc(4);
+}
+#endif
+
+
 /*-----</Cable Helper API>--------------------------------------*/
index e2c8df473b6cfc82acbb0757d2374b5e2958c685..84290ca7e189c0fc7288b4fb60618b209116d4db 100644 (file)
@@ -277,7 +277,7 @@ typedef struct scan_field_s
        /* internal work space */
        int                     allocated;                      /* in_value has been allocated for the queue */
        int                     modified;                       /* did we modify the in_value? */
-       u32                     intmp;                          /* temporary storage for checking synchronously */
+       u8                      intmp[4];                       /* temporary storage for checking synchronously */
 } scan_field_t;
 
 enum scan_type {
@@ -565,6 +565,26 @@ extern void jtag_add_ir_scan_noverify(int num_fields, scan_field_t *fields, tap_
 extern int  interface_jtag_add_ir_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
 extern void jtag_add_dr_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
 
+/* set in_value to point to 32 bits of memory to scan into. This function
+ * is a way to handle the case of synchronous and asynchronous
+ * JTAG queues.
+ *
+ * In the event of an asynchronous queue execution the queue buffer
+ * allocation method is used, for the synchronous case the temporary 32 bits come
+ * from the input field itself.
+ */
+
+#ifndef HAVE_JTAG_MINIDRIVER_H
+extern void jtag_alloc_in_value32(scan_field_t *field);
+#else
+static __inline__ void jtag_alloc_in_value32(scan_field_t *field)
+{
+       field->in_value=field->intmp;
+}
+#endif
+
+
+
 /* This version of jtag_add_dr_scan() uses the check_value/mask fields */
 extern void jtag_add_dr_scan_check(int num_fields, scan_field_t* fields, tap_state_t endstate);
 extern int  interface_jtag_add_dr_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);