change #include "fileio.h" to <helper/fileio.h>
[fw/openocd] / src / target / mips_m4k.c
index 9213ae0c622ebe80dfd670dc0fe3b620d927e476..a83217ff957498c016aad30b13315d250c86f929 100644 (file)
 #include "config.h"
 #endif
 
+#include "breakpoints.h"
 #include "mips32.h"
 #include "mips_m4k.h"
 #include "mips32_dmaacc.h"
 #include "target_type.h"
+#include "register.h"
 
 
 /* cli handling */
 
 /* forward declarations */
-int mips_m4k_poll(target_t *target);
-int mips_m4k_halt(struct target_s *target);
-int mips_m4k_soft_reset_halt(struct target_s *target);
-int mips_m4k_resume(struct target_s *target, int current, uint32_t address, int handle_breakpoints, int debug_execution);
-int mips_m4k_step(struct target_s *target, int current, uint32_t address, int handle_breakpoints);
-int mips_m4k_read_memory(struct target_s *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer);
-int mips_m4k_write_memory(struct target_s *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer);
-int mips_m4k_register_commands(struct command_context_s *cmd_ctx);
-int mips_m4k_init_target(struct command_context_s *cmd_ctx, struct target_s *target);
-int mips_m4k_target_create(struct target_s *target, Jim_Interp *interp);
-
-int mips_m4k_examine(struct target_s *target);
-int mips_m4k_assert_reset(target_t *target);
-int mips_m4k_deassert_reset(target_t *target);
-int mips_m4k_checksum_memory(target_t *target, uint32_t address, uint32_t size, uint32_t *checksum);
+int mips_m4k_poll(struct target *target);
+int mips_m4k_halt(struct target *target);
+int mips_m4k_soft_reset_halt(struct target *target);
+int mips_m4k_resume(struct target *target, int current, uint32_t address, int handle_breakpoints, int debug_execution);
+int mips_m4k_step(struct target *target, int current, uint32_t address, int handle_breakpoints);
+int mips_m4k_read_memory(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer);
+int mips_m4k_write_memory(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer);
+int mips_m4k_init_target(struct command_context *cmd_ctx, struct target *target);
+int mips_m4k_target_create(struct target *target, Jim_Interp *interp);
+
+int mips_m4k_examine(struct target *target);
+int mips_m4k_assert_reset(struct target *target);
+int mips_m4k_deassert_reset(struct target *target);
+int mips_m4k_checksum_memory(struct target *target, uint32_t address, uint32_t size, uint32_t *checksum);
 
 struct target_type mips_m4k_target =
 {
@@ -80,13 +81,12 @@ struct target_type mips_m4k_target =
        .add_watchpoint = mips_m4k_add_watchpoint,
        .remove_watchpoint = mips_m4k_remove_watchpoint,
 
-       .register_commands = mips_m4k_register_commands,
        .target_create = mips_m4k_target_create,
        .init_target = mips_m4k_init_target,
        .examine = mips_m4k_examine,
 };
 
-int mips_m4k_examine_debug_reason(target_t *target)
+int mips_m4k_examine_debug_reason(struct target *target)
 {
        uint32_t break_status;
        int retval;
@@ -120,7 +120,7 @@ int mips_m4k_examine_debug_reason(target_t *target)
        return ERROR_OK;
 }
 
-int mips_m4k_debug_entry(target_t *target)
+int mips_m4k_debug_entry(struct target *target)
 {
        struct mips32_common *mips32 = target->arch_info;
        struct mips_ejtag *ejtag_info = &mips32->ejtag_info;
@@ -151,7 +151,7 @@ int mips_m4k_debug_entry(target_t *target)
        return ERROR_OK;
 }
 
-int mips_m4k_poll(target_t *target)
+int mips_m4k_poll(struct target *target)
 {
        int retval;
        struct mips32_common *mips32 = target->arch_info;
@@ -212,7 +212,7 @@ int mips_m4k_poll(target_t *target)
        return ERROR_OK;
 }
 
-int mips_m4k_halt(struct target_s *target)
+int mips_m4k_halt(struct target *target)
 {
        struct mips32_common *mips32 = target->arch_info;
        struct mips_ejtag *ejtag_info = &mips32->ejtag_info;
@@ -257,7 +257,7 @@ int mips_m4k_halt(struct target_s *target)
        return ERROR_OK;
 }
 
