- if (info.name == NULL)
- info.name = "<no name>";
-
- Jim_ListAppendElement(interp, threadObj, Jim_NewStringObj(interp,
- info.name, strlen(info.name)));
-
- /* Translate the state into a string.
- */
- if (info.state == 0)
- state_string = "RUN";
- else if (info.state & 0x04)
- state_string = "SUSP";
- else
- switch (info.state & 0x1b)
- {
- case 0x01:
- state_string = "SLEEP";
- break;
- case 0x02:
- state_string = "CNTSLEEP";
- break;
- case 0x08:
- state_string = "CREATE";
- break;
- case 0x10:
- state_string = "EXIT";
- break;
- default:
- state_string = "????";
- break;
- }
-
- Jim_ListAppendElement(interp, threadObj, Jim_NewStringObj(interp,
- state_string, strlen(state_string)));
-
- Jim_ListAppendElement (interp, threadObj, Jim_NewIntObj(interp, id));
- Jim_ListAppendElement(interp, threadObj, Jim_NewIntObj(interp, info.set_pri));
- Jim_ListAppendElement(interp, threadObj, Jim_NewIntObj(interp, info.cur_pri));
-
- Jim_ListAppendElement(interp, threads, threadObj);
- }
- Jim_SetResult( interp, threads);
-
- return JIM_OK;
-}
-
-
-static int
-zylinjtag_Jim_Command_ls(Jim_Interp *interp,
- int argc,
- Jim_Obj * const *argv)
-{
- if (argc != 2)
- {
- Jim_WrongNumArgs(interp, 1, argv, "ls ?dir?");
- return JIM_ERR;
- }
-
- char *name = (char*) Jim_GetString(argv[1], NULL);
-
- DIR *dirp = NULL;
- dirp = opendir(name);
- if (dirp == NULL)
- {
- return JIM_ERR;
- }
- Jim_Obj *objPtr = Jim_NewListObj(interp, NULL, 0);
-
- for (;;)
- {
- struct dirent *entry = NULL;
- entry = readdir(dirp);
- if (entry == NULL)
- break;
-
- if ((strcmp(".", entry->d_name)==0)||(strcmp("..", entry->d_name)==0))
- continue;
-
- Jim_ListAppendElement(interp, objPtr, Jim_NewStringObj(interp, entry->d_name, strlen(entry->d_name)));
- }
- closedir(dirp);
-
- Jim_SetResult(interp, objPtr);
-
- return JIM_OK;
-}
-
-
-static int
-zylinjtag_Jim_Command_getmem(Jim_Interp *interp,
- int argc,
- Jim_Obj * const *argv)
-{
- if (argc != 3)
- {
- Jim_WrongNumArgs(interp, 1, argv, "ls ?dir?");
- return JIM_ERR;
- }
-
- long address;
- long length;
- if (Jim_GetLong(interp, argv[1], &address) != JIM_OK)
- return JIM_ERR;
- if (Jim_GetLong(interp, argv[2], &length) != JIM_OK)
- return JIM_ERR;
-
- if (length < 0 && length > (4096 * 1024))
- {
- Jim_WrongNumArgs(interp, 1, argv, "getmem ?dir?");
- return JIM_ERR;
- }
-
- void *mem = malloc(length);
- if (mem == NULL)
- return JIM_ERR;
-
- target_t *target = get_current_target(cmd_ctx);
-
- int retval;
- int size = 1;
- int count = length;
- if ((address % 4 == 0) && (count % 4 == 0))
- {
- size = 4;
- count /= 4;
- }
-
- if ((retval = target->type->read_memory(target, address, size, count, mem)) != ERROR_OK)
- {
- free(mem);
- return JIM_ERR;
- }
-
- Jim_Obj *objPtr = Jim_NewStringObj(interp, mem, length);
- Jim_SetResult(interp, objPtr);
-
- free(mem);
-
- return JIM_OK;
-}
-
-static int
-zylinjtag_Jim_Command_peek(Jim_Interp *interp,
- int argc,
- Jim_Obj * const *argv)
-{
- if (argc != 2)
- {
- Jim_WrongNumArgs(interp, 1, argv, "peek ?address?");
- return JIM_ERR;
- }
-
- long address;
- if (Jim_GetLong(interp, argv[1], &address) != JIM_OK)
- return JIM_ERR;
-
- int value = *((volatile int *) address);
-
- Jim_SetResult(interp, Jim_NewIntObj(interp, value));
-
- return JIM_OK;
-}
-
-static int
-zylinjtag_Jim_Command_poke(Jim_Interp *interp,
- int argc,
- Jim_Obj * const *argv)
-{
- if (argc != 3)
- {
- Jim_WrongNumArgs(interp, 1, argv, "poke ?address? ?value?");
- return JIM_ERR;
- }
-
- long address;
- if (Jim_GetLong(interp, argv[1], &address) != JIM_OK)
- return JIM_ERR;
- long value;
- if (Jim_GetLong(interp, argv[2], &value) != JIM_OK)
- return JIM_ERR;
-
- *((volatile int *) address) = value;
-
- return JIM_OK;
-}
-
-
-
-static int
-zylinjtag_Jim_Command_flash(Jim_Interp *interp,
- int argc,
- Jim_Obj * const *argv)
-{
- int retval;
- u32 base = 0;
- flash_bank_t *t = get_flash_bank_by_num_noprobe(0);
- if (t != NULL)
- {
- base = t->base;
- retval = JIM_OK;
- } else