From 796086cd49f769a55bebcdd43d2d348672c87371 Mon Sep 17 00:00:00 2001
From: Stefan Mahr <stefan.mahr@sphairon.com>
Date: Tue, 31 May 2011 09:33:01 +0200
Subject: mips: fixup fastdata

fixup fastdata
---
 src/target/mips_ejtag.c | 10 ++++------
 src/target/mips_ejtag.h |  6 ++++++
 2 files changed, 10 insertions(+), 6 deletions(-)

(limited to 'src')

diff --git a/src/target/mips_ejtag.c b/src/target/mips_ejtag.c
index f9510494..449b6b82 100644
--- a/src/target/mips_ejtag.c
+++ b/src/target/mips_ejtag.c
@@ -342,7 +342,6 @@ int mips_ejtag_init(struct mips_ejtag *ejtag_info)
 int mips_ejtag_fastdata_scan(struct mips_ejtag *ejtag_info, int write_t, uint32_t *data)
 {
 	struct jtag_tap *tap;
-	uint8_t r[4];
 
 	tap = ejtag_info->tap;
 	assert(tap != NULL);
@@ -367,15 +366,14 @@ int mips_ejtag_fastdata_scan(struct mips_ejtag *ejtag_info, int write_t, uint32_
 	}
 	else
 	{
-		fields[1].in_value = r;
+		fields[1].in_value = (void *) data;
 	}
 
 	jtag_add_dr_scan(tap, 2, fields, TAP_IDLE);
 
-	if (!write_t)
-	{
-		*data = buf_get_u32(fields[1].in_value, 0, 32);
-	}
+	if ( (!write_t) && (data) )
+		jtag_add_callback(mips_le_to_h_u32,
+			(jtag_callback_data_t) data);
 
 	keep_alive();
 
diff --git a/src/target/mips_ejtag.h b/src/target/mips_ejtag.h
index a6ed95a5..399246c4 100644
--- a/src/target/mips_ejtag.h
+++ b/src/target/mips_ejtag.h
@@ -146,4 +146,10 @@ int mips_ejtag_init(struct mips_ejtag *ejtag_info);
 int mips_ejtag_config_step(struct mips_ejtag *ejtag_info, int enable_step);
 int mips_ejtag_read_debug(struct mips_ejtag *ejtag_info, uint32_t* debug_reg);
 
+static __inline__ void mips_le_to_h_u32(jtag_callback_data_t arg)
+{
+	uint8_t *in = (uint8_t *)arg;
+	*((uint32_t *)arg) = le_to_h_u32(in);
+}
+
 #endif /* MIPS_EJTAG */
-- 
cgit v1.2.3