Commit 66ee3034 authored by Zachary T Welch's avatar Zachary T Welch
Browse files

remove target_type register_command callback

Uses chaining of command_registration structures to eliminate all
target_type register_callback routines.  Exports the command_handler
registration arrays for those target types that are used by others.
parent 144e3678
......@@ -1616,6 +1616,12 @@ static const struct command_registration arm11_any_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
static const struct command_registration arm11_command_handlers[] = {
{
.chain = arm_command_handlers,
},
{
.chain = etm_command_handlers,
},
{
.name = "arm11",
.mode = COMMAND_ANY,
......@@ -1625,13 +1631,6 @@ static const struct command_registration arm11_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
static int arm11_register_commands(struct command_context *cmd_ctx)
{
armv4_5_register_commands(cmd_ctx);
etm_register_commands(cmd_ctx);
return register_commands(cmd_ctx, NULL, arm11_command_handlers);
}
/** Holds methods for ARM11xx targets. */
struct target_type arm11_target = {
.name = "arm11",
......@@ -1666,7 +1665,7 @@ struct target_type arm11_target = {
.run_algorithm = armv4_5_run_algorithm,
.register_commands = arm11_register_commands,
.commands = arm11_command_handlers,
.target_create = arm11_target_create,
.init_target = arm11_init_target,
.examine = arm11_examine,
......
......@@ -503,6 +503,9 @@ static const struct command_registration arm720t_exec_command_handlers[] = {
};
static const struct command_registration arm720t_command_handlers[] = {
{
.chain = arm7_9_command_handlers,
},
{
.name = "arm720t",
.mode = COMMAND_ANY,
......@@ -512,12 +515,6 @@ static const struct command_registration arm720t_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
static int arm720t_register_commands(struct command_context *cmd_ctx)
{
arm7_9_register_commands(cmd_ctx);
return register_commands(cmd_ctx, NULL, arm720t_command_handlers);
}
/** Holds methods for ARM720 targets. */
struct target_type arm720t_target =
{
......@@ -555,7 +552,7 @@ struct target_type arm720t_target =
.add_watchpoint = arm7_9_add_watchpoint,
.remove_watchpoint = arm7_9_remove_watchpoint,
.register_commands = arm720t_register_commands,
.commands = arm720t_command_handlers,
.target_create = arm720t_target_create,
.init_target = arm720t_init_target,
.examine = arm7_9_examine,
......
......@@ -2873,7 +2873,13 @@ static const struct command_registration arm7_9_any_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
static const struct command_registration arm7_9_command_handlers[] = {
const struct command_registration arm7_9_command_handlers[] = {
{
.chain = arm_command_handlers,
},
{
.chain = etm_command_handlers,
},
{
.name = "arm7_9",
.mode = COMMAND_ANY,
......@@ -2882,10 +2888,3 @@ static const struct command_registration arm7_9_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
int arm7_9_register_commands(struct command_context *cmd_ctx)
{
armv4_5_register_commands(cmd_ctx);
etm_register_commands(cmd_ctx);
return register_commands(cmd_ctx, NULL, arm7_9_command_handlers);
}
......@@ -120,7 +120,7 @@ static inline bool is_arm7_9(struct arm7_9_common *arm7_9)
return arm7_9->common_magic == ARM7_9_COMMON_MAGIC;
}
int arm7_9_register_commands(struct command_context *cmd_ctx);
extern const struct command_registration arm7_9_command_handlers[];
int arm7_9_poll(struct target *target);
......
......@@ -747,7 +747,7 @@ struct target_type arm7tdmi_target =
.add_watchpoint = arm7_9_add_watchpoint,
.remove_watchpoint = arm7_9_remove_watchpoint,
.register_commands = arm7_9_register_commands,
.commands = arm7_9_command_handlers,
.target_create = arm7tdmi_target_create,
.init_target = arm7tdmi_init_target,
.examine = arm7_9_examine,
......
......@@ -1396,7 +1396,10 @@ static const struct command_registration arm920t_exec_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
static const struct command_registration arm920t_command_handlers[] = {
const struct command_registration arm920t_command_handlers[] = {
{
.chain = arm9tdmi_command_handlers,
},
{
.name = "arm920t",
.mode = COMMAND_ANY,
......@@ -1406,13 +1409,6 @@ static const struct command_registration arm920t_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
/** Registers commands to access coprocessor, cache, and MMU resources. */
int arm920t_register_commands(struct command_context *cmd_ctx)
{
arm9tdmi_register_commands(cmd_ctx);
return register_commands(cmd_ctx, NULL, arm920t_command_handlers);
}
/** Holds methods for ARM920 targets. */
struct target_type arm920t_target =
{
......@@ -1452,7 +1448,7 @@ struct target_type arm920t_target =
.add_watchpoint = arm7_9_add_watchpoint,
.remove_watchpoint = arm7_9_remove_watchpoint,
.register_commands = arm920t_register_commands,
.commands = arm920t_command_handlers,
.target_create = arm920t_target_create,
.init_target = arm9tdmi_init_target,
.examine = arm7_9_examine,
......
......@@ -71,6 +71,7 @@ void arm920t_disable_mmu_caches(struct target *target,
int mmu, int d_u_cache, int i_cache);
void arm920t_enable_mmu_caches(struct target *target,
int mmu, int d_u_cache, int i_cache);
int arm920t_register_commands(struct command_context *cmd_ctx);
extern const struct command_registration arm920t_command_handlers[];
#endif /* ARM920T_H */
......@@ -766,7 +766,10 @@ static const struct command_registration arm926ejs_exec_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
static const struct command_registration arm926ejs_command_handlers[] = {
const struct command_registration arm926ejs_command_handlers[] = {
{
.chain = arm9tdmi_command_handlers,
},
{
.name = "arm926ejs",
.mode = COMMAND_ANY,
......@@ -776,13 +779,6 @@ static const struct command_registration arm926ejs_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
/** Registers commands to access coprocessor, cache, and debug resources. */
int arm926ejs_register_commands(struct command_context *cmd_ctx)
{
arm9tdmi_register_commands(cmd_ctx);
return register_commands(cmd_ctx, NULL, arm926ejs_command_handlers);
}
/** Holds methods for ARM926 targets. */
struct target_type arm926ejs_target =
{
......@@ -817,7 +813,7 @@ struct target_type arm926ejs_target =
.add_watchpoint = arm7_9_add_watchpoint,
.remove_watchpoint = arm7_9_remove_watchpoint,
.register_commands = arm926ejs_register_commands,
.commands = arm926ejs_command_handlers,
.target_create = arm926ejs_target_create,
.init_target = arm9tdmi_init_target,
.examine = arm7_9_examine,
......
......@@ -48,10 +48,11 @@ target_to_arm926(struct target *target)
int arm926ejs_init_arch_info(struct target *target,
struct arm926ejs_common *arm926ejs, struct jtag_tap *tap);
int arm926ejs_register_commands(struct command_context *cmd_ctx);
int arm926ejs_arch_state(struct target *target);
int arm926ejs_write_memory(struct target *target,
uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer);
int arm926ejs_soft_reset_halt(struct target *target);
extern const struct command_registration arm926ejs_command_handlers[];
#endif /* ARM926EJS_H */
......@@ -232,7 +232,10 @@ static const struct command_registration arm966e_exec_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
static const struct command_registration arm966e_command_handlers[] = {
const struct command_registration arm966e_command_handlers[] = {
{
.chain = arm9tdmi_command_handlers,
},
{
.name = "arm966e",
.mode = COMMAND_ANY,
......@@ -242,13 +245,6 @@ static const struct command_registration arm966e_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
/** Registers commands used to access coprocessor resources. */
int arm966e_register_commands(struct command_context *cmd_ctx)
{
arm9tdmi_register_commands(cmd_ctx);
return register_commands(cmd_ctx, NULL, arm966e_command_handlers);
}
/** Holds methods for ARM966 targets. */
struct target_type arm966e_target =
{
......@@ -283,7 +279,7 @@ struct target_type arm966e_target =
.add_watchpoint = arm7_9_add_watchpoint,
.remove_watchpoint = arm7_9_remove_watchpoint,
.register_commands = arm966e_register_commands,
.commands = arm966e_command_handlers,
.target_create = arm966e_target_create,
.init_target = arm9tdmi_init_target,
.examine = arm7_9_examine,
......
......@@ -43,7 +43,8 @@ target_to_arm966(struct target *target)
int arm966e_init_arch_info(struct target *target,
struct arm966e_common *arm966e, struct jtag_tap *tap);
int arm966e_register_commands(struct command_context *cmd_ctx);
int arm966e_write_cp15(struct target *target, int reg_addr, uint32_t value);
extern const struct command_registration arm966e_command_handlers[];
#endif /* ARM966E_H */
......@@ -917,7 +917,10 @@ static const struct command_registration arm9tdmi_exec_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
static const struct command_registration arm9tdmi_command_handlers[] = {
const struct command_registration arm9tdmi_command_handlers[] = {
{
.chain = arm7_9_command_handlers,
},
{
.name = "arm9tdmi",
.mode = COMMAND_ANY,
......@@ -927,12 +930,6 @@ static const struct command_registration arm9tdmi_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
int arm9tdmi_register_commands(struct command_context *cmd_ctx)
{
arm7_9_register_commands(cmd_ctx);
return register_commands(cmd_ctx, NULL, arm9tdmi_command_handlers);
}
/** Holds methods for ARM9TDMI targets. */
struct target_type arm9tdmi_target =
{
......@@ -967,7 +964,7 @@ struct target_type arm9tdmi_target =
.add_watchpoint = arm7_9_add_watchpoint,
.remove_watchpoint = arm7_9_remove_watchpoint,
.register_commands = arm9tdmi_register_commands,
.commands = arm9tdmi_command_handlers,
.target_create = arm9tdmi_target_create,
.init_target = arm9tdmi_init_target,
.examine = arm7_9_examine,
......
......@@ -29,7 +29,7 @@ int arm9tdmi_init_target(struct command_context *cmd_ctx,
struct target *target);
int arm9tdmi_init_arch_info(struct target *target,
struct arm7_9_common *arm7_9, struct jtag_tap *tap);
int arm9tdmi_register_commands(struct command_context *cmd_ctx);
extern const struct command_registration arm9tdmi_command_handlers[];
int arm9tdmi_clock_out(struct arm_jtag *jtag_info,
uint32_t instr, uint32_t out, uint32_t *in, int sysspeed);
......
......@@ -809,7 +809,7 @@ static const struct command_registration arm_exec_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
static const struct command_registration arm_command_handlers[] = {
const struct command_registration arm_command_handlers[] = {
{
.name = "arm",
.mode = COMMAND_ANY,
......@@ -819,11 +819,6 @@ static const struct command_registration arm_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
int armv4_5_register_commands(struct command_context *cmd_ctx)
{
return register_commands(cmd_ctx, NULL, arm_command_handlers);
}
int armv4_5_get_gdb_reg_list(struct target *target, struct reg **reg_list[], int *reg_list_size)
{
struct arm *armv4_5 = target_to_armv4_5(target);
......
......@@ -27,6 +27,8 @@
#define ARMV4_5_H
#include "target.h"
#include "command.h"
typedef enum armv4_5_mode
{
......@@ -155,7 +157,8 @@ int armv4_5_arch_state(struct target *target);
int armv4_5_get_gdb_reg_list(struct target *target,
struct reg **reg_list[], int *reg_list_size);
int armv4_5_register_commands(struct command_context *cmd_ctx);
extern const struct command_registration arm_command_handlers[];
int armv4_5_init_arch_info(struct target *target, struct arm *armv4_5);
int armv4_5_run_algorithm(struct target *target,
......
......@@ -181,7 +181,7 @@ static const struct command_registration armv7a_exec_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
static const struct command_registration armv7a_command_handlers[] = {
const struct command_registration armv7a_command_handlers[] = {
{
.name = "dap",
.mode = COMMAND_ANY,
......@@ -191,7 +191,3 @@ static const struct command_registration armv7a_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
int armv7a_register_commands(struct command_context *cmd_ctx)
{
return register_commands(cmd_ctx, NULL, armv7a_command_handlers);
}
......@@ -103,7 +103,8 @@ struct armv7a_core_reg
int armv7a_arch_state(struct target *target);
struct reg_cache *armv7a_build_reg_cache(struct target *target,
struct armv7a_common *armv7a_common);
int armv7a_register_commands(struct command_context *cmd_ctx);
int armv7a_init_arch_info(struct target *target, struct armv7a_common *armv7a);
extern const struct command_registration armv7a_command_handlers[];
#endif /* ARMV4_5_H */
......@@ -832,7 +832,7 @@ static const struct command_registration armv7m_exec_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
static const struct command_registration armv7m_command_handlers[] = {
const struct command_registration armv7m_command_handlers[] = {
{
.name = "dap",
.mode = COMMAND_ANY,
......@@ -841,8 +841,3 @@ static const struct command_registration armv7m_command_handlers[] = {
},
COMMAND_REGISTRATION_DONE
};
int armv7m_register_commands(struct command_context *cmd_ctx)
{
return register_commands(cmd_ctx, NULL, armv7m_command_handlers);
}
......@@ -143,7 +143,6 @@ int armv7m_arch_state(struct target *target);
int armv7m_get_gdb_reg_list(struct target *target,
struct reg **reg_list[], int *reg_list_size);
int armv7m_register_commands(struct command_context *cmd_ctx);
int armv7m_init_arch_info(struct target *target, struct armv7m_common *armv7m);
int armv7m_run_algorithm(struct target *target,
......@@ -161,6 +160,8 @@ int armv7m_checksum_memory(struct target *target,
int armv7m_blank_check_memory(struct target *target,
uint32_t address, uint32_t count, uint32_t* blank);
extern const struct command_registration armv7m_command_handlers[];
/* Thumb mode instructions
*/
......
......@@ -28,9 +28,6 @@
#define AVR_JTAG_INS_LEN 4
/* cli handling */
int avr_register_commands(struct command_context *cmd_ctx);
/* forward declarations */
int avr_target_create(struct target *target, Jim_Interp *interp);
int avr_init_target(struct command_context *cmd_ctx, struct target *target);
......@@ -91,17 +88,10 @@ struct target_type avr_target =
.add_watchpoint = avr_add_watchpoint,
.remove_watchpoint = avr_remove_watchpoint,
*/
.register_commands = avr_register_commands,
.target_create = avr_target_create,
.init_target = avr_init_target,
};
int avr_register_commands(struct command_context *cmd_ctx)
{
LOG_DEBUG("%s", __FUNCTION__);
return ERROR_OK;
}
int avr_target_create(struct target *target, Jim_Interp *interp)
{
struct avr_common *avr = calloc(1, sizeof(struct avr_common));
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment