]> git.sur5r.net Git - openocd/blobdiff - src/target/mips_m4k.c
Fix regression in "step" command introduced in 2190
[openocd] / src / target / mips_m4k.c
index 07ecb5565d2afa5a56771d47bb62661d32da6930..f8164ff02f01f18247632607c97ce32c86ab29e3 100644 (file)
@@ -148,7 +148,7 @@ int mips_m4k_debug_entry(target_t *target)
 
        LOG_DEBUG("entered debug state at PC 0x%" PRIx32 ", target->state: %s",
                *(uint32_t*)(mips32->core_cache->reg_list[MIPS32_PC].value),
-                 Jim_Nvp_value2name_simple(nvp_target_state, target->state)->name);
+                 target_state_name(target));
 
        return ERROR_OK;
 }
@@ -220,7 +220,7 @@ int mips_m4k_halt(struct target_s *target)
        mips_ejtag_t *ejtag_info = &mips32->ejtag_info;
 
        LOG_DEBUG("target->state: %s",
-                 Jim_Nvp_value2name_simple(nvp_target_state, target->state)->name);
+                 target_state_name(target));
 
        if (target->state == TARGET_HALTED)
        {
@@ -265,7 +265,7 @@ int mips_m4k_assert_reset(target_t *target)
        mips_ejtag_t *ejtag_info = &mips32->ejtag_info;
 
        LOG_DEBUG("target->state: %s",
-               Jim_Nvp_value2name_simple(nvp_target_state, target->state)->name);
+               target_state_name(target));
 
        enum reset_types jtag_reset_config = jtag_get_reset_config();
        if (!(jtag_reset_config & RESET_HAS_SRST))
@@ -324,7 +324,7 @@ int mips_m4k_assert_reset(target_t *target)
 int mips_m4k_deassert_reset(target_t *target)
 {
        LOG_DEBUG("target->state: %s",
-               Jim_Nvp_value2name_simple(nvp_target_state, target->state)->name);
+               target_state_name(target));
 
        /* deassert reset lines */
        jtag_add_reset(0, 0);
@@ -513,7 +513,8 @@ int mips_m4k_set_breakpoint(struct target_s *target, breakpoint_t *breakpoint)
                        bp_num++;
                if (bp_num >= mips32->num_inst_bpoints)
                {
-                       LOG_DEBUG("ERROR Can not find free FP Comparator");
+                       LOG_DEBUG("ERROR Can not find free FP Comparator(bpid: %d)",
+                                         breakpoint->unique_id );
                        LOG_WARNING("ERROR Can not find free FP Comparator");
                        exit(-1);
                }
@@ -523,10 +524,13 @@ int mips_m4k_set_breakpoint(struct target_s *target, breakpoint_t *breakpoint)
                target_write_u32(target, comparator_list[bp_num].reg_address, comparator_list[bp_num].bp_value);
                target_write_u32(target, comparator_list[bp_num].reg_address + 0x08, 0x00000000);
                target_write_u32(target, comparator_list[bp_num].reg_address + 0x18, 1);
-               LOG_DEBUG("bp_num %i bp_value 0x%" PRIx32 "", bp_num, comparator_list[bp_num].bp_value);
+               LOG_DEBUG("bpid: %d, bp_num %i bp_value 0x%" PRIx32 "", 
+                                 breakpoint->unique_id,
+                                 bp_num, comparator_list[bp_num].bp_value);
        }
        else if (breakpoint->type == BKPT_SOFT)
        {
+               LOG_DEBUG("bpid: %d", breakpoint->unique_id );
                if (breakpoint->length == 4)
                {
                        uint32_t verify = 0xffffffff;
@@ -598,16 +602,22 @@ int mips_m4k_unset_breakpoint(struct target_s *target, breakpoint_t *breakpoint)
                int bp_num = breakpoint->set - 1;
                if ((bp_num < 0) || (bp_num >= mips32->num_inst_bpoints))
                {
-                       LOG_DEBUG("Invalid FP Comparator number in breakpoint");
+                       LOG_DEBUG("Invalid FP Comparator number in breakpoint (bpid: %d)",
+                                         breakpoint->unique_id);
                        return ERROR_OK;
                }
+               LOG_DEBUG("bpid: %d - releasing hw: %d",
+                                 breakpoint->unique_id,
+                                 bp_num );
                comparator_list[bp_num].used = 0;
                comparator_list[bp_num].bp_value = 0;
                target_write_u32(target, comparator_list[bp_num].reg_address + 0x18, 0);
+               
        }
        else
        {
                /* restore original instruction (kept in target endianness) */
+               LOG_DEBUG("bpid: %d", breakpoint->unique_id);
                if (breakpoint->length == 4)
                {
                        uint32_t current_instr;