command_handler: change 'args' to CMD_ARGV
[openocd.git] / src / target / xscale.c
index e757271a37fb1a7a19442261af70d4d2fcffe1dc..9500a33b67ab304f1f7bbcf661af3538c65d573a 100644 (file)
 #include "config.h"
 #endif
 
+#include "breakpoints.h"
 #include "xscale.h"
 #include "target_type.h"
-#include "arm7_9_common.h"
+#include "arm_jtag.h"
 #include "arm_simulator.h"
 #include "arm_disassembler.h"
 #include "time_support.h"
+#include "register.h"
 #include "image.h"
 
 
 
 
 /* forward declarations */
-static int xscale_resume(struct target_s *, int current,
+static int xscale_resume(struct target *, int current,
        uint32_t address, int handle_breakpoints, int debug_execution);
-static int xscale_debug_entry(target_t *);
-static int xscale_restore_context(target_t *);
+static int xscale_debug_entry(struct target *);
+static int xscale_restore_context(struct target *);
 static int xscale_get_reg(struct reg *reg);
 static int xscale_set_reg(struct reg *reg, uint8_t *buf);
-static int xscale_set_breakpoint(struct target_s *, struct breakpoint *);
-static int xscale_set_watchpoint(struct target_s *, struct watchpoint *);
-static int xscale_unset_breakpoint(struct target_s *, struct breakpoint *);
-static int xscale_read_trace(target_t *);
+static int xscale_set_breakpoint(struct target *, struct breakpoint *);
+static int xscale_set_watchpoint(struct target *, struct watchpoint *);
+static int xscale_unset_breakpoint(struct target *, struct breakpoint *);
+static int xscale_read_trace(struct target *);
 
 
 /* This XScale "debug handler" is loaded into the processor's
@@ -132,8 +134,6 @@ static const struct xscale_reg xscale_reg_arch_info[] =
        {-1, NULL}, /* TXRXCTRL implicit access via JTAG */
 };
 