-int mips_m4k_assert_reset(target_t *target)
+int mips_m4k_assert_reset(struct target *target)
 {
        struct mips32_common *mips32 = target->arch_info;
        struct mips_ejtag *ejtag_info = &mips32->ejtag_info;
@@ -307,7 +307,7 @@ int mips_m4k_assert_reset(target_t *target)
        target->state = TARGET_RESET;
        jtag_add_sleep(50000);
 
-       mips32_invalidate_core_regs(target);
+       register_cache_invalidate(mips32->core_cache);
 
        if (target->reset_halt)
        {
@@ -319,7 +319,7 @@ int mips_m4k_assert_reset(target_t *target)
        return ERROR_OK;
 }
 
-int mips_m4k_deassert_reset(target_t *target)
+int mips_m4k_deassert_reset(struct target *target)
 {
        LOG_DEBUG("target->state: %s",
                target_state_name(target));
@@ -330,13 +330,13 @@ int mips_m4k_deassert_reset(target_t *target)
        return ERROR_OK;
 }
 
-int mips_m4k_soft_reset_halt(struct target_s *target)
+int mips_m4k_soft_reset_halt(struct target *target)
 {
        /* TODO */
        return ERROR_OK;
 }
 
-int mips_m4k_single_step_core(target_t *target)
+int mips_m4k_single_step_core(struct target *target)
 {
        struct mips32_common *mips32 = target->arch_info;
        struct mips_ejtag *ejtag_info = &mips32->ejtag_info;
@@ -355,7 +355,7 @@ int mips_m4k_single_step_core(target_t *target)
        return ERROR_OK;
 }
 
-int mips_m4k_resume(struct target_s *target, int current, uint32_t address, int handle_breakpoints, int debug_execution)
+int mips_m4k_resume(struct target *target, int current, uint32_t address, int handle_breakpoints, int debug_execution)
 {
        struct mips32_common *mips32 = target->arch_info;
        struct mips_ejtag *ejtag_info = &mips32->ejtag_info;
@@ -408,7 +408,7 @@ int mips_m4k_resume(struct target_s *target, int current, uint32_t address, int
        target->debug_reason = DBG_REASON_NOTHALTED;
 
        /* registers are now invalid */
-       mips32_invalidate_core_regs(target);
+       register_cache_invalidate(mips32->core_cache);
 
        if (!debug_execution)
        {
@@ -426,7 +426,7 @@ int mips_m4k_resume(struct target_s *target, int current, uint32_t address, int
        return ERROR_OK;
 }
 
-int mips_m4k_step(struct target_s *target, int current, uint32_t address, int handle_breakpoints)
+int mips_m4k_step(struct target *target, int current, uint32_t address, int handle_breakpoints)
 {
        /* get pointers to arch-specific information */
        struct mips32_common *mips32 = target->arch_info;
@@ -465,7 +465,7 @@ int mips_m4k_step(struct target_s *target, int current, uint32_t address, int ha
        mips_ejtag_exit_debug(ejtag_info);
 
        /* registers are now invalid */
-       mips32_invalidate_core_regs(target);
+       register_cache_invalidate(mips32->core_cache);
 
        if (breakpoint)
                mips_m4k_set_breakpoint(target, breakpoint);
@@ -478,7 +478,7 @@ int mips_m4k_step(struct target_s *target, int current, uint32_t address, int ha
        return ERROR_OK;
 }
 
-void mips_m4k_enable_breakpoints(struct target_s *target)
+void mips_m4k_enable_breakpoints(struct target *target)
 {
        struct breakpoint *breakpoint = target->breakpoints;
 
@@ -491,7 +491,7 @@ void mips_m4k_enable_breakpoints(struct target_s *target)
        }
 }
 
-int mips_m4k_set_breakpoint(struct target_s *target, struct breakpoint *breakpoint)
+int mips_m4k_set_breakpoint(struct target *target, struct breakpoint *breakpoint)
 {
        struct mips32_common *mips32 = target->arch_info;
        struct mips32_comparator * comparator_list = mips32->inst_break_list;
@@ -511,10 +511,9 @@ int mips_m4k_set_breakpoint(struct target_s *target, struct breakpoint *breakpoi
                        bp_num++;
                if (bp_num >= mips32->num_inst_bpoints)
                {
-                       LOG_DEBUG("ERROR Can not find free FP Comparator(bpid: %d)",
+                       LOG_ERROR("Can not find free FP Comparator(bpid: %d)",
                                          breakpoint->unique_id );
-                       LOG_WARNING("ERROR Can not find free FP Comparator");
-                       exit(-1);
+                       return ERROR_FAIL;
                }
                breakpoint->set = bp_num + 1;
                comparator_list[bp_num].used = 1;
@@ -582,7 +581,7 @@ int mips_m4k_set_breakpoint(struct target_s *target, struct breakpoint *breakpoi
        return ERROR_OK;
 }
 
-int mips_m4k_unset_breakpoint(struct target_s *target, struct breakpoint *breakpoint)
+int mips_m4k_unset_breakpoint(struct target *target, struct breakpoint *breakpoint)
 {
        /* get pointers to arch-specific information */
        struct mips32_common *mips32 = target->arch_info;
@@ -657,7 +656,7 @@ int mips_m4k_unset_breakpoint(struct target_s *target, struct breakpoint *breakp
        return ERROR_OK;
 }
 
-int mips_m4k_add_breakpoint(struct target_s *target, struct breakpoint *breakpoint)
+int mips_m4k_add_breakpoint(struct target *target, struct breakpoint *breakpoint)
 {
        struct mips32_common *mips32 = target->arch_info;
 
@@ -677,7 +676,7 @@ int mips_m4k_add_breakpoint(struct target_s *target, struct breakpoint *breakpoi
        return ERROR_OK;
 }
 
-int mips_m4k_remove_breakpoint(struct target_s *target, struct breakpoint *breakpoint)
+int mips_m4k_remove_breakpoint(struct target *target, struct breakpoint *breakpoint)
 {
        /* get pointers to arch-specific information */
        struct mips32_common *mips32 = target->arch_info;
@@ -699,7 +698,7 @@ int mips_m4k_remove_breakpoint(struct target_s *target, struct breakpoint *break
        return ERROR_OK;
 }
 
-int mips_m4k_set_watchpoint(struct target_s *target, struct watchpoint *watchpoint)
+int mips_m4k_set_watchpoint(struct target *target, struct watchpoint *watchpoint)
 {
        struct mips32_common *mips32 = target->arch_info;
        struct mips32_comparator * comparator_list = mips32->data_break_list;
@@ -722,9 +721,8 @@ int mips_m4k_set_watchpoint(struct target_s *target, struct watchpoint *watchpoi
                wp_num++;
        if (wp_num >= mips32->num_data_bpoints)
        {
-               LOG_DEBUG("ERROR Can not find free FP Comparator");
-               LOG_WARNING("ERROR Can not find free FP Comparator");
-               exit(-1);
+               LOG_ERROR("Can not find free FP Comparator");
+               return ERROR_FAIL;
        }
 
        if (watchpoint->length != 4)
@@ -767,7 +765,7 @@ int mips_m4k_set_watchpoint(struct target_s *target, struct watchpoint *watchpoi
        return ERROR_OK;
 }
 
-int mips_m4k_unset_watchpoint(struct target_s *target, struct watchpoint *watchpoint)
+int mips_m4k_unset_watchpoint(struct target *target, struct watchpoint *watchpoint)
 {
        /* get pointers to arch-specific information */
        struct mips32_common *mips32 = target->arch_info;
@@ -793,7 +791,7 @@ int mips_m4k_unset_watchpoint(struct target_s *target, struct watchpoint *watchp
        return ERROR_OK;
 }
 
-int mips_m4k_add_watchpoint(struct target_s *target, struct watchpoint *watchpoint)
+int mips_m4k_add_watchpoint(struct target *target, struct watchpoint *watchpoint)
 {
        struct mips32_common *mips32 = target->arch_info;
 
@@ -809,7 +807,7 @@ int mips_m4k_add_watchpoint(struct target_s *target, struct watchpoint *watchpoi
        return ERROR_OK;
 }
 
-int mips_m4k_remove_watchpoint(struct target_s *target, struct watchpoint *watchpoint)
+int mips_m4k_remove_watchpoint(struct target *target, struct watchpoint *watchpoint)
 {
        /* get pointers to arch-specific information */
        struct mips32_common *mips32 = target->arch_info;
@@ -830,7 +828,7 @@ int mips_m4k_remove_watchpoint(struct target_s *target, struct watchpoint *watch
        return ERROR_OK;
 }
 
-void mips_m4k_enable_watchpoints(struct target_s *target)
+void mips_m4k_enable_watchpoints(struct target *target)
 {
        struct watchpoint *watchpoint = target->watchpoints;
 
@@ -843,7 +841,7 @@ void mips_m4k_enable_watchpoints(struct target_s *target)
        }
 }
 
-int mips_m4k_read_memory(struct target_s *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer)
+int mips_m4k_read_memory(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer)
 {
        struct mips32_common *mips32 = target->arch_info;
        struct mips_ejtag *ejtag_info = &mips32->ejtag_info;
@@ -875,7 +873,7 @@ int mips_m4k_read_memory(struct target_s *target, uint32_t address, uint32_t siz
        return ERROR_OK;
 }
 
-int mips_m4k_write_memory(struct target_s *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer)
+int mips_m4k_write_memory(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer)
 {
        struct mips32_common *mips32 = target->arch_info;
        struct mips_ejtag *ejtag_info = &mips32->ejtag_info;
@@ -902,22 +900,14 @@ int mips_m4k_write_memory(struct target_s *target, uint32_t address, uint32_t si
                return mips32_dmaacc_write_mem(ejtag_info, address, size, count, (void *)buffer);
 }
 
-int mips_m4k_register_commands(struct command_context_s *cmd_ctx)
-{
-       int retval;
-
-       retval = mips32_register_commands(cmd_ctx);
-       return retval;
-}
-
-int mips_m4k_init_target(struct command_context_s *cmd_ctx, struct target_s *target)
+int mips_m4k_init_target(struct command_context *cmd_ctx, struct target *target)
 {
        mips32_build_reg_cache(target);
 
        return ERROR_OK;
 }
 
-int mips_m4k_init_arch_info(target_t *target, struct mips_m4k_common *mips_m4k, struct jtag_tap *tap)
+int mips_m4k_init_arch_info(struct target *target, struct mips_m4k_common *mips_m4k, struct jtag_tap *tap)
 {
        struct mips32_common *mips32 = &mips_m4k->mips32_common;
 
@@ -930,7 +920,7 @@ int mips_m4k_init_arch_info(target_t *target, struct mips_m4k_common *mips_m4k,
        return ERROR_OK;
 }
 
-int mips_m4k_target_create(struct target_s *target, Jim_Interp *interp)
+int mips_m4k_target_create(struct target *target, Jim_Interp *interp)
 {
        struct mips_m4k_common *mips_m4k = calloc(1,sizeof(struct mips_m4k_common));
 
@@ -939,7 +929,7 @@ int mips_m4k_target_create(struct target_s *target, Jim_Interp *interp)
        return ERROR_OK;
 }
 
-int mips_m4k_examine(struct target_s *target)
+int mips_m4k_examine(struct target *target)
 {
        int retval;
        struct mips32_common *mips32 = target->arch_info;
@@ -970,12 +960,12 @@ int mips_m4k_examine(struct target_s *target)
        return ERROR_OK;
 }
 
-int mips_m4k_bulk_write_memory(target_t *target, uint32_t address, uint32_t count, uint8_t *buffer)
+int mips_m4k_bulk_write_memory(struct target *target, uint32_t address, uint32_t count, uint8_t *buffer)
 {
        return mips_m4k_write_memory(target, address, 4, count, buffer);
 }
 
-int mips_m4k_checksum_memory(target_t *target, uint32_t address, uint32_t size, uint32_t *checksum)
+int mips_m4k_checksum_memory(struct target *target, uint32_t address, uint32_t size, uint32_t *checksum)
 {
        return ERROR_FAIL; /* use bulk read method */
 }