> I bet that they have been deliberatly avoided in these functions
> because of performance penalities...
So it should go like this?
--- a/src/target/mips_ejtag.c
+++ b/src/target/mips_ejtag.c
@@ -339,10 +339,15 @@ int mips_ejtag_init(struct mips_ejtag *ejtag_info)
return ERROR_OK;
}
+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);
+}
+
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 +372,14 @@ int mips_ejtag_fastdata_scan(struct mips_ejtag
*ejtag_info, int write_t, ui
}
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();
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development