-static int xscale_reg_arch_type = -1;
-
 /* convenience wrapper to access XScale specific registers */
 static int xscale_set_reg_u32(struct reg *reg, uint32_t value)
 {
@@ -146,7 +146,7 @@ static int xscale_set_reg_u32(struct reg *reg, uint32_t value)
 
 static const char xscale_not[] = "target is not an XScale";
 
-static int xscale_verify_pointer(struct command_context_s *cmd_ctx,
+static int xscale_verify_pointer(struct command_context *cmd_ctx,
                struct xscale_common *xscale)
 {
        if (xscale->common_magic != XSCALE_COMMON_MAGIC) {
@@ -178,7 +178,7 @@ static int xscale_jtag_set_instr(struct jtag_tap *tap, uint32_t new_instr)
        return ERROR_OK;
 }
 
-static int xscale_read_dcsr(target_t *target)
+static int xscale_read_dcsr(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        int retval;
@@ -251,7 +251,7 @@ static void xscale_getbuf(jtag_callback_data_t arg)
        *((uint32_t *)in) = buf_get_u32(in, 0, 32);
 }
 
-static int xscale_receive(target_t *target, uint32_t *buffer, int num_words)
+static int xscale_receive(struct target *target, uint32_t *buffer, int num_words)
 {
        if (num_words == 0)
                return ERROR_INVALID_ARGUMENTS;
@@ -355,7 +355,7 @@ static int xscale_receive(target_t *target, uint32_t *buffer, int num_words)
        return retval;
 }
 
-static int xscale_read_tx(target_t *target, int consume)
+static int xscale_read_tx(struct target *target, int consume)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        tap_state_t path[3];
@@ -453,7 +453,7 @@ static int xscale_read_tx(target_t *target, int consume)
        return ERROR_OK;
 }
 
-static int xscale_write_rx(target_t *target)
+static int xscale_write_rx(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        int retval;
@@ -539,7 +539,7 @@ static int xscale_write_rx(target_t *target)
 }
 
 /* send count elements of size byte to the debug handler */
-static int xscale_send(target_t *target, uint8_t *buffer, int count, int size)
+static int xscale_send(struct target *target, uint8_t *buffer, int count, int size)
 {
        uint32_t t[3];
        int bits[3];
@@ -583,7 +583,7 @@ static int xscale_send(target_t *target, uint8_t *buffer, int count, int size)
                        break;
                default:
                        LOG_ERROR("BUG: size neither 4, 2 nor 1");
-                       exit(-1);
+                       return ERROR_INVALID_ARGUMENTS;
                }
                jtag_add_dr_out(target->tap,
                                3,
@@ -602,7 +602,7 @@ static int xscale_send(target_t *target, uint8_t *buffer, int count, int size)
        return ERROR_OK;
 }
 
-static int xscale_send_u32(target_t *target, uint32_t value)
+static int xscale_send_u32(struct target *target, uint32_t value)
 {
        struct xscale_common *xscale = target_to_xscale(target);
 
@@ -610,7 +610,7 @@ static int xscale_send_u32(target_t *target, uint32_t value)
        return xscale_write_rx(target);
 }
 
-static int xscale_write_dcsr(target_t *target, int hold_rst, int ext_dbg_brk)
+static int xscale_write_dcsr(struct target *target, int hold_rst, int ext_dbg_brk)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        int retval;
@@ -681,7 +681,7 @@ static unsigned int parity (unsigned int v)
        return (0x6996 >> v) & 1;
 }
 
-static int xscale_load_ic(target_t *target, uint32_t va, uint32_t buffer[8])
+static int xscale_load_ic(struct target *target, uint32_t va, uint32_t buffer[8])
 {
        uint8_t packet[4];
        uint8_t cmd;
@@ -736,7 +736,7 @@ static int xscale_load_ic(target_t *target, uint32_t va, uint32_t buffer[8])
        return jtag_execute_queue();
 }
 
-static int xscale_invalidate_ic_line(target_t *target, uint32_t va)
+static int xscale_invalidate_ic_line(struct target *target, uint32_t va)
 {
        uint8_t packet[4];
        uint8_t cmd;
@@ -766,7 +766,7 @@ static int xscale_invalidate_ic_line(target_t *target, uint32_t va)
        return ERROR_OK;
 }
 
-static int xscale_update_vectors(target_t *target)
+static int xscale_update_vectors(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        int i;
@@ -830,7 +830,7 @@ static int xscale_update_vectors(target_t *target)
        return ERROR_OK;
 }
 
-static int xscale_arch_state(struct target_s *target)
+static int xscale_arch_state(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        struct armv4_5_common_s *armv4_5 = &xscale->armv4_5_common;
@@ -848,7 +848,7 @@ static int xscale_arch_state(struct target_s *target)
        if (armv4_5->common_magic != ARMV4_5_COMMON_MAGIC)
        {
                LOG_ERROR("BUG: called for a non-ARMv4/5 target");
-               exit(-1);
+               return ERROR_INVALID_ARGUMENTS;
        }
 
        LOG_USER("target halted in %s state due to %s, current mode: %s\n"
@@ -868,7 +868,7 @@ static int xscale_arch_state(struct target_s *target)
        return ERROR_OK;
 }
 
-static int xscale_poll(target_t *target)
+static int xscale_poll(struct target *target)
 {
        int retval = ERROR_OK;
 
@@ -908,7 +908,7 @@ static int xscale_poll(target_t *target)
        return retval;
 }
 
-static int xscale_debug_entry(target_t *target)
+static int xscale_debug_entry(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        struct armv4_5_common_s *armv4_5 = &xscale->armv4_5_common;
@@ -1088,7 +1088,7 @@ static int xscale_debug_entry(target_t *target)
        return ERROR_OK;
 }
 
-static int xscale_halt(target_t *target)
+static int xscale_halt(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
 
@@ -1122,7 +1122,7 @@ static int xscale_halt(target_t *target)
        return ERROR_OK;
 }
 
-static int xscale_enable_single_step(struct target_s *target, uint32_t next_pc)
+static int xscale_enable_single_step(struct target *target, uint32_t next_pc)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        struct reg *ibcr0 = &xscale->reg_cache->reg_list[XSCALE_IBCR0];
@@ -1149,7 +1149,7 @@ static int xscale_enable_single_step(struct target_s *target, uint32_t next_pc)
        return ERROR_OK;
 }
 
-static int xscale_disable_single_step(struct target_s *target)
+static int xscale_disable_single_step(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        struct reg *ibcr0 = &xscale->reg_cache->reg_list[XSCALE_IBCR0];
@@ -1161,7 +1161,7 @@ static int xscale_disable_single_step(struct target_s *target)
        return ERROR_OK;
 }
 
-static void xscale_enable_watchpoints(struct target_s *target)
+static void xscale_enable_watchpoints(struct target *target)
 {
        struct watchpoint *watchpoint = target->watchpoints;
 
@@ -1173,7 +1173,7 @@ static void xscale_enable_watchpoints(struct target_s *target)
        }
 }
 
-static void xscale_enable_breakpoints(struct target_s *target)
+static void xscale_enable_breakpoints(struct target *target)
 {
        struct breakpoint *breakpoint = target->breakpoints;
 
@@ -1186,7 +1186,7 @@ static void xscale_enable_breakpoints(struct target_s *target)
        }
 }
 
