arm_adi_v5: mem_ap_write error propagation
[fw/openocd] / src / target / armv7a.c
index 1aa0d8ac79d191fb5693d61f42d59985d6452815..151deb41534ac19afdecd49c2beec78501002b89 100644 (file)
 #include "config.h"
 #endif
 
-#include "replacements.h"
+#include <helper/replacements.h>
 
 #include "armv7a.h"
 #include "arm_disassembler.h"
 
 #include "register.h"
 #include <helper/binarybuffer.h>
-#include "command.h"
+#include <helper/command.h>
 
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
+#include "arm_opcodes.h"
+
 
 static void armv7a_show_fault_registers(struct target *target)
 {
@@ -98,22 +100,16 @@ 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);
-       else if (target->debug_reason == DBG_REASON_WATCHPOINT)
+       if (target->debug_reason == DBG_REASON_WATCHPOINT)
                LOG_USER("Watchpoint triggered at PC %#08x",
                                (unsigned) armv7a->dpm.wp_pc);
 
@@ -121,106 +117,9 @@ int armv7a_arch_state(struct target *target)
 }
 
 
-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
 };