X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Ftarget%2Farm11_dbgtap.c;h=3513e5997ece7720e8d5e9b93cba05f00b292432;hb=7805be1b3a8f65aff9a861fd8ca62518143f1524;hp=0dcc2d0b3cbbe1c91a183448a243e48574b98d16;hpb=58cccae6396b9279852c4eb06bc04b690561e3bb;p=openocd diff --git a/src/target/arm11_dbgtap.c b/src/target/arm11_dbgtap.c index 0dcc2d0b..3513e599 100644 --- a/src/target/arm11_dbgtap.c +++ b/src/target/arm11_dbgtap.c @@ -45,7 +45,8 @@ int arm11_add_ir_scan_vc(int num_fields, scan_field_t *fields, enum tap_state st if (cmd_queue_cur_state == TAP_PI) jtag_add_pathmove(asizeof(arm11_move_pi_to_si_via_ci), arm11_move_pi_to_si_via_ci); - return jtag_add_ir_scan(num_fields, fields, state); + jtag_add_ir_scan(num_fields, fields, state); + return ERROR_OK; } enum tap_state arm11_move_pd_to_sd_via_cd[] = @@ -58,7 +59,8 @@ int arm11_add_dr_scan_vc(int num_fields, scan_field_t *fields, enum tap_state st if (cmd_queue_cur_state == TAP_PD) jtag_add_pathmove(asizeof(arm11_move_pd_to_sd_via_cd), arm11_move_pd_to_sd_via_cd); - return jtag_add_dr_scan(num_fields, fields, state); + jtag_add_dr_scan(num_fields, fields, state); + return ERROR_OK; } @@ -126,7 +128,7 @@ static int arm11_in_handler_SCAN_N(u8 *in_value, void *priv, struct scan_field_s if (v != 0x10) { - ERROR("'arm11 target' JTAG communication error SCREG SCAN OUT 0x%02x (expected 0x10)", v); + LOG_ERROR("'arm11 target' JTAG communication error SCREG SCAN OUT 0x%02x (expected 0x10)", v); exit(-1); } @@ -274,14 +276,32 @@ enum target_debug_reason arm11_get_DSCR_debug_reason(u32 dscr) { switch (dscr & ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_MASK) { - case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_HALT: return DBG_REASON_DBGRQ; - case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_BREAKPOINT: return DBG_REASON_BREAKPOINT; - case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_WATCHPOINT: return DBG_REASON_WATCHPOINT; - case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_BKPT_INSTRUCTION: return DBG_REASON_BREAKPOINT; - case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_EDBGRQ: return DBG_REASON_DBGRQ; - case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_VECTOR_CATCH: return DBG_REASON_BREAKPOINT; + case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_HALT: + LOG_INFO("Debug entry: JTAG HALT"); + return DBG_REASON_DBGRQ; + + case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_BREAKPOINT: + LOG_INFO("Debug entry: breakpoint"); + return DBG_REASON_BREAKPOINT; + + case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_WATCHPOINT: + LOG_INFO("Debug entry: watchpoint"); + return DBG_REASON_WATCHPOINT; + + case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_BKPT_INSTRUCTION: + LOG_INFO("Debug entry: BKPT instruction"); + return DBG_REASON_BREAKPOINT; + + case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_EDBGRQ: + LOG_INFO("Debug entry: EDBGRQ signal"); + return DBG_REASON_DBGRQ; + + case ARM11_DSCR_METHOD_OF_DEBUG_ENTRY_VECTOR_CATCH: + LOG_INFO("Debug entry: VCR vector catch"); + return DBG_REASON_BREAKPOINT; default: + LOG_INFO("Debug entry: unknown"); return DBG_REASON_DBGRQ; } }; @@ -521,7 +541,7 @@ void arm11_run_instr_data_to_core_noack(arm11_common_t * arm11, u32 opcode, u32 }} if (error_count) - ERROR("Transfer errors %d", error_count); + LOG_ERROR("Transfer errors " ZU, error_count); } @@ -687,7 +707,7 @@ void arm11_sc7_run(arm11_common_t * arm11, arm11_sc7_action_t * actions, size_t { if (actions[i - 1].address != AddressIn) { - WARNING("Scan chain 7 shifted out unexpected address"); + LOG_WARNING("Scan chain 7 shifted out unexpected address"); } if (!actions[i - 1].write) @@ -698,7 +718,7 @@ void arm11_sc7_run(arm11_common_t * arm11, arm11_sc7_action_t * actions, size_t { if (actions[i - 1].value != DataIn) { - WARNING("Scan chain 7 shifted out unexpected data"); + LOG_WARNING("Scan chain 7 shifted out unexpected data"); } } } @@ -739,6 +759,8 @@ void arm11_sc7_clear_vbw(arm11_common_t * arm11) } (pos++)->address = ARM11_SC7_VCR; + + arm11_sc7_run(arm11, clear_bw, asizeof(clear_bw)); } /** Write VCR register @@ -750,7 +772,7 @@ void arm11_sc7_set_vcr(arm11_common_t * arm11, u32 value) { arm11_sc7_action_t set_vcr; - set_vcr.write = 0; + set_vcr.write = true; set_vcr.address = ARM11_SC7_VCR; set_vcr.value = value;