-static int xscale_resume(struct target_s *target, int current,
+static int xscale_resume(struct target *target, int current,
                uint32_t address, int handle_breakpoints, int debug_execution)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -1339,7 +1339,7 @@ static int xscale_resume(struct target_s *target, int current,
        return ERROR_OK;
 }
 
-static int xscale_step_inner(struct target_s *target, int current,
+static int xscale_step_inner(struct target *target, int current,
                uint32_t address, int handle_breakpoints)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -1419,7 +1419,7 @@ static int xscale_step_inner(struct target_s *target, int current,
        return ERROR_OK;
 }
 
-static int xscale_step(struct target_s *target, int current,
+static int xscale_step(struct target *target, int current,
                uint32_t address, int handle_breakpoints)
 {
        struct armv4_5_common_s *armv4_5 = target_to_armv4_5(target);
@@ -1474,7 +1474,7 @@ static int xscale_step(struct target_s *target, int current,
 
 }
 
-static int xscale_assert_reset(target_t *target)
+static int xscale_assert_reset(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
 
@@ -1515,7 +1515,7 @@ static int xscale_assert_reset(target_t *target)
        return ERROR_OK;
 }
 
-static int xscale_deassert_reset(target_t *target)
+static int xscale_deassert_reset(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        struct breakpoint *breakpoint = target->breakpoints;
@@ -1649,21 +1649,21 @@ static int xscale_deassert_reset(target_t *target)
        return ERROR_OK;
 }
 
-static int xscale_read_core_reg(struct target_s *target, int num,
+static int xscale_read_core_reg(struct target *target, int num,
                enum armv4_5_mode mode)
 {
        LOG_ERROR("not implemented");
        return ERROR_OK;
 }
 
-static int xscale_write_core_reg(struct target_s *target, int num,
+static int xscale_write_core_reg(struct target *target, int num,
                enum armv4_5_mode mode, uint32_t value)
 {
        LOG_ERROR("not implemented");
        return ERROR_OK;
 }
 
-static int xscale_full_context(target_t *target)
+static int xscale_full_context(struct target *target)
 {
        struct armv4_5_common_s *armv4_5 = target_to_armv4_5(target);
 
@@ -1739,7 +1739,7 @@ static int xscale_full_context(target_t *target)
        return ERROR_OK;
 }
 
-static int xscale_restore_context(target_t *target)
+static int xscale_restore_context(struct target *target)
 {
        struct armv4_5_common_s *armv4_5 = target_to_armv4_5(target);
 
@@ -1806,7 +1806,7 @@ static int xscale_restore_context(target_t *target)
        return ERROR_OK;
 }
 
-static int xscale_read_memory(struct target_s *target, uint32_t address,
+static int xscale_read_memory(struct target *target, uint32_t address,
                uint32_t size, uint32_t count, uint8_t *buffer)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -1863,8 +1863,8 @@ static int xscale_read_memory(struct target_s *target, uint32_t address,
                                *buffer++ = buf32[i] & 0xff;
                                break;
                        default:
-                               LOG_ERROR("should never get here");
-                               exit(-1);
+                               LOG_ERROR("invalid read size");
+                               return ERROR_INVALID_ARGUMENTS;
                }
        }
 
@@ -1885,7 +1885,7 @@ static int xscale_read_memory(struct target_s *target, uint32_t address,
        return ERROR_OK;
 }
 
-static int xscale_write_memory(struct target_s *target, uint32_t address,
+static int xscale_write_memory(struct target *target, uint32_t address,
                uint32_t size, uint32_t count, uint8_t *buffer)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -1963,13 +1963,13 @@ static int xscale_write_memory(struct target_s *target, uint32_t address,
        return ERROR_OK;
 }
 
-static int xscale_bulk_write_memory(target_t *target, uint32_t address,
+static int xscale_bulk_write_memory(struct target *target, uint32_t address,
                uint32_t count, uint8_t *buffer)
 {
        return xscale_write_memory(target, address, 4, count, buffer);
 }
 
-static uint32_t xscale_get_ttb(target_t *target)
+static uint32_t xscale_get_ttb(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        uint32_t ttb;
@@ -1980,7 +1980,7 @@ static uint32_t xscale_get_ttb(target_t *target)
        return ttb;
 }
 
-static void xscale_disable_mmu_caches(target_t *target, int mmu,
+static void xscale_disable_mmu_caches(struct target *target, int mmu,
                int d_u_cache, int i_cache)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -2019,7 +2019,7 @@ static void xscale_disable_mmu_caches(target_t *target, int mmu,
        xscale_send_u32(target, 0x53);
 }
 
-static void xscale_enable_mmu_caches(target_t *target, int mmu,
+static void xscale_enable_mmu_caches(struct target *target, int mmu,
                int d_u_cache, int i_cache)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -2045,7 +2045,7 @@ static void xscale_enable_mmu_caches(target_t *target, int mmu,
        xscale_send_u32(target, 0x53);
 }
 
-static int xscale_set_breakpoint(struct target_s *target,
+static int xscale_set_breakpoint(struct target *target,
                struct breakpoint *breakpoint)
 {
        int retval;
@@ -2118,7 +2118,7 @@ static int xscale_set_breakpoint(struct target_s *target,
        return ERROR_OK;
 }
 
-static int xscale_add_breakpoint(struct target_s *target,
+static int xscale_add_breakpoint(struct target *target,
                struct breakpoint *breakpoint)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -2149,7 +2149,7 @@ static int xscale_add_breakpoint(struct target_s *target,
        return ERROR_OK;
 }
 
-static int xscale_unset_breakpoint(struct target_s *target,
+static int xscale_unset_breakpoint(struct target *target,
                struct breakpoint *breakpoint)
 {
        int retval;
@@ -2204,7 +2204,7 @@ static int xscale_unset_breakpoint(struct target_s *target,
        return ERROR_OK;
 }
 
-static int xscale_remove_breakpoint(struct target_s *target, struct breakpoint *breakpoint)
+static int xscale_remove_breakpoint(struct target *target, struct breakpoint *breakpoint)
 {
        struct xscale_common *xscale = target_to_xscale(target);
 
@@ -2225,7 +2225,7 @@ static int xscale_remove_breakpoint(struct target_s *target, struct breakpoint *
        return ERROR_OK;
 }
 
-static int xscale_set_watchpoint(struct target_s *target,
+static int xscale_set_watchpoint(struct target *target,
                struct watchpoint *watchpoint)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -2281,7 +2281,7 @@ static int xscale_set_watchpoint(struct target_s *target,
        return ERROR_OK;
 }
 
-static int xscale_add_watchpoint(struct target_s *target,
+static int xscale_add_watchpoint(struct target *target,
                struct watchpoint *watchpoint)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -2307,7 +2307,7 @@ static int xscale_add_watchpoint(struct target_s *target,
        return ERROR_OK;
 }
 
-static int xscale_unset_watchpoint(struct target_s *target,
+static int xscale_unset_watchpoint(struct target *target,
                struct watchpoint *watchpoint)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -2343,7 +2343,7 @@ static int xscale_unset_watchpoint(struct target_s *target,
        return ERROR_OK;
 }
 
-static int xscale_remove_watchpoint(struct target_s *target, struct watchpoint *watchpoint)
+static int xscale_remove_watchpoint(struct target *target, struct watchpoint *watchpoint)
 {
        struct xscale_common *xscale = target_to_xscale(target);
 
@@ -2366,7 +2366,7 @@ static int xscale_remove_watchpoint(struct target_s *target, struct watchpoint *
 static int xscale_get_reg(struct reg *reg)
 {
        struct xscale_reg *arch_info = reg->arch_info;
-       target_t *target = arch_info->target;
+       struct target *target = arch_info->target;
        struct xscale_common *xscale = target_to_xscale(target);
 
        /* DCSR, TX and RX are accessible via JTAG */
@@ -2411,7 +2411,7 @@ static int xscale_get_reg(struct reg *reg)
 static int xscale_set_reg(struct reg *reg, uint8_t* buf)
 {
        struct xscale_reg *arch_info = reg->arch_info;
-       target_t *target = arch_info->target;
+       struct target *target = arch_info->target;
        struct xscale_common *xscale = target_to_xscale(target);
        uint32_t value = buf_get_u32(buf, 0, 32);
 
@@ -2452,7 +2452,7 @@ static int xscale_set_reg(struct reg *reg, uint8_t* buf)
        return ERROR_OK;
 }
 
-static int xscale_write_dcsr_sw(target_t *target, uint32_t value)
+static int xscale_write_dcsr_sw(struct target *target, uint32_t value)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        struct reg *dcsr = &xscale->reg_cache->reg_list[XSCALE_DCSR];
@@ -2471,7 +2471,7 @@ static int xscale_write_dcsr_sw(target_t *target, uint32_t value)
        return ERROR_OK;
 }
 
-static int xscale_read_trace(target_t *target)
+static int xscale_read_trace(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        struct armv4_5_common_s *armv4_5 = &xscale->armv4_5_common;
@@ -2549,13 +2549,13 @@ static int xscale_read_trace(target_t *target)
        return ERROR_OK;
 }
 
-static int xscale_read_instruction(target_t *target,
+static int xscale_read_instruction(struct target *target,
                struct arm_instruction *instruction)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        int i;
        int section = -1;
-       uint32_t size_read;
+       size_t size_read;
        uint32_t opcode;
        int retval;
 
@@ -2630,7 +2630,7 @@ static int xscale_branch_address(struct xscale_trace_data *trace_data,
        return 0;
 }
 
-static int xscale_analyze_trace(target_t *target, command_context_t *cmd_ctx)
+static int xscale_analyze_trace(struct target *target, struct command_context *cmd_ctx)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        int next_pc_ok = 0;
@@ -2817,7 +2817,12 @@ static int xscale_analyze_trace(target_t *target, command_context_t *cmd_ctx)
        return ERROR_OK;
 }
 
-static void xscale_build_reg_cache(target_t *target)
+static const struct reg_arch_type xscale_reg_type = {
+       .get = xscale_get_reg,
+       .set = xscale_set_reg,
+};
+
+static void xscale_build_reg_cache(struct target *target)
 {
        struct xscale_common *xscale = target_to_xscale(target);
        struct armv4_5_common_s *armv4_5 = &xscale->armv4_5_common;
@@ -2829,10 +2834,6 @@ static void xscale_build_reg_cache(target_t *target)
        (*cache_p) = armv4_5_build_reg_cache(target, armv4_5);
        armv4_5->core_cache = (*cache_p);
 
-       /* register a register arch-type for XScale dbg registers only once */
-       if (xscale_reg_arch_type == -1)
-               xscale_reg_arch_type = register_reg_arch_type(xscale_get_reg, xscale_set_reg);
-
        (*cache_p)->next = malloc(sizeof(struct reg_cache));
        cache_p = &(*cache_p)->next;
 
@@ -2849,10 +2850,8 @@ static void xscale_build_reg_cache(target_t *target)
                (*cache_p)->reg_list[i].dirty = 0;
                (*cache_p)->reg_list[i].valid = 0;
                (*cache_p)->reg_list[i].size = 32;
-               (*cache_p)->reg_list[i].bitfield_desc = NULL;
-               (*cache_p)->reg_list[i].num_bitfields = 0;
                (*cache_p)->reg_list[i].arch_info = &arch_info[i];
-               (*cache_p)->reg_list[i].arch_type = xscale_reg_arch_type;
+               (*cache_p)->reg_list[i].type = &xscale_reg_type;
                arch_info[i] = xscale_reg_arch_info[i];
                arch_info[i].target = target;
        }
@@ -2860,14 +2859,14 @@ static void xscale_build_reg_cache(target_t *target)
        xscale->reg_cache = (*cache_p);
 }
 
-static int xscale_init_target(struct command_context_s *cmd_ctx,
-               struct target_s *target)
+static int xscale_init_target(struct command_context *cmd_ctx,
+               struct target *target)
 {
        xscale_build_reg_cache(target);
        return ERROR_OK;
 }
 
-static int xscale_init_arch_info(target_t *target,
+static int xscale_init_arch_info(struct target *target,
                struct xscale_common *xscale, struct jtag_tap *tap, const char *variant)
 {
        struct arm *armv4_5;
@@ -2972,7 +2971,7 @@ static int xscale_init_arch_info(target_t *target,
        return ERROR_OK;
 }
 
-static int xscale_target_create(struct target_s *target, Jim_Interp *interp)
+static int xscale_target_create(struct target *target, Jim_Interp *interp)
 {
        struct xscale_common *xscale;
 
@@ -2991,20 +2990,20 @@ static int xscale_target_create(struct target_s *target, Jim_Interp *interp)
 
 COMMAND_HANDLER(xscale_handle_debug_handler_command)
 {
-       target_t *target = NULL;
+       struct target *target = NULL;
        struct xscale_common *xscale;
        int retval;
        uint32_t handler_address;
 
-       if (argc < 2)
+       if (CMD_ARGC < 2)
        {
                LOG_ERROR("'xscale debug_handler <target#> <address>' command takes two required operands");
                return ERROR_OK;
        }
 
-       if ((target = get_target(args[0])) == NULL)
+       if ((target = get_target(CMD_ARGV[0])) == NULL)
        {
-               LOG_ERROR("target '%s' not defined", args[0]);
+               LOG_ERROR("target '%s' not defined", CMD_ARGV[0]);
                return ERROR_FAIL;
        }
 
@@ -3013,7 +3012,7 @@ COMMAND_HANDLER(xscale_handle_debug_handler_command)
        if (retval != ERROR_OK)
                return retval;
 
-       COMMAND_PARSE_NUMBER(u32, args[1], handler_address);
+       COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], handler_address);
 
        if (((handler_address >= 0x800) && (handler_address <= 0x1fef800)) ||
                ((handler_address >= 0xfe000800) && (handler_address <= 0xfffff800)))
@@ -3031,20 +3030,20 @@ COMMAND_HANDLER(xscale_handle_debug_handler_command)
 
 COMMAND_HANDLER(xscale_handle_cache_clean_address_command)
 {
-       target_t *target = NULL;
+       struct target *target = NULL;
        struct xscale_common *xscale;
        int retval;
        uint32_t cache_clean_address;
 
-       if (argc < 2)
+       if (CMD_ARGC < 2)
        {
                return ERROR_COMMAND_SYNTAX_ERROR;
        }
 
-       target = get_target(args[0]);
+       target = get_target(CMD_ARGV[0]);
        if (target == NULL)
        {
-               LOG_ERROR("target '%s' not defined", args[0]);
+               LOG_ERROR("target '%s' not defined", CMD_ARGV[0]);
                return ERROR_FAIL;
        }
        xscale = target_to_xscale(target);
@@ -3052,7 +3051,7 @@ COMMAND_HANDLER(xscale_handle_cache_clean_address_command)
        if (retval != ERROR_OK)
                return retval;
 
-       COMMAND_PARSE_NUMBER(u32, args[1], cache_clean_address);
+       COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], cache_clean_address);
 
        if (cache_clean_address & 0xffff)
        {
@@ -3068,7 +3067,7 @@ COMMAND_HANDLER(xscale_handle_cache_clean_address_command)
 
 COMMAND_HANDLER(xscale_handle_cache_info_command)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        int retval;
 
@@ -3079,7 +3078,7 @@ COMMAND_HANDLER(xscale_handle_cache_info_command)
        return armv4_5_handle_cache_info_command(cmd_ctx, &xscale->armv4_5_mmu.armv4_5_cache);
 }
 
-static int xscale_virt2phys(struct target_s *target,
+static int xscale_virt2phys(struct target *target,
                uint32_t virtual, uint32_t *physical)
 {
        struct xscale_common *xscale = target_to_xscale(target);
@@ -3102,7 +3101,7 @@ static int xscale_virt2phys(struct target_s *target,
        return ERROR_OK;
 }
 
-static int xscale_mmu(struct target_s *target, int *enabled)
+static int xscale_mmu(struct target *target, int *enabled)
 {
        struct xscale_common *xscale = target_to_xscale(target);
 
@@ -3117,7 +3116,7 @@ static int xscale_mmu(struct target_s *target, int *enabled)
 
 COMMAND_HANDLER(xscale_handle_mmu_command)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        int retval;
 
@@ -3131,14 +3130,14 @@ COMMAND_HANDLER(xscale_handle_mmu_command)
                return ERROR_OK;
        }
 
-       if (argc >= 1)
+       if (CMD_ARGC >= 1)
        {
-               if (strcmp("enable", args[0]) == 0)
+               if (strcmp("enable", CMD_ARGV[0]) == 0)
                {
                        xscale_enable_mmu_caches(target, 1, 0, 0);
                        xscale->armv4_5_mmu.mmu_enabled = 1;
                }
-               else if (strcmp("disable", args[0]) == 0)
+               else if (strcmp("disable", CMD_ARGV[0]) == 0)
                {
                        xscale_disable_mmu_caches(target, 1, 0, 0);
                        xscale->armv4_5_mmu.mmu_enabled = 0;
@@ -3152,7 +3151,7 @@ COMMAND_HANDLER(xscale_handle_mmu_command)
 
 COMMAND_HANDLER(xscale_handle_idcache_command)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        int icache = 0, dcache = 0;
        int retval;
@@ -3172,9 +3171,9 @@ COMMAND_HANDLER(xscale_handle_idcache_command)
        else if (strcmp(CMD_NAME, "dcache") == 0)
                dcache = 1;
 
-       if (argc >= 1)
+       if (CMD_ARGC >= 1)
        {
-               if (strcmp("enable", args[0]) == 0)
+               if (strcmp("enable", CMD_ARGV[0]) == 0)
                {
                        xscale_enable_mmu_caches(target, 0, dcache, icache);
 
@@ -3183,7 +3182,7 @@ COMMAND_HANDLER(xscale_handle_idcache_command)
                        else if (dcache)
                                xscale->armv4_5_mmu.armv4_5_cache.d_u_cache_enabled = 1;
                }
-               else if (strcmp("disable", args[0]) == 0)
+               else if (strcmp("disable", CMD_ARGV[0]) == 0)
                {
                        xscale_disable_mmu_caches(target, 0, dcache, icache);
 
@@ -3205,7 +3204,7 @@ COMMAND_HANDLER(xscale_handle_idcache_command)
 
 COMMAND_HANDLER(xscale_handle_vector_catch_command)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        int retval;
 
@@ -3213,13 +3212,13 @@ COMMAND_HANDLER(xscale_handle_vector_catch_command)
        if (retval != ERROR_OK)
                return retval;
 
-       if (argc < 1)
+       if (CMD_ARGC < 1)
        {
                command_print(cmd_ctx, "usage: xscale vector_catch [mask]");
        }
        else
        {
-               COMMAND_PARSE_NUMBER(u8, args[0], xscale->vector_catch);
+               COMMAND_PARSE_NUMBER(u8, CMD_ARGV[0], xscale->vector_catch);
                buf_set_u32(xscale->reg_cache->reg_list[XSCALE_DCSR].value, 16, 8, xscale->vector_catch);
                xscale_write_dcsr(target, -1, -1);
        }
@@ -3232,7 +3231,7 @@ COMMAND_HANDLER(xscale_handle_vector_catch_command)
 
 COMMAND_HANDLER(xscale_handle_vector_table_command)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        int err = 0;
        int retval;
@@ -3241,7 +3240,7 @@ COMMAND_HANDLER(xscale_handle_vector_table_command)
        if (retval != ERROR_OK)
                return retval;
 
-       if (argc == 0) /* print current settings */
+       if (CMD_ARGC == 0) /* print current settings */
        {
                int idx;
 
@@ -3255,24 +3254,24 @@ COMMAND_HANDLER(xscale_handle_vector_table_command)
                return ERROR_OK;
        }
 
-       if (argc != 3)
+       if (CMD_ARGC != 3)
                err = 1;
        else
        {
                int idx;
-               COMMAND_PARSE_NUMBER(int, args[1], idx);
+               COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], idx);
                uint32_t vec;
-               COMMAND_PARSE_NUMBER(u32, args[2], vec);
+               COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], vec);
 
                if (idx < 1 || idx >= 8)
                        err = 1;
 
-               if (!err && strcmp(args[0], "low") == 0)
+               if (!err && strcmp(CMD_ARGV[0], "low") == 0)
                {
                        xscale->static_low_vectors_set |= (1<<idx);
                        xscale->static_low_vectors[idx] = vec;
                }
-               else if (!err && (strcmp(args[0], "high") == 0))
+               else if (!err && (strcmp(CMD_ARGV[0], "high") == 0))
                {
                        xscale->static_high_vectors_set |= (1<<idx);
                        xscale->static_high_vectors[idx] = vec;
@@ -3290,7 +3289,7 @@ COMMAND_HANDLER(xscale_handle_vector_table_command)
 
 COMMAND_HANDLER(xscale_handle_trace_buffer_command)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        struct armv4_5_common_s *armv4_5 = &xscale->armv4_5_common;
        uint32_t dcsr_value;
@@ -3306,7 +3305,7 @@ COMMAND_HANDLER(xscale_handle_trace_buffer_command)
                return ERROR_OK;
        }
 
-       if ((argc >= 1) && (strcmp("enable", args[0]) == 0))
+       if ((CMD_ARGC >= 1) && (strcmp("enable", CMD_ARGV[0]) == 0))
        {
                struct xscale_trace_data *td, *next_td;
                xscale->trace.buffer_enabled = 1;
@@ -3324,19 +3323,19 @@ COMMAND_HANDLER(xscale_handle_trace_buffer_command)
                }
                xscale->trace.data = NULL;
        }
-       else if ((argc >= 1) && (strcmp("disable", args[0]) == 0))
+       else if ((CMD_ARGC >= 1) && (strcmp("disable", CMD_ARGV[0]) == 0))
        {
                xscale->trace.buffer_enabled = 0;
        }
 
-       if ((argc >= 2) && (strcmp("fill", args[1]) == 0))
+       if ((CMD_ARGC >= 2) && (strcmp("fill", CMD_ARGV[1]) == 0))
        {
                uint32_t fill = 1;
-               if (argc >= 3)
-                       COMMAND_PARSE_NUMBER(u32, args[2], fill);
+               if (CMD_ARGC >= 3)
+                       COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], fill);
                xscale->trace.buffer_fill = fill;
        }
-       else if ((argc >= 2) && (strcmp("wrap", args[1]) == 0))
+       else if ((CMD_ARGC >= 2) && (strcmp("wrap", CMD_ARGV[1]) == 0))
        {
                xscale->trace.buffer_fill = -1;
        }
@@ -3369,11 +3368,11 @@ COMMAND_HANDLER(xscale_handle_trace_buffer_command)
 
 COMMAND_HANDLER(xscale_handle_trace_image_command)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        int retval;
 
-       if (argc < 1)
+       if (CMD_ARGC < 1)
        {
                command_print(cmd_ctx, "usage: xscale trace_image <file> [base address] [type]");
                return ERROR_OK;
@@ -3395,17 +3394,17 @@ COMMAND_HANDLER(xscale_handle_trace_image_command)
        xscale->trace.image->start_address_set = 0;
 
        /* a base address isn't always necessary, default to 0x0 (i.e. don't relocate) */
-       if (argc >= 2)
+       if (CMD_ARGC >= 2)
        {
                xscale->trace.image->base_address_set = 1;
-               COMMAND_PARSE_NUMBER(int, args[1], xscale->trace.image->base_address);
+               COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], xscale->trace.image->base_address);
        }
        else
        {
                xscale->trace.image->base_address_set = 0;
        }
 
-       if (image_open(xscale->trace.image, args[0], (argc >= 3) ? args[2] : NULL) != ERROR_OK)
+       if (image_open(xscale->trace.image, CMD_ARGV[0], (CMD_ARGC >= 3) ? CMD_ARGV[2] : NULL) != ERROR_OK)
        {
                free(xscale->trace.image);
                xscale->trace.image = NULL;
@@ -3417,7 +3416,7 @@ COMMAND_HANDLER(xscale_handle_trace_image_command)
 
 COMMAND_HANDLER(xscale_handle_dump_trace_command)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        struct xscale_trace_data *trace_data;
        struct fileio file;
@@ -3433,7 +3432,7 @@ COMMAND_HANDLER(xscale_handle_dump_trace_command)
                return ERROR_OK;
        }
 
-       if (argc < 1)
+       if (CMD_ARGC < 1)
        {
                command_print(cmd_ctx, "usage: xscale dump_trace <file>");
                return ERROR_OK;
@@ -3447,7 +3446,7 @@ COMMAND_HANDLER(xscale_handle_dump_trace_command)
                return ERROR_OK;
        }
 
-       if (fileio_open(&file, args[0], FILEIO_WRITE, FILEIO_BINARY) != ERROR_OK)
+       if (fileio_open(&file, CMD_ARGV[0], FILEIO_WRITE, FILEIO_BINARY) != ERROR_OK)
        {
                return ERROR_OK;
        }
@@ -3474,7 +3473,7 @@ COMMAND_HANDLER(xscale_handle_dump_trace_command)
 
 COMMAND_HANDLER(xscale_handle_analyze_trace_buffer_command)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        int retval;
 
@@ -3489,7 +3488,7 @@ COMMAND_HANDLER(xscale_handle_analyze_trace_buffer_command)
 
 COMMAND_HANDLER(xscale_handle_cp15)
 {
-       target_t *target = get_current_target(cmd_ctx);
+       struct target *target = get_current_target(cmd_ctx);
        struct xscale_common *xscale = target_to_xscale(target);
        int retval;
 
@@ -3504,9 +3503,9 @@ COMMAND_HANDLER(xscale_handle_cp15)
        }
        uint32_t reg_no = 0;
        struct reg *reg = NULL;
-       if (argc > 0)
+       if (CMD_ARGC > 0)
        {
-               COMMAND_PARSE_NUMBER(u32, args[0], reg_no);
+               COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], reg_no);
                /*translate from xscale cp15 register no to openocd register*/
                switch (reg_no)
                {
@@ -3541,7 +3540,7 @@ COMMAND_HANDLER(xscale_handle_cp15)
                reg = &xscale->reg_cache->reg_list[reg_no];
 
        }
-       if (argc == 1)
+       if (CMD_ARGC == 1)
        {
                uint32_t value;
 
@@ -3550,10 +3549,10 @@ COMMAND_HANDLER(xscale_handle_cp15)
                value = buf_get_u32(reg->value, 0, 32);
                command_print(cmd_ctx, "%s (/%i): 0x%" PRIx32 "", reg->name, (int)(reg->size), value);
        }
-       else if (argc == 2)
+       else if (CMD_ARGC == 2)
        {
                uint32_t value;
-               COMMAND_PARSE_NUMBER(u32, args[1], value);
+               COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], value);
 
                /* send CP write request (command 0x41) */
                xscale_send_u32(target, 0x41);
@@ -3575,9 +3574,9 @@ COMMAND_HANDLER(xscale_handle_cp15)
        return ERROR_OK;
 }
 
-static int xscale_register_commands(struct command_context_s *cmd_ctx)
+static int xscale_register_commands(struct command_context *cmd_ctx)
 {
-       command_t *xscale_cmd;
+       struct command *xscale_cmd;
 
        xscale_cmd = register_command(cmd_ctx, NULL, "xscale", NULL, COMMAND_ANY, "xscale specific commands");
 
@@ -3628,8 +3627,9 @@ struct target_type xscale_target =
        .read_memory = xscale_read_memory,
        .write_memory = xscale_write_memory,
        .bulk_write_memory = xscale_bulk_write_memory,
-       .checksum_memory = arm7_9_checksum_memory,
-       .blank_check_memory = arm7_9_blank_check_memory,
+
+       .checksum_memory = arm_checksum_memory,
+       .blank_check_memory = arm_blank_check_memory,
 
        .run_algorithm = armv4_5_run_algorithm,
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)