aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZachary T Welch <zw@superlucidity.net>2009-10-24 06:36:05 -0700
committerZachary T Welch <zw@superlucidity.net>2009-11-05 18:03:19 -0800
commita8886cdfee58aff32a6c3e3cdf818e584d1075d7 (patch)
treedf10364bb4c5260ebcda2562b54f638ce78f4186
parent9b3781e5a4c0145f0be4e7c262975e3b9909d1c4 (diff)
downloadriscv-openocd-a8886cdfee58aff32a6c3e3cdf818e584d1075d7.zip
riscv-openocd-a8886cdfee58aff32a6c3e3cdf818e584d1075d7.tar.gz
riscv-openocd-a8886cdfee58aff32a6c3e3cdf818e584d1075d7.tar.bz2
Improve arm_adi_v5 command argument parsing.
-rw-r--r--src/target/arm_adi_v5.c57
1 files changed, 42 insertions, 15 deletions
diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
index 3364132..0fc2976 100644
--- a/src/target/arm_adi_v5.c
+++ b/src/target/arm_adi_v5.c
@@ -1370,10 +1370,18 @@ int dap_baseaddr_command(struct command_context_s *cmd_ctx,
uint32_t apsel, apselsave, baseaddr;
int retval;
- apsel = swjdp->apsel;
apselsave = swjdp->apsel;
- if (argc > 0)
- apsel = strtoul(args[0], NULL, 0);
+ switch (argc) {
+ case 0:
+ apsel = swjdp->apsel;
+ break;
+ case 1:
+ COMMAND_PARSE_NUMBER(u32, args[0], apsel);
+ break;
+ default:
+ return ERROR_COMMAND_SYNTAX_ERROR;
+ }
+
if (apselsave != apsel)
dap_ap_select(swjdp, apsel);
@@ -1392,11 +1400,18 @@ int dap_memaccess_command(struct command_context_s *cmd_ctx,
{
uint32_t memaccess_tck;
- memaccess_tck = swjdp->memaccess_tck;
- if (argc > 0)
- memaccess_tck = strtoul(args[0], NULL, 0);
-
+ switch (argc) {
+ case 0:
+ memaccess_tck = swjdp->memaccess_tck;
+ break;
+ case 1:
+ COMMAND_PARSE_NUMBER(u32, args[0], memaccess_tck);
+ break;
+ default:
+ return ERROR_COMMAND_SYNTAX_ERROR;
+ }
swjdp->memaccess_tck = memaccess_tck;
+
command_print(cmd_ctx, "memory bus access delay set to %" PRIi32 " tck",
swjdp->memaccess_tck);
@@ -1409,9 +1424,16 @@ int dap_apsel_command(struct command_context_s *cmd_ctx,
uint32_t apsel, apid;
int retval;
- apsel = 0;
- if (argc > 0)
- apsel = strtoul(args[0], NULL, 0);
+ switch (argc) {
+ case 0:
+ apsel = 0;
+ break;
+ case 1:
+ COMMAND_PARSE_NUMBER(u32, args[0], apsel);
+ break;
+ default:
+ return ERROR_COMMAND_SYNTAX_ERROR;
+ }
dap_ap_select(swjdp, apsel);
dap_ap_read_reg_u32(swjdp, 0xFC, &apid);
@@ -1428,10 +1450,17 @@ int dap_apid_command(struct command_context_s *cmd_ctx,
uint32_t apsel, apselsave, apid;
int retval;
- apsel = swjdp->apsel;
apselsave = swjdp->apsel;
- if (argc > 0)
- apsel = strtoul(args[0], NULL, 0);
+ switch (argc) {
+ case 0:
+ apsel = swjdp->apsel;
+ break;
+ case 1:
+ COMMAND_PARSE_NUMBER(u32, args[0], apsel);
+ break;
+ default:
+ return ERROR_COMMAND_SYNTAX_ERROR;
+ }
if (apselsave != apsel)
dap_ap_select(swjdp, apsel);
@@ -1444,5 +1473,3 @@ int dap_apid_command(struct command_context_s *cmd_ctx,
return retval;
}
-
-