This is an automated email from Gerrit.

Antonio Borneo (borneo.anto...@gmail.com) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/4624

-- gerrit

commit 36fe4c338f12669aa46da9084c64e06f2c88da25
Author: Antonio Borneo <borneo.anto...@gmail.com>
Date:   Wed Jul 25 10:24:49 2018 +0200

    target/arm_adi_v5: allow commands apsel and apcsw during init phase
    
    The current implementation of apsel cannot be executed during the
    initialization phase because it queries the DAP AP to retrieve and
    print the content of IDR register, and the query is only possible
    later on during the exec phase.
    But IDR information is already printed by the dedicated command
    apid, making redundant printing it by apsel too.
    Being unable to run apsel during initialization, makes also apcsw
    command (that depends on apsel) not usable in such phase.
    
    Modify the command apsel to only set the current AP, without making
    any transfer to the (possibly not initialized yet) DAP. When run
    without parameters, just print the current AP number.
    Change mode to COMMAND_ANY to apsel and to apcsw.
    
    Change-Id: Ibea6d531e435d1d49d782de1ed8ee6846e91bfdf
    Signed-off-by: Antonio Borneo <borneo.anto...@gmail.com>

diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
index 4dc2594..d537125 100644
--- a/src/target/arm_adi_v5.c
+++ b/src/target/arm_adi_v5.c
@@ -1616,13 +1616,12 @@ COMMAND_HANDLER(dap_memaccess_command)
 COMMAND_HANDLER(dap_apsel_command)
 {
        struct adiv5_dap *dap = adiv5_get_dap(CMD_DATA);
-       uint32_t apsel, apid;
-       int retval;
+       uint32_t apsel;
 
        switch (CMD_ARGC) {
        case 0:
-               apsel = dap->apsel;
-               break;
+               command_print(CMD_CTX, "%" PRIi32, dap->apsel);
+               return ERROR_OK;
        case 1:
                COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], apsel);
                /* AP address is in bits 31:24 of DP_SELECT */
@@ -1634,18 +1633,7 @@ COMMAND_HANDLER(dap_apsel_command)
        }
 
        dap->apsel = apsel;
-
-       retval = dap_queue_ap_read(dap_ap(dap, apsel), AP_REG_IDR, &apid);
-       if (retval != ERROR_OK)
-               return retval;
-       retval = dap_run(dap);
-       if (retval != ERROR_OK)
-               return retval;
-
-       command_print(CMD_CTX, "ap %" PRIi32 " selected, identification 
register 0x%8.8" PRIx32,
-                       apsel, apid);
-
-       return retval;
+       return ERROR_OK;
 }
 
 COMMAND_HANDLER(dap_apcsw_command)
@@ -1807,7 +1795,7 @@ const struct command_registration dap_instance_commands[] 
= {
        {
                .name = "apsel",
                .handler = dap_apsel_command,
-               .mode = COMMAND_EXEC,
+               .mode = COMMAND_ANY,
                .help = "Set the currently selected AP (default 0) "
                        "and display the result",
                .usage = "[ap_num]",
@@ -1815,7 +1803,7 @@ const struct command_registration dap_instance_commands[] 
= {
        {
                .name = "apcsw",
                .handler = dap_apcsw_command,
-               .mode = COMMAND_EXEC,
+               .mode = COMMAND_ANY,
                .help = "Set CSW default bits",
                .usage = "[value [mask]]",
        },

-- 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to