target: arc: rewrite command 'arc get-reg-field' as COMMAND_HANDLER
[openocd.git] / src / target / arc_cmd.c
index 18f5cb8f40fce77a7f97abbeb41d549b0612ec6e..264adc0b5c6808aeff445db24d2401203e04b31a 100644 (file)
@@ -1,11 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2013-2015,2019-2020 Synopsys, Inc.                      *
  *   Frank Dols <frank.dols@synopsys.com>                                  *
  *   Mischa Jonker <mischa.jonker@synopsys.com>                            *
  *   Anton Kolesov <anton.kolesov@synopsys.com>                            *
  *   Evgeniy Didin <didin@synopsys.com>                                    *
- *                                                                         *
- *   SPDX-License-Identifier: GPL-2.0-or-later                             *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
  * ------------------------------------------------------------------------- */
 
 
-static int arc_cmd_jim_get_uint32(Jim_GetOptInfo *goi, uint32_t *value)
+static int arc_cmd_jim_get_uint32(struct jim_getopt_info *goi, uint32_t *value)
 {
        jim_wide value_wide;
-       JIM_CHECK_RETVAL(Jim_GetOpt_Wide(goi, &value_wide));
+       JIM_CHECK_RETVAL(jim_getopt_wide(goi, &value_wide));
        *value = (uint32_t)value_wide;
        return JIM_OK;
 }
@@ -40,7 +40,7 @@ enum add_reg_type_flags {
        CFG_ADD_REG_TYPE_FLAGS_FLAG,
 };
 
