X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftarget%2Ftarget.c;h=3bf6824be289a496643aa2342bb763573f51a8cf;hb=b62c8d600995638081f9a34c358db58337df7bdb;hp=01d94416b27540163ad76f8778a4e59ec11d21ec;hpb=31bbb3cf0c9cffb98dbda1a357356bbf519a456f;p=fw%2Fopenocd
diff --git a/src/target/target.c b/src/target/target.c
index 01d94416b..3bf6824be 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -2135,11 +2135,11 @@ COMMAND_HANDLER(handle_halt_command)
if (CMD_ARGC == 1)
{
- unsigned wait;
- retval = parse_uint(CMD_ARGV[0], &wait);
+ unsigned wait_local;
+ retval = parse_uint(CMD_ARGV[0], &wait_local);
if (ERROR_OK != retval)
return ERROR_COMMAND_SYNTAX_ERROR;
- if (!wait)
+ if (!wait_local)
return ERROR_OK;
}
@@ -2378,7 +2378,7 @@ static int target_fill_mem(struct target *target,
{
current = chunk_size;
}
- int retval = fn(target, address + x * data_size, data_size, current, target_buf);
+ retval = fn(target, address + x * data_size, data_size, current, target_buf);
if (retval != ERROR_OK)
{
break;
@@ -3065,8 +3065,8 @@ static void writeGmon(uint32_t *samples, uint32_t sampleNum, const char *filenam
long long a = address-min;
long long b = length-1;
long long c = addressSpace-1;
- int index = (a*b)/c; /* danger!!!! int32 overflows */
- buckets[index]++;
+ int index_t = (a*b)/c; /* danger!!!! int32 overflows */
+ buckets[index_t]++;
}
/* append binary memory gmon.out &profile_hist_hdr ((char*)&profile_hist_hdr + sizeof(struct gmon_hist_hdr)) */
@@ -3894,14 +3894,14 @@ static int target_configure(Jim_GetOptInfo *goi, struct target *target)
break;
case TCFG_CHAIN_POSITION:
if (goi->isconfigure) {
- Jim_Obj *o;
+ Jim_Obj *o_t;
struct jtag_tap *tap;
target_free_all_working_areas(target);
- e = Jim_GetOpt_Obj(goi, &o);
+ e = Jim_GetOpt_Obj(goi, &o_t);
if (e != JIM_OK) {
return e;
}
- tap = jtag_tap_by_jim_obj(goi->interp, o);
+ tap = jtag_tap_by_jim_obj(goi->interp, o_t);
if (tap == NULL) {
return JIM_ERR;
}
@@ -3950,19 +3950,30 @@ static int jim_target_mw(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
Jim_GetOptInfo goi;
Jim_GetOpt_Setup(&goi, interp, argc - 1, argv + 1);
- /* danger! goi.argc will be modified below! */
- argc = goi.argc;
-
- if (argc != 2 && argc != 3)
+ if (goi.argc < 2 || goi.argc > 4)
{
Jim_SetResult_sprintf(goi.interp,
- "usage: %s
[]", cmd_name);
+ "usage: %s [phys] []", cmd_name);
return JIM_ERR;
}
+ target_write_fn fn;
+ fn = target_write_memory_fast;
+
+ int e;
+ if (strcmp(Jim_GetString(argv[1], NULL), "phys") == 0)
+ {
+ /* consume it */
+ struct Jim_Obj *obj;
+ e = Jim_GetOpt_Obj(&goi, &obj);
+ if (e != JIM_OK)
+ return e;
+
+ fn = target_write_phys_memory;
+ }
jim_wide a;
- int e = Jim_GetOpt_Wide(&goi, &a);
+ e = Jim_GetOpt_Wide(&goi, &a);
if (e != JIM_OK)
return e;
@@ -3972,13 +3983,19 @@ static int jim_target_mw(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
return e;
jim_wide c = 1;
- if (argc == 3)
+ if (goi.argc == 1)
{
e = Jim_GetOpt_Wide(&goi, &c);
if (e != JIM_OK)
return e;
}
+ /* all args must be consumed */
+ if (goi.argc != 0)
+ {
+ return JIM_ERR;
+ }
+
struct target *target = Jim_CmdPrivData(goi.interp);
unsigned data_size;
if (strcasecmp(cmd_name, "mww") == 0) {
@@ -3994,7 +4011,7 @@ static int jim_target_mw(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
return JIM_ERR;
}
- return (target_fill_mem(target, a, target_write_memory_fast, data_size, b, c) == ERROR_OK) ? JIM_OK : JIM_ERR;
+ return (target_fill_mem(target, a, fn, data_size, b, c) == ERROR_OK) ? JIM_OK : JIM_ERR;
}
static int jim_target_md(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
@@ -4004,23 +4021,36 @@ static int jim_target_md(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
Jim_GetOptInfo goi;
Jim_GetOpt_Setup(&goi, interp, argc - 1, argv + 1);
- /* danger! goi.argc will be modified below! */
- argc = goi.argc;
-
- if ((argc != 1) && (argc != 2))
+ if ((goi.argc < 1) || (goi.argc > 3))
{
Jim_SetResult_sprintf(goi.interp,
- "usage: %s []", cmd_name);
+ "usage: %s [phys] []", cmd_name);
return JIM_ERR;
}
+ int (*fn)(struct target *target,
+ uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer);
+ fn=target_read_memory;
+
+ int e;
+ if (strcmp(Jim_GetString(argv[1], NULL), "phys") == 0)
+ {
+ /* consume it */
+ struct Jim_Obj *obj;
+ e = Jim_GetOpt_Obj(&goi, &obj);
+ if (e != JIM_OK)
+ return e;
+
+ fn=target_read_phys_memory;
+ }
+
jim_wide a;
- int e = Jim_GetOpt_Wide(&goi, &a);
+ e = Jim_GetOpt_Wide(&goi, &a);
if (e != JIM_OK) {
return JIM_ERR;
}
jim_wide c;
- if (argc == 2) {
+ if (goi.argc == 1) {
e = Jim_GetOpt_Wide(&goi, &c);
if (e != JIM_OK) {
return JIM_ERR;
@@ -4028,6 +4058,13 @@ static int jim_target_md(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
} else {
c = 1;
}
+
+ /* all args must be consumed */
+ if (goi.argc != 0)
+ {
+ return JIM_ERR;
+ }
+
jim_wide b = 1; /* shut up gcc */
if (strcasecmp(cmd_name, "mdw") == 0)
b = 4;
@@ -4051,7 +4088,7 @@ static int jim_target_md(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
if (y > 16) {
y = 16;
}
- e = target_read_memory(target, a, b, y / b, target_buf);
+ e = fn(target, a, b, y / b, target_buf);
if (e != ERROR_OK) {
Jim_SetResult_sprintf(interp, "error reading target @ 0x%08lx", (int)(a));
return JIM_ERR;