diff options
Diffstat (limited to 'src/target')
-rw-r--r-- | src/target/etb.c | 69 | ||||
-rw-r--r-- | src/target/etb.h | 6 |
2 files changed, 35 insertions, 40 deletions
diff --git a/src/target/etb.c b/src/target/etb.c index a327fb6b..40bb34a1 100644 --- a/src/target/etb.c +++ b/src/target/etb.c @@ -96,6 +96,33 @@ static int etb_scann(etb_t *etb, uint32_t new_scan_chain) return ERROR_OK; } +static int etb_read_reg_w_check(reg_t *, uint8_t *, uint8_t *); +static int etb_set_reg_w_exec(reg_t *, uint8_t *); + +static int etb_read_reg(reg_t *reg) +{ + return etb_read_reg_w_check(reg, NULL, NULL); +} + +static int etb_get_reg(reg_t *reg) +{ + int retval; + + if ((retval = etb_read_reg(reg)) != ERROR_OK) + { + LOG_ERROR("BUG: error scheduling etm register read"); + return retval; + } + + if ((retval = jtag_execute_queue()) != ERROR_OK) + { + LOG_ERROR("register read failed"); + return retval; + } + + return ERROR_OK; +} + reg_cache_t* etb_build_reg_cache(etb_t *etb) { reg_cache_t *reg_cache = malloc(sizeof(reg_cache_t)); @@ -138,29 +165,10 @@ reg_cache_t* etb_build_reg_cache(etb_t *etb) return reg_cache; } -static int etb_get_reg(reg_t *reg) -{ - int retval; - - if ((retval = etb_read_reg(reg)) != ERROR_OK) - { - LOG_ERROR("BUG: error scheduling etm register read"); - return retval; - } - - if ((retval = jtag_execute_queue()) != ERROR_OK) - { - LOG_ERROR("register read failed"); - return retval; - } - - return ERROR_OK; -} - - static void etb_getbuf(jtag_callback_data_t arg) { - uint8_t *in = (uint8_t *)arg; + uint8_t *in = (uint8_t *)arg; + *((uint32_t *)in) = buf_get_u32(in, 0, 32); } @@ -218,7 +226,8 @@ static int etb_read_ram(etb_t *etb, uint32_t *data, int num_frames) return ERROR_OK; } -int etb_read_reg_w_check(reg_t *reg, uint8_t* check_value, uint8_t* check_mask) +static int etb_read_reg_w_check(reg_t *reg, + uint8_t* check_value, uint8_t* check_mask) { etb_reg_t *etb_reg = reg->arch_info; uint8_t reg_addr = etb_reg->addr & 0x7f; @@ -271,12 +280,9 @@ int etb_read_reg_w_check(reg_t *reg, uint8_t* check_value, uint8_t* check_mask) return ERROR_OK; } -int etb_read_reg(reg_t *reg) -{ - return etb_read_reg_w_check(reg, NULL, NULL); -} +static int etb_write_reg(reg_t *, uint32_t); -int etb_set_reg(reg_t *reg, uint32_t value) +static int etb_set_reg(reg_t *reg, uint32_t value) { int retval; @@ -293,7 +299,7 @@ int etb_set_reg(reg_t *reg, uint32_t value) return ERROR_OK; } -int etb_set_reg_w_exec(reg_t *reg, uint8_t *buf) +static int etb_set_reg_w_exec(reg_t *reg, uint8_t *buf) { int retval; @@ -307,7 +313,7 @@ int etb_set_reg_w_exec(reg_t *reg, uint8_t *buf) return ERROR_OK; } -int etb_write_reg(reg_t *reg, uint32_t value) +static int etb_write_reg(reg_t *reg, uint32_t value) { etb_reg_t *etb_reg = reg->arch_info; uint8_t reg_addr = etb_reg->addr & 0x7f; @@ -345,11 +351,6 @@ int etb_write_reg(reg_t *reg, uint32_t value) return ERROR_OK; } -int etb_store_reg(reg_t *reg) -{ - return etb_write_reg(reg, buf_get_u32(reg->value, 0, reg->size)); -} - static int etb_register_commands(struct command_context_s *cmd_ctx) { command_t *etb_cmd; diff --git a/src/target/etb.h b/src/target/etb.h index b262841c..0eeb02bd 100644 --- a/src/target/etb.h +++ b/src/target/etb.h @@ -57,11 +57,5 @@ typedef struct etb_reg_s extern etm_capture_driver_t etb_capture_driver; extern reg_cache_t* etb_build_reg_cache(etb_t *etb); -extern int etb_read_reg(reg_t *reg); -extern int etb_write_reg(reg_t *reg, uint32_t value); -extern int etb_read_reg_w_check(reg_t *reg, uint8_t* check_value, uint8_t* check_mask); -extern int etb_store_reg(reg_t *reg); -extern int etb_set_reg(reg_t *reg, uint32_t value); -extern int etb_set_reg_w_exec(reg_t *reg, uint8_t *buf); #endif /* ETB_H */ |