X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Farmv7a.c;h=151deb41534ac19afdecd49c2beec78501002b89;hb=28bbe4e98337948e814e40cebe69f7958a48e560;hp=e23208f191c9b2fc3ae90cb715797859b39018f4;hpb=209a0197f0c79442a2314199170a957c36c0ddb6;p=openocd.git diff --git a/src/target/armv7a.c b/src/target/armv7a.c index e23208f191..151deb4153 100644 --- a/src/target/armv7a.c +++ b/src/target/armv7a.c @@ -20,19 +20,21 @@ #include "config.h" #endif -#include "replacements.h" +#include #include "armv7a.h" #include "arm_disassembler.h" #include "register.h" -#include "binarybuffer.h" -#include "command.h" +#include +#include #include #include #include +#include "arm_opcodes.h" + static void armv7a_show_fault_registers(struct target *target) { @@ -98,126 +100,26 @@ int armv7a_arch_state(struct target *target) return ERROR_INVALID_ARGUMENTS; } - LOG_USER("target halted in %s state due to %s, current mode: %s\n" - "cpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "\n" - "MMU: %s, D-Cache: %s, I-Cache: %s", - armv4_5_state_strings[armv4_5->core_state], - Jim_Nvp_value2name_simple(nvp_target_debug_reason, - target->debug_reason)->name, - arm_mode_name(armv4_5->core_mode), - buf_get_u32(armv4_5->cpsr->value, 0, 32), - buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32), + arm_arch_state(target); + + LOG_USER("MMU: %s, D-Cache: %s, I-Cache: %s", state[armv7a->armv4_5_mmu.mmu_enabled], state[armv7a->armv4_5_mmu.armv4_5_cache.d_u_cache_enabled], state[armv7a->armv4_5_mmu.armv4_5_cache.i_cache_enabled]); - if (armv4_5->core_mode == ARMV4_5_MODE_ABT) + if (armv4_5->core_mode == ARM_MODE_ABT) armv7a_show_fault_registers(target); + if (target->debug_reason == DBG_REASON_WATCHPOINT) + LOG_USER("Watchpoint triggered at PC %#08x", + (unsigned) armv7a->dpm.wp_pc); return ERROR_OK; } -COMMAND_HANDLER(handle_dap_baseaddr_command) -{ - struct target *target = get_current_target(CMD_CTX); - struct armv7a_common *armv7a = target_to_armv7a(target); - struct swjdp_common *swjdp = &armv7a->swjdp_info; - - return CALL_COMMAND_HANDLER(dap_baseaddr_command, swjdp); -} - -COMMAND_HANDLER(handle_dap_memaccess_command) -{ - struct target *target = get_current_target(CMD_CTX); - struct armv7a_common *armv7a = target_to_armv7a(target); - struct swjdp_common *swjdp = &armv7a->swjdp_info; - - return CALL_COMMAND_HANDLER(dap_memaccess_command, swjdp); -} - -COMMAND_HANDLER(handle_dap_apsel_command) -{ - struct target *target = get_current_target(CMD_CTX); - struct armv7a_common *armv7a = target_to_armv7a(target); - struct swjdp_common *swjdp = &armv7a->swjdp_info; - - return CALL_COMMAND_HANDLER(dap_apsel_command, swjdp); -} - -COMMAND_HANDLER(handle_dap_apid_command) -{ - struct target *target = get_current_target(CMD_CTX); - struct armv7a_common *armv7a = target_to_armv7a(target); - struct swjdp_common *swjdp = &armv7a->swjdp_info; - - return CALL_COMMAND_HANDLER(dap_apid_command, swjdp); -} - -COMMAND_HANDLER(handle_dap_info_command) -{ - struct target *target = get_current_target(CMD_CTX); - struct armv7a_common *armv7a = target_to_armv7a(target); - struct swjdp_common *swjdp = &armv7a->swjdp_info; - uint32_t apsel; - - switch (CMD_ARGC) { - case 0: - apsel = swjdp->apsel; - break; - case 1: - COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], apsel); - break; - default: - return ERROR_COMMAND_SYNTAX_ERROR; - } - - return dap_info_command(CMD_CTX, swjdp, apsel); -} - -static const struct command_registration armv7a_exec_command_handlers[] = { - { - .name = "info", - .handler = &handle_dap_info_command, - .mode = COMMAND_EXEC, - .help = "dap info for ap [num], " - "default currently selected AP", - }, - { - .name = "apsel", - .handler = &handle_dap_apsel_command, - .mode = COMMAND_EXEC, - .help = "select a different AP [num] (default 0)", - }, - { - .name = "apid", - .handler = &handle_dap_apid_command, - .mode = COMMAND_EXEC, - .help = "return id reg from AP [num], " - "default currently selected AP", - }, - { - .name = "baseaddr", - .handler = &handle_dap_baseaddr_command, - .mode = COMMAND_EXEC, - .help = "return debug base address from AP [num], " - "default currently selected AP", - }, - { - .name = "memaccess", - .handler = &handle_dap_memaccess_command, - .mode = COMMAND_EXEC, - .help = "set/get number of extra tck for mem-ap memory " - "bus access [0-255]", - }, - COMMAND_REGISTRATION_DONE -}; const struct command_registration armv7a_command_handlers[] = { { - .name = "dap", - .mode = COMMAND_ANY, - .help = "Cortex DAP command group", - .chain = armv7a_exec_command_handlers, + .chain = dap_command_handlers, }, COMMAND_REGISTRATION_DONE };