diff options
Diffstat (limited to 'src/target')
-rw-r--r-- | src/target/mips_ejtag.c | 10 | ||||
-rw-r--r-- | src/target/mips_ejtag.h | 6 |
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 */ |