summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/target/mips_ejtag.c10
-rw-r--r--src/target/mips_ejtag.h6
2 files changed, 10 insertions, 6 deletions
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 */