projects
/
fw
/
openocd
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make #include guard naming consistent
[fw/openocd]
/
src
/
jtag
/
tcl.c
diff --git
a/src/jtag/tcl.c
b/src/jtag/tcl.c
index b95bf75665c26f538e91ef424b3289c2ca7fdaac..e4d63296a43333dc094f9e2a6af76671f9ce46f2 100644
(file)
--- a/
src/jtag/tcl.c
+++ b/
src/jtag/tcl.c
@@
-23,9
+23,7
@@
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
***************************************************************************/
#ifdef HAVE_CONFIG_H
***************************************************************************/
#ifdef HAVE_CONFIG_H
@@
-59,8
+57,6
@@
static const Jim_Nvp nvp_jtag_tap_event[] = {
{ .name = NULL, .value = -1 }
};
{ .name = NULL, .value = -1 }
};
-extern struct jtag_interface *jtag_interface;
-
struct jtag_tap *jtag_tap_by_jim_obj(Jim_Interp *interp, Jim_Obj *o)
{
const char *cp = Jim_GetString(o, NULL);
struct jtag_tap *jtag_tap_by_jim_obj(Jim_Interp *interp, Jim_Obj *o)
{
const char *cp = Jim_GetString(o, NULL);
@@
-171,7
+167,10
@@
static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args
return JIM_ERR;
num_fields = (argc-2)/2;
return JIM_ERR;
num_fields = (argc-2)/2;
- assert(num_fields > 0);
+ if (num_fields <= 0) {
+ Jim_SetResultString(interp, "drscan: no scan fields supplied", -1);
+ return JIM_ERR;
+ }
fields = malloc(sizeof(struct scan_field) * num_fields);
for (i = 2; i < argc; i += 2) {
long bits;
fields = malloc(sizeof(struct scan_field) * num_fields);
for (i = 2; i < argc; i += 2) {
long bits;
@@
-433,20
+432,15
@@
static int jim_newtap_expected_id(Jim_Nvp *n, Jim_GetOptInfo *goi,
return e;
}
return e;
}
- u
nsigned expected_len = sizeof(uint32_t) * pTap->expected_ids_cnt;
-
uint32_t *new_expected_ids = malloc(expected_len +
sizeof(uint32_t));
- if (
new_expected_ids == NULL
) {
+ u
int32_t *p = realloc(pTap->expected_ids,
+
(pTap->expected_ids_cnt + 1) *
sizeof(uint32_t));
+ if (
!p
) {
Jim_SetResultFormatted(goi->interp, "no memory");
return JIM_ERR;
}
Jim_SetResultFormatted(goi->interp, "no memory");
return JIM_ERR;
}
- memcpy(new_expected_ids, pTap->expected_ids, expected_len);
-
- new_expected_ids[pTap->expected_ids_cnt] = w;
-
- free(pTap->expected_ids);
- pTap->expected_ids = new_expected_ids;
- pTap->expected_ids_cnt++;
+ pTap->expected_ids = p;
+ pTap->expected_ids[pTap->expected_ids_cnt++] = w;
return JIM_OK;
}
return JIM_OK;
}
@@
-537,11
+531,13
@@
static int jim_newtap_cmd(Jim_GetOptInfo *goi)
free(pTap);
return JIM_ERR;
}
free(pTap);
return JIM_ERR;
}
- Jim_GetOpt_String(goi, &cp, NULL);
- pTap->chip = strdup(cp);
- Jim_GetOpt_String(goi, &cp, NULL);
- pTap->tapname = strdup(cp);
+ const char *tmp;
+ Jim_GetOpt_String(goi, &tmp, NULL);
+ pTap->chip = strdup(tmp);
+
+ Jim_GetOpt_String(goi, &tmp, NULL);
+ pTap->tapname = strdup(tmp);
/* name + dot + name + null */
x = strlen(pTap->chip) + 1 + strlen(pTap->tapname) + 1;
/* name + dot + name + null */
x = strlen(pTap->chip) + 1 + strlen(pTap->tapname) + 1;
@@
-552,8
+548,15
@@
static int jim_newtap_cmd(Jim_GetOptInfo *goi)
LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params",
pTap->chip, pTap->tapname, pTap->dotted_name, goi->argc);
LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params",
pTap->chip, pTap->tapname, pTap->dotted_name, goi->argc);
+ if (!transport_is_jtag()) {
+ /* SWD doesn't require any JTAG tap parameters */
+ pTap->enabled = true;
+ jtag_tap_init(pTap);
+ return JIM_OK;
+ }
+
/* IEEE specifies that the two LSBs of an IR scan are 01, so make
/* IEEE specifies that the two LSBs of an IR scan are 01, so make
- * that the default. The "-ir
len
" and "-irmask" options are only
+ * that the default. The "-ir
capture
" and "-irmask" options are only
* needed to cope with nonstandard TAPs, or to specify more bits.
*/
pTap->ir_capture_mask = 0x03;
* needed to cope with nonstandard TAPs, or to specify more bits.
*/
pTap->ir_capture_mask = 0x03;
@@
-563,7
+566,7
@@
static int jim_newtap_cmd(Jim_GetOptInfo *goi)
e = Jim_GetOpt_Nvp(goi, opts, &n);
if (e != JIM_OK) {
Jim_GetOpt_NvpUnknown(goi, opts, 0);
e = Jim_GetOpt_Nvp(goi, opts, &n);
if (e != JIM_OK) {
Jim_GetOpt_NvpUnknown(goi, opts, 0);
- free(
(void *)pTap->dotted_name
);
+ free(
cp
);
free(pTap);
return e;
}
free(pTap);
return e;
}
@@
-578,7
+581,7
@@
static int jim_newtap_cmd(Jim_GetOptInfo *goi)
case NTAP_OPT_EXPECTED_ID:
e = jim_newtap_expected_id(n, goi, pTap);
if (JIM_OK != e) {
case NTAP_OPT_EXPECTED_ID:
e = jim_newtap_expected_id(n, goi, pTap);
if (JIM_OK != e) {
- free(
(void *)pTap->dotted_name
);
+ free(
cp
);
free(pTap);
return e;
}
free(pTap);
return e;
}
@@
-588,7
+591,7
@@
static int jim_newtap_cmd(Jim_GetOptInfo *goi)
case NTAP_OPT_IRCAPTURE:
e = jim_newtap_ir_param(n, goi, pTap);
if (JIM_OK != e) {
case NTAP_OPT_IRCAPTURE:
e = jim_newtap_ir_param(n, goi, pTap);
if (JIM_OK != e) {
- free(
(void *)pTap->dotted_name
);
+ free(
cp
);
free(pTap);
return e;
}
free(pTap);
return e;
}
@@
-1133,14
+1136,14
@@
COMMAND_HANDLER(handle_irscan_command)
}
int field_size = tap->ir_length;
fields[i].num_bits = field_size;
}
int field_size = tap->ir_length;
fields[i].num_bits = field_size;
-
fields[i].out_value
= malloc(DIV_ROUND_UP(field_size, 8));
+
uint8_t *v
= malloc(DIV_ROUND_UP(field_size, 8));
uint64_t value;
retval = parse_u64(CMD_ARGV[i * 2 + 1], &value);
if (ERROR_OK != retval)
goto error_return;
uint64_t value;
retval = parse_u64(CMD_ARGV[i * 2 + 1], &value);
if (ERROR_OK != retval)
goto error_return;
- void *v = (void *)fields[i].out_value;
buf_set_u64(v, 0, field_size, value);
buf_set_u64(v, 0, field_size, value);
+ fields[i].out_value = v;
fields[i].in_value = NULL;
}
fields[i].in_value = NULL;
}