-static Jim_Nvp nvp_add_reg_type_flags_opts[] = {
+static struct jim_nvp nvp_add_reg_type_flags_opts[] = {
        { .name = "-name",  .value = CFG_ADD_REG_TYPE_FLAGS_NAME },
        { .name = "-flag",  .value = CFG_ADD_REG_TYPE_FLAGS_FLAG },
        { .name = NULL,     .value = -1 }
@@ -64,7 +64,7 @@ static const char *validate_register(const struct arc_reg_desc * const reg, bool
 
 /* Helper function to read the name of register type or register from
  * configure files  */
-static int jim_arc_read_reg_name_field(Jim_GetOptInfo *goi,
+static int jim_arc_read_reg_name_field(struct jim_getopt_info *goi,
        const char **name, int *name_len)
 {
        int e = JIM_OK;
@@ -73,12 +73,12 @@ static int jim_arc_read_reg_name_field(Jim_GetOptInfo *goi,
                Jim_WrongNumArgs(goi->interp, goi->argc, goi->argv, "-name <name> ...");
                return JIM_ERR;
        }
-       e = Jim_GetOpt_String(goi, name, name_len);
+       e = jim_getopt_string(goi, name, name_len);
        return e;
 }
 
 /* Helper function to read bitfields/flags of register type. */
-static int jim_arc_read_reg_type_field(Jim_GetOptInfo *goi, const char **field_name, int *field_name_len,
+static int jim_arc_read_reg_type_field(struct jim_getopt_info *goi, const char **field_name, int *field_name_len,
         struct arc_reg_bitfield *bitfields, int cur_field, int type)
 {
                jim_wide start_pos, end_pos;
@@ -90,12 +90,12 @@ static int jim_arc_read_reg_type_field(Jim_GetOptInfo *goi, const char **field_n
                        return JIM_ERR;
                }
 
-               e = Jim_GetOpt_String(goi, field_name, field_name_len);
+               e = jim_getopt_string(goi, field_name, field_name_len);
                if (e != JIM_OK)
                                        return e;
 
                /* read start position of bitfield/flag */
-               e = Jim_GetOpt_Wide(goi, &start_pos);
+               e = jim_getopt_wide(goi, &start_pos);
                if (e != JIM_OK)
                                        return e;
 
@@ -108,7 +108,7 @@ static int jim_arc_read_reg_type_field(Jim_GetOptInfo *goi, const char **field_n
                         * than bitfields[cur_field].end remains start */
                        if ((strcmp(Jim_String(goi->argv[0]), "-flag") && type == CFG_ADD_REG_TYPE_FLAG)
                                        || (type == CFG_ADD_REG_TYPE_STRUCT)) {
-                                                               e = Jim_GetOpt_Wide(goi, &end_pos);
+                                                               e = jim_getopt_wide(goi, &end_pos);
                                                                if (e != JIM_OK) {
                                                                        Jim_SetResultFormatted(goi->interp, "Error reading end position");
                                                                        return e;
@@ -125,8 +125,8 @@ static int jim_arc_read_reg_type_field(Jim_GetOptInfo *goi, const char **field_n
 static int jim_arc_add_reg_type_flags(Jim_Interp *interp, int argc,
        Jim_Obj * const *argv)
 {
-       Jim_GetOptInfo goi;
-       JIM_CHECK_RETVAL(Jim_GetOpt_Setup(&goi, interp, argc-1, argv+1));
+       struct jim_getopt_info goi;
+       JIM_CHECK_RETVAL(jim_getopt_setup(&goi, interp, argc-1, argv+1));
 
        LOG_DEBUG("-");
 
@@ -179,10 +179,10 @@ static int jim_arc_add_reg_type_flags(Jim_Interp *interp, int argc,
        flags->size = 4; /* For now ARC has only 32-bit registers */
 
        while (goi.argc > 0 && e == JIM_OK) {
-               Jim_Nvp *n;
-               e = Jim_GetOpt_Nvp(&goi, nvp_add_reg_type_flags_opts, &n);
+               struct jim_nvp *n;
+               e = jim_getopt_nvp(&goi, nvp_add_reg_type_flags_opts, &n);
                if (e != JIM_OK) {
-                       Jim_GetOpt_NvpUnknown(&goi, nvp_add_reg_type_flags_opts, 0);
+                       jim_getopt_nvp_unknown(&goi, nvp_add_reg_type_flags_opts, 0);
                        continue;
                }
 
@@ -272,43 +272,30 @@ enum add_reg_type_struct {
        CFG_ADD_REG_TYPE_STRUCT_BITFIELD,
 };
 
-static Jim_Nvp nvp_add_reg_type_struct_opts[] = {
+static struct jim_nvp nvp_add_reg_type_struct_opts[] = {
        { .name = "-name",     .value = CFG_ADD_REG_TYPE_STRUCT_NAME },
        { .name = "-bitfield", .value = CFG_ADD_REG_TYPE_STRUCT_BITFIELD },
        { .name = NULL,     .value = -1 }
 };
 
-static int jim_arc_set_aux_reg(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
+COMMAND_HANDLER(arc_handle_set_aux_reg)
 {
+       if (CMD_ARGC != 2)
+               return ERROR_COMMAND_SYNTAX_ERROR;
 
-       struct command_context *context;
-       struct target *target;
-       uint32_t regnum;
-       uint32_t value;
-
-       Jim_GetOptInfo goi;
-       JIM_CHECK_RETVAL(Jim_GetOpt_Setup(&goi, interp, argc-1, argv+1));
-
-       if (goi.argc != 2) {
-               Jim_SetResultFormatted(goi.interp,
-                       "usage: %s <aux_reg_num> <aux_reg_value>", Jim_GetString(argv[0], NULL));
-               return JIM_ERR;
-       }
-
-       context = current_command_context(interp);
-       assert(context);
-
-       target = get_current_target(context);
+       struct target *target = get_current_target(CMD_CTX);
        if (!target) {
-               Jim_SetResultFormatted(goi.interp, "No current target");
-               return JIM_ERR;
+               command_print(CMD, "No current target");
+               return ERROR_FAIL;
        }
 
        /* Register number */
-       JIM_CHECK_RETVAL(arc_cmd_jim_get_uint32(&goi, &regnum));
+       uint32_t regnum;
+       COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], regnum);
 
        /* Register value */
-       JIM_CHECK_RETVAL(arc_cmd_jim_get_uint32(&goi, &value));
+       uint32_t value;
+       COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], value);
 
        struct arc_common *arc = target_to_arc(target);
        assert(arc);
@@ -318,121 +305,87 @@ static int jim_arc_set_aux_reg(Jim_Interp *interp, int argc, Jim_Obj * const *ar
        return ERROR_OK;
 }
 
-static int jim_arc_get_aux_reg(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
+COMMAND_HANDLER(arc_handle_get_aux_reg)
 {
-       struct command_context *context;
-       struct target *target;
-       uint32_t regnum;
-       uint32_t value;
-
-       Jim_GetOptInfo goi;
-       JIM_CHECK_RETVAL(Jim_GetOpt_Setup(&goi, interp, argc-1, argv+1));
-
-       if (goi.argc != 1) {
-               Jim_SetResultFormatted(goi.interp,
-                       "usage: %s <aux_reg_num>", Jim_GetString(argv[0], NULL));
-               return JIM_ERR;
-       }
-
-       context = current_command_context(interp);
-       assert(context);
+       if (CMD_ARGC != 1)
+               return ERROR_COMMAND_SYNTAX_ERROR;
 
-       target = get_current_target(context);
+       struct target *target = get_current_target(CMD_CTX);
        if (!target) {
-               Jim_SetResultFormatted(goi.interp, "No current target");
-               return JIM_ERR;
+               command_print(CMD, "No current target");
+               return ERROR_FAIL;
        }
 
        /* Register number */
-       JIM_CHECK_RETVAL(arc_cmd_jim_get_uint32(&goi, &regnum));
+       uint32_t regnum;
+       COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], regnum);
 
        struct arc_common *arc = target_to_arc(target);
        assert(arc);
 
+       uint32_t value;
        CHECK_RETVAL(arc_jtag_read_aux_reg_one(&arc->jtag_info, regnum, &value));
-       Jim_SetResultInt(interp, value);
+
+       command_print(CMD, "0x%" PRIx32, value);
 
        return ERROR_OK;
 }
 
-static int jim_arc_get_core_reg(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
+COMMAND_HANDLER(arc_handle_get_core_reg)
 {
-       struct command_context *context;
-       struct target *target;
-       uint32_t regnum;
-       uint32_t value;
-
-       Jim_GetOptInfo goi;
-       JIM_CHECK_RETVAL(Jim_GetOpt_Setup(&goi, interp, argc-1, argv+1));
-
-       if (goi.argc != 1) {
-               Jim_SetResultFormatted(goi.interp,
-                       "usage: %s <core_reg_num>", Jim_GetString(argv[0], NULL));
-               return JIM_ERR;
-       }
-
-       context = current_command_context(interp);
-       assert(context);
+       if (CMD_ARGC != 1)
+               return ERROR_COMMAND_SYNTAX_ERROR;
 
-       target = get_current_target(context);
+       struct target *target = get_current_target(CMD_CTX);
        if (!target) {
-               Jim_SetResultFormatted(goi.interp, "No current target");
-               return JIM_ERR;
+               command_print(CMD, "No current target");
+               return ERROR_FAIL;
        }
 
        /* Register number */
-       JIM_CHECK_RETVAL(arc_cmd_jim_get_uint32(&goi, &regnum));
-       if (regnum > CORE_REG_MAX_NUMBER || regnum == CORE_R61_NUM || regnum == CORE_R62_NUM) {
-               Jim_SetResultFormatted(goi.interp, "Core register number %i "
+       uint32_t regnum;
+       COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], regnum);
+       if (regnum > CORE_REG_MAX_NUMBER || regnum == ARC_R61 || regnum == ARC_R62) {
+               command_print(CMD, "Core register number %i "
                        "is invalid. Must less then 64 and not 61 and 62.", regnum);
-               return JIM_ERR;
+               return ERROR_COMMAND_ARGUMENT_INVALID;
        }
 
        struct arc_common *arc = target_to_arc(target);
        assert(arc);
 
        /* Read value */
+       uint32_t value;
        CHECK_RETVAL(arc_jtag_read_core_reg_one(&arc->jtag_info, regnum, &value));
-       Jim_SetResultInt(interp, value);
+
+       command_print(CMD, "0x%" PRIx32, value);
 
        return ERROR_OK;
 }
 
-static int jim_arc_set_core_reg(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
+COMMAND_HANDLER(arc_handle_set_core_reg)
 {
-       struct command_context *context;
-       struct target *target;
-       uint32_t regnum;
-       uint32_t value;
-
-       Jim_GetOptInfo goi;
-       JIM_CHECK_RETVAL(Jim_GetOpt_Setup(&goi, interp, argc-1, argv+1));
-
-       if (goi.argc != 2) {
-               Jim_SetResultFormatted(goi.interp,
-                       "usage: %s <core_reg_num> <core_reg_value>", Jim_GetString(argv[0], NULL));
-               return JIM_ERR;
-       }
-
-       context = current_command_context(interp);
-       assert(context);
+       if (CMD_ARGC != 2)
+               return ERROR_COMMAND_SYNTAX_ERROR;
 
-       target = get_current_target(context);
+       struct target *target = get_current_target(CMD_CTX);
        if (!target) {
-               Jim_SetResultFormatted(goi.interp, "No current target");
-               return JIM_ERR;
+               command_print(CMD, "No current target");
+               return ERROR_FAIL;
        }
 
        /* Register number */
-       JIM_CHECK_RETVAL(arc_cmd_jim_get_uint32(&goi, &regnum));
-       if (regnum > CORE_REG_MAX_NUMBER || regnum == CORE_R61_NUM || regnum == CORE_R62_NUM) {
-               Jim_SetResultFormatted(goi.interp, "Core register number %i "
+       uint32_t regnum;
+       COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], regnum);
+       if (regnum > CORE_REG_MAX_NUMBER || regnum == ARC_R61 || regnum == ARC_R62) {
+               command_print(CMD, "Core register number %i "
                        "is invalid. Must less then 64 and not 61 and 62.", regnum);
-               return JIM_ERR;
+               return ERROR_COMMAND_ARGUMENT_INVALID;
        }
 
        /* Register value */
-       JIM_CHECK_RETVAL(arc_cmd_jim_get_uint32(&goi, &value));
+       uint32_t value;
+       COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], value);
 
        struct arc_common *arc = target_to_arc(target);
        assert(arc);
@@ -445,7 +398,7 @@ static int jim_arc_set_core_reg(Jim_Interp *interp, int argc, Jim_Obj * const *a
 static const struct command_registration arc_jtag_command_group[] = {
        {
                .name = "get-aux-reg",
-               .jim_handler = jim_arc_get_aux_reg,
+               .handler = arc_handle_get_aux_reg,
                .mode = COMMAND_EXEC,
                .help = "Get AUX register by number. This command does a "
                        "raw JTAG request that bypasses OpenOCD register cache "
@@ -455,7 +408,7 @@ static const struct command_registration arc_jtag_command_group[] = {
        },
        {
                .name = "set-aux-reg",
-               .jim_handler = jim_arc_set_aux_reg,
+               .handler = arc_handle_set_aux_reg,
                .mode = COMMAND_EXEC,
                .help = "Set AUX register by number. This command does a "
                        "raw JTAG request that bypasses OpenOCD register cache "
@@ -465,7 +418,7 @@ static const struct command_registration arc_jtag_command_group[] = {
        },
        {
                .name = "get-core-reg",
-               .jim_handler = jim_arc_get_core_reg,
+               .handler = arc_handle_get_core_reg,
                .mode = COMMAND_EXEC,
                .help = "Get/Set core register by number. This command does a "
                        "raw JTAG request that bypasses OpenOCD register cache "
@@ -475,7 +428,7 @@ static const struct command_registration arc_jtag_command_group[] = {
        },
        {
                .name = "set-core-reg",
-               .jim_handler = jim_arc_set_core_reg,
+               .handler = arc_handle_set_core_reg,
                .mode = COMMAND_EXEC,
                .help = "Get/Set core register by number. This command does a "
                        "raw JTAG request that bypasses OpenOCD register cache "
@@ -491,8 +444,8 @@ static const struct command_registration arc_jtag_command_group[] = {
 static int jim_arc_add_reg_type_struct(Jim_Interp *interp, int argc,
        Jim_Obj * const *argv)
 {
-       Jim_GetOptInfo goi;
-       JIM_CHECK_RETVAL(Jim_GetOpt_Setup(&goi, interp, argc-1, argv+1));
+       struct jim_getopt_info goi;
+       JIM_CHECK_RETVAL(jim_getopt_setup(&goi, interp, argc-1, argv+1));
 
        LOG_DEBUG("-");
 
@@ -545,10 +498,10 @@ static int jim_arc_add_reg_type_struct(Jim_Interp *interp, int argc,
        struct_type->size = 4; /* For now ARC has only 32-bit registers */
 
        while (goi.argc > 0 && e == JIM_OK) {
-               Jim_Nvp *n;
-               e = Jim_GetOpt_Nvp(&goi, nvp_add_reg_type_struct_opts, &n);
+               struct jim_nvp *n;
+               e = jim_getopt_nvp(&goi, nvp_add_reg_type_struct_opts, &n);
                if (e != JIM_OK) {
-                       Jim_GetOpt_NvpUnknown(&goi, nvp_add_reg_type_struct_opts, 0);
+                       jim_getopt_nvp_unknown(&goi, nvp_add_reg_type_struct_opts, 0);
                        continue;
                }
 
@@ -642,7 +595,7 @@ enum opts_add_reg {
        CFG_ADD_REG_GENERAL,
 };
 
-static Jim_Nvp opts_nvp_add_reg[] = {
+static struct jim_nvp opts_nvp_add_reg[] = {
        { .name = "-name",    .value = CFG_ADD_REG_NAME },
        { .name = "-num",     .value = CFG_ADD_REG_ARCH_NUM },
        { .name = "-core",    .value = CFG_ADD_REG_IS_CORE },
@@ -662,8 +615,8 @@ void free_reg_desc(struct arc_reg_desc *r)
 
 static int jim_arc_add_reg(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
 {
-       Jim_GetOptInfo goi;
-       JIM_CHECK_RETVAL(Jim_GetOpt_Setup(&goi, interp, argc-1, argv+1));
+       struct jim_getopt_info goi;
+       JIM_CHECK_RETVAL(jim_getopt_setup(&goi, interp, argc-1, argv+1));
 
        struct arc_reg_desc *reg = calloc(1, sizeof(*reg));
        if (!reg) {
@@ -692,10 +645,10 @@ static int jim_arc_add_reg(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
 
        /* Parse options. */
        while (goi.argc > 0) {
-               Jim_Nvp *n;
-               e = Jim_GetOpt_Nvp(&goi, opts_nvp_add_reg, &n);
+               struct jim_nvp *n;
+               e = jim_getopt_nvp(&goi, opts_nvp_add_reg, &n);
                if (e != JIM_OK) {
-                       Jim_GetOpt_NvpUnknown(&goi, opts_nvp_add_reg, 0);
+                       jim_getopt_nvp_unknown(&goi, opts_nvp_add_reg, 0);
                        free_reg_desc(reg);
                        return e;
                }
@@ -732,7 +685,7 @@ static int jim_arc_add_reg(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
                                        return JIM_ERR;
                                }
 
-                               e = Jim_GetOpt_Wide(&goi, &archnum);
+                               e = jim_getopt_wide(&goi, &archnum);
                                if (e != JIM_OK) {
                                        free_reg_desc(reg);
                                        return e;
@@ -843,59 +796,40 @@ COMMAND_HANDLER(arc_set_reg_exists)
 
 /* arc reg-field  ($reg_name) ($reg_field)
  * Reads struct type register field */
-static int jim_arc_get_reg_field(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
+COMMAND_HANDLER(arc_handle_get_reg_field)
 {
-       Jim_GetOptInfo goi;
-       const char *reg_name, *field_name;
-       uint32_t value;
-       int retval;
-
-       JIM_CHECK_RETVAL(Jim_GetOpt_Setup(&goi, interp, argc-1, argv+1));
-
-       LOG_DEBUG("Reading register field");
-       if (goi.argc != 2) {
-               if (!goi.argc)
-                       Jim_WrongNumArgs(interp, goi.argc, goi.argv, "<regname> <fieldname>");
-               else if (goi.argc == 1)
-                       Jim_WrongNumArgs(interp, goi.argc, goi.argv, "<fieldname>");
-               else
-                       Jim_WrongNumArgs(interp, goi.argc, goi.argv, "<regname> <fieldname>");
+       if (CMD_ARGC != 2)
                return ERROR_COMMAND_SYNTAX_ERROR;
-       }
 
-       JIM_CHECK_RETVAL(Jim_GetOpt_String(&goi, &reg_name, NULL));
-       JIM_CHECK_RETVAL(Jim_GetOpt_String(&goi, &field_name, NULL));
-       assert(reg_name);
-       assert(field_name);
-
-       struct command_context * const ctx = current_command_context(interp);
-       assert(ctx);
-       struct target * const target = get_current_target(ctx);
+       struct target *target = get_current_target(CMD_CTX);
        if (!target) {
-               Jim_SetResultFormatted(goi.interp, "No current target");
-               return JIM_ERR;
+               command_print(CMD, "No current target");
+               return ERROR_FAIL;
        }
 
-       retval = arc_reg_get_field(target, reg_name, field_name, &value);
+       const char *reg_name = CMD_ARGV[0];
+       const char *field_name = CMD_ARGV[1];
+       uint32_t value;
+       int retval = arc_reg_get_field(target, reg_name, field_name, &value);
 
        switch (retval) {
                case ERROR_OK:
                        break;
                case ERROR_ARC_REGISTER_NOT_FOUND:
-                       Jim_SetResultFormatted(goi.interp,
+                       command_print(CMD,
                                "Register `%s' has not been found.", reg_name);
                        return ERROR_COMMAND_ARGUMENT_INVALID;
                case ERROR_ARC_REGISTER_IS_NOT_STRUCT:
-                       Jim_SetResultFormatted(goi.interp,
+                       command_print(CMD,
                                "Register `%s' must have 'struct' type.", reg_name);
                        return ERROR_COMMAND_ARGUMENT_INVALID;
                case ERROR_ARC_REGISTER_FIELD_NOT_FOUND:
-                       Jim_SetResultFormatted(goi.interp,
+                       command_print(CMD,
                                "Field `%s' has not been found in register `%s'.",
                                field_name, reg_name);
                        return ERROR_COMMAND_ARGUMENT_INVALID;
                case ERROR_ARC_FIELD_IS_NOT_BITFIELD:
-                       Jim_SetResultFormatted(goi.interp,
+                       command_print(CMD,
                                "Field `%s' is not a 'bitfield' field in a structure.",
                                field_name);
                        return ERROR_COMMAND_ARGUMENT_INVALID;
@@ -904,9 +838,9 @@ static int jim_arc_get_reg_field(Jim_Interp *interp, int argc, Jim_Obj * const *
                        return retval;
        }
 
-       Jim_SetResultInt(interp, value);
+       command_print(CMD, "0x%" PRIx32, value);
 
-       return JIM_OK;
+       return ERROR_OK;
 }
 
 COMMAND_HANDLER(arc_l1_cache_disable_auto_cmd)
@@ -932,8 +866,8 @@ COMMAND_HANDLER(arc_l2_cache_disable_auto_cmd)
 static int jim_handle_actionpoints_num(Jim_Interp *interp, int argc,
        Jim_Obj * const *argv)
 {
-       Jim_GetOptInfo goi;
-       Jim_GetOpt_Setup(&goi, interp, argc - 1, argv + 1);
+       struct jim_getopt_info goi;
+       jim_getopt_setup(&goi, interp, argc - 1, argv + 1);
 
        LOG_DEBUG("-");
 
@@ -975,7 +909,7 @@ static int jim_handle_actionpoints_num(Jim_Interp *interp, int argc,
 
 /* ----- Exported target commands ------------------------------------------ */
 
-const struct command_registration arc_l2_cache_group_handlers[] = {
+static const struct command_registration arc_l2_cache_group_handlers[] = {
        {
                .name = "auto",
                .handler = arc_l2_cache_disable_auto_cmd,
@@ -986,7 +920,7 @@ const struct command_registration arc_l2_cache_group_handlers[] = {
        COMMAND_REGISTRATION_DONE
 };
 
-const struct command_registration arc_cache_group_handlers[] = {
+static const struct command_registration arc_cache_group_handlers[] = {
        {
                .name = "auto",
                .handler = arc_l1_cache_disable_auto_cmd,
@@ -1049,7 +983,7 @@ static const struct command_registration arc_core_command_handlers[] = {
        },
        {
                .name = "get-reg-field",
-               .jim_handler = jim_arc_get_reg_field,
+               .handler = arc_handle_get_reg_field,
                .mode = COMMAND_ANY,
                .usage = "<regname> <field_name>",
                .help = "Returns value of field in a register with 'struct' type.",

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)