@@ -34,7 +34,6 @@ | |||||
int arm720t_register_commands(struct command_context_s *cmd_ctx); | int arm720t_register_commands(struct command_context_s *cmd_ctx); | ||||
int arm720t_handle_cp15_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm720t_handle_cp15_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm720t_handle_virt2phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | |||||
int arm720t_handle_md_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm720t_handle_md_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm720t_handle_mw_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm720t_handle_mw_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
@@ -487,7 +486,6 @@ int arm720t_register_commands(struct command_context_s *cmd_ctx) | |||||
arm720t_cmd = register_command(cmd_ctx, NULL, "arm720t", NULL, COMMAND_ANY, "arm720t specific commands"); | arm720t_cmd = register_command(cmd_ctx, NULL, "arm720t", NULL, COMMAND_ANY, "arm720t specific commands"); | ||||
register_command(cmd_ctx, arm720t_cmd, "cp15", arm720t_handle_cp15_command, COMMAND_EXEC, "display/modify cp15 register <opcode> [value]"); | register_command(cmd_ctx, arm720t_cmd, "cp15", arm720t_handle_cp15_command, COMMAND_EXEC, "display/modify cp15 register <opcode> [value]"); | ||||
register_command(cmd_ctx, arm720t_cmd, "virt2phys", arm720t_handle_virt2phys_command, COMMAND_EXEC, "translate va to pa <va>"); | |||||
register_command(cmd_ctx, arm720t_cmd, "mdw_phys", arm720t_handle_md_phys_command, COMMAND_EXEC, "display memory words <physical addr> [count]"); | register_command(cmd_ctx, arm720t_cmd, "mdw_phys", arm720t_handle_md_phys_command, COMMAND_EXEC, "display memory words <physical addr> [count]"); | ||||
register_command(cmd_ctx, arm720t_cmd, "mdh_phys", arm720t_handle_md_phys_command, COMMAND_EXEC, "display memory half-words <physical addr> [count]"); | register_command(cmd_ctx, arm720t_cmd, "mdh_phys", arm720t_handle_md_phys_command, COMMAND_EXEC, "display memory half-words <physical addr> [count]"); | ||||
@@ -560,32 +558,6 @@ int arm720t_handle_cp15_command(struct command_context_s *cmd_ctx, char *cmd, ch | |||||
return ERROR_OK; | return ERROR_OK; | ||||
} | } | ||||
int arm720t_handle_virt2phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) | |||||
{ | |||||
target_t *target = get_current_target(cmd_ctx); | |||||
armv4_5_common_t *armv4_5; | |||||
arm7_9_common_t *arm7_9; | |||||
arm7tdmi_common_t *arm7tdmi; | |||||
arm720t_common_t *arm720t; | |||||
arm_jtag_t *jtag_info; | |||||
if (arm720t_get_arch_pointers(target, &armv4_5, &arm7_9, &arm7tdmi, &arm720t) != ERROR_OK) | |||||
{ | |||||
command_print(cmd_ctx, "current target isn't an ARM720t target"); | |||||
return ERROR_OK; | |||||
} | |||||
jtag_info = &arm7_9->jtag_info; | |||||
if (target->state != TARGET_HALTED) | |||||
{ | |||||
command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); | |||||
return ERROR_OK; | |||||
} | |||||
return armv4_5_mmu_handle_virt2phys_command(cmd_ctx, cmd, args, argc, target, &arm720t->armv4_5_mmu); | |||||
} | |||||
int arm720t_handle_md_phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) | int arm720t_handle_md_phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) | ||||
{ | { | ||||
target_t *target = get_current_target(cmd_ctx); | target_t *target = get_current_target(cmd_ctx); | ||||
@@ -33,7 +33,6 @@ | |||||
/* cli handling */ | /* cli handling */ | ||||
int arm920t_handle_cp15_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm920t_handle_cp15_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm920t_handle_cp15i_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm920t_handle_cp15i_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm920t_handle_virt2phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | |||||
int arm920t_handle_cache_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm920t_handle_cache_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm920t_handle_md_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm920t_handle_md_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm920t_handle_mw_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm920t_handle_mw_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
@@ -700,7 +699,6 @@ int arm920t_register_commands(struct command_context_s *cmd_ctx) | |||||
register_command(cmd_ctx, arm920t_cmd, "cp15", arm920t_handle_cp15_command, COMMAND_EXEC, "display/modify cp15 register <num> [value]"); | register_command(cmd_ctx, arm920t_cmd, "cp15", arm920t_handle_cp15_command, COMMAND_EXEC, "display/modify cp15 register <num> [value]"); | ||||
register_command(cmd_ctx, arm920t_cmd, "cp15i", arm920t_handle_cp15i_command, COMMAND_EXEC, "display/modify cp15 (interpreted access) <opcode> [value] [address]"); | register_command(cmd_ctx, arm920t_cmd, "cp15i", arm920t_handle_cp15i_command, COMMAND_EXEC, "display/modify cp15 (interpreted access) <opcode> [value] [address]"); | ||||
register_command(cmd_ctx, arm920t_cmd, "cache_info", arm920t_handle_cache_info_command, COMMAND_EXEC, "display information about target caches"); | register_command(cmd_ctx, arm920t_cmd, "cache_info", arm920t_handle_cache_info_command, COMMAND_EXEC, "display information about target caches"); | ||||
register_command(cmd_ctx, arm920t_cmd, "virt2phys", arm920t_handle_virt2phys_command, COMMAND_EXEC, "translate va to pa <va>"); | |||||
register_command(cmd_ctx, arm920t_cmd, "mdw_phys", arm920t_handle_md_phys_command, COMMAND_EXEC, "display memory words <physical addr> [count]"); | register_command(cmd_ctx, arm920t_cmd, "mdw_phys", arm920t_handle_md_phys_command, COMMAND_EXEC, "display memory words <physical addr> [count]"); | ||||
register_command(cmd_ctx, arm920t_cmd, "mdh_phys", arm920t_handle_md_phys_command, COMMAND_EXEC, "display memory half-words <physical addr> [count]"); | register_command(cmd_ctx, arm920t_cmd, "mdh_phys", arm920t_handle_md_phys_command, COMMAND_EXEC, "display memory half-words <physical addr> [count]"); | ||||
@@ -1402,32 +1400,6 @@ int arm920t_handle_cache_info_command(struct command_context_s *cmd_ctx, char *c | |||||
return armv4_5_handle_cache_info_command(cmd_ctx, &arm920t->armv4_5_mmu.armv4_5_cache); | return armv4_5_handle_cache_info_command(cmd_ctx, &arm920t->armv4_5_mmu.armv4_5_cache); | ||||
} | } | ||||
int arm920t_handle_virt2phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) | |||||
{ | |||||
target_t *target = get_current_target(cmd_ctx); | |||||
armv4_5_common_t *armv4_5; | |||||
arm7_9_common_t *arm7_9; | |||||
arm9tdmi_common_t *arm9tdmi; | |||||
arm920t_common_t *arm920t; | |||||
arm_jtag_t *jtag_info; | |||||
if (arm920t_get_arch_pointers(target, &armv4_5, &arm7_9, &arm9tdmi, &arm920t) != ERROR_OK) | |||||
{ | |||||
command_print(cmd_ctx, "current target isn't an ARM920t target"); | |||||
return ERROR_OK; | |||||
} | |||||
jtag_info = &arm7_9->jtag_info; | |||||
if (target->state != TARGET_HALTED) | |||||
{ | |||||
command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); | |||||
return ERROR_OK; | |||||
} | |||||
return armv4_5_mmu_handle_virt2phys_command(cmd_ctx, cmd, args, argc, target, &arm920t->armv4_5_mmu); | |||||
} | |||||
int arm920t_handle_md_phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) | int arm920t_handle_md_phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) | ||||
{ | { | ||||
target_t *target = get_current_target(cmd_ctx); | target_t *target = get_current_target(cmd_ctx); | ||||
@@ -36,7 +36,6 @@ | |||||
/* cli handling */ | /* cli handling */ | ||||
int arm926ejs_handle_cp15_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm926ejs_handle_cp15_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm926ejs_handle_cp15i_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm926ejs_handle_cp15i_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm926ejs_handle_virt2phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | |||||
int arm926ejs_handle_cache_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm926ejs_handle_cache_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm926ejs_handle_md_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm926ejs_handle_md_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int arm926ejs_handle_mw_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int arm926ejs_handle_mw_phys_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
@@ -810,7 +809,6 @@ int arm926ejs_register_commands(struct command_context_s *cmd_ctx) | |||||
register_command(cmd_ctx, arm926ejs_cmd, "cp15", arm926ejs_handle_cp15_command, COMMAND_EXEC, "display/modify cp15 register <opcode_1> <opcode_2> <CRn> <CRm> [value]"); | register_command(cmd_ctx, arm926ejs_cmd, "cp15", arm926ejs_handle_cp15_command, COMMAND_EXEC, "display/modify cp15 register <opcode_1> <opcode_2> <CRn> <CRm> [value]"); | ||||
register_command(cmd_ctx, arm926ejs_cmd, "cache_info", arm926ejs_handle_cache_info_command, COMMAND_EXEC, "display information about target caches"); | register_command(cmd_ctx, arm926ejs_cmd, "cache_info", arm926ejs_handle_cache_info_command, COMMAND_EXEC, "display information about target caches"); | ||||
register_command(cmd_ctx, arm926ejs_cmd, "virt2phys", arm926ejs_handle_virt2phys_command, COMMAND_EXEC, "translate va to pa <va>"); | |||||
register_command(cmd_ctx, arm926ejs_cmd, "mdw_phys", arm926ejs_handle_md_phys_command, COMMAND_EXEC, "display memory words <physical addr> [count]"); | register_command(cmd_ctx, arm926ejs_cmd, "mdw_phys", arm926ejs_handle_md_phys_command, COMMAND_EXEC, "display memory words <physical addr> [count]"); | ||||
register_command(cmd_ctx, arm926ejs_cmd, "mdh_phys", arm926ejs_handle_md_phys_command, COMMAND_EXEC, "display memory half-words <physical addr> [count]"); | register_command(cmd_ctx, arm926ejs_cmd, "mdh_phys", arm926ejs_handle_md_phys_command, COMMAND_EXEC, "display memory half-words <physical addr> [count]"); | ||||
@@ -905,32 +903,6 @@ int arm926ejs_handle_cache_info_command(struct command_context_s *cmd_ctx, char | |||||
return armv4_5_handle_cache_info_command(cmd_ctx, &arm926ejs->armv4_5_mmu.armv4_5_cache); | return armv4_5_handle_cache_info_command(cmd_ctx, &arm926ejs->armv4_5_mmu.armv4_5_cache); | ||||
} | } | ||||
int arm926ejs_handle_virt2phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) | |||||
{ | |||||
target_t *target = get_current_target(cmd_ctx); | |||||
armv4_5_common_t *armv4_5; | |||||
arm7_9_common_t *arm7_9; | |||||
arm9tdmi_common_t *arm9tdmi; | |||||
arm926ejs_common_t *arm926ejs; | |||||
arm_jtag_t *jtag_info; | |||||
if (arm926ejs_get_arch_pointers(target, &armv4_5, &arm7_9, &arm9tdmi, &arm926ejs) != ERROR_OK) | |||||
{ | |||||
command_print(cmd_ctx, "current target isn't an ARM926EJ-S target"); | |||||
return ERROR_OK; | |||||
} | |||||
jtag_info = &arm7_9->jtag_info; | |||||
if (target->state != TARGET_HALTED) | |||||
{ | |||||
command_print(cmd_ctx, "target must be stopped for \"%s\" command", cmd); | |||||
return ERROR_OK; | |||||
} | |||||
return armv4_5_mmu_handle_virt2phys_command(cmd_ctx, cmd, args, argc, target, &arm926ejs->armv4_5_mmu); | |||||
} | |||||
int arm926ejs_handle_md_phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) | int arm926ejs_handle_md_phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) | ||||
{ | { | ||||
target_t *target = get_current_target(cmd_ctx); | target_t *target = get_current_target(cmd_ctx); | ||||
@@ -170,51 +170,6 @@ int armv4_5_mmu_write_physical(target_t *target, armv4_5_mmu_common_t *armv4_5_m | |||||
return retval; | return retval; | ||||
} | } | ||||
int armv4_5_mmu_handle_virt2phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc, target_t *target, armv4_5_mmu_common_t *armv4_5_mmu) | |||||
{ | |||||
uint32_t va; | |||||
uint32_t pa; | |||||
int type; | |||||
uint32_t cb; | |||||
int domain; | |||||
uint32_t ap; | |||||
if (target->state != TARGET_HALTED) | |||||
{ | |||||
command_print(cmd_ctx, "target must be stopped for \"virt2phys\" command"); | |||||
return ERROR_OK; | |||||
} | |||||
if (argc == 0) | |||||
{ | |||||
command_print(cmd_ctx, "usage: virt2phys <virtual address>"); | |||||
return ERROR_OK; | |||||
} | |||||
if (argc == 1) | |||||
{ | |||||
va = strtoul(args[0], NULL, 0); | |||||
pa = armv4_5_mmu_translate_va(target, armv4_5_mmu, va, &type, &cb, &domain, &ap); | |||||
if (type == -1) | |||||
{ | |||||
switch (pa) | |||||
{ | |||||
case ERROR_TARGET_TRANSLATION_FAULT: | |||||
command_print(cmd_ctx, "no valid translation for 0x%8.8" PRIx32 "", va); | |||||
break; | |||||
default: | |||||
command_print(cmd_ctx, "unknown translation error"); | |||||
} | |||||
return ERROR_OK; | |||||
} | |||||
command_print(cmd_ctx, "0x%8.8" PRIx32 " -> 0x%8.8" PRIx32 ", type: %s, cb: %i, domain: %d, ap: %2.2x", | |||||
va, pa, armv4_5_mmu_page_type_names[type], (int)cb, domain, (int)ap); | |||||
} | |||||
return ERROR_OK; | |||||
} | |||||
int armv4_5_mmu_handle_md_phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc, target_t *target, armv4_5_mmu_common_t *armv4_5_mmu) | int armv4_5_mmu_handle_md_phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc, target_t *target, armv4_5_mmu_common_t *armv4_5_mmu) | ||||
{ | { | ||||
int count = 1; | int count = 1; | ||||