@@ -4701,91 +4701,62 @@ void target_handle_event(struct target *target, enum target_event e)
47014701 }
47024702}
47034703
4704- static int target_jim_get_reg (Jim_Interp * interp , int argc ,
4705- Jim_Obj * const * argv )
4704+ COMMAND_HANDLER (handle_target_get_reg )
47064705{
4707- bool force = false;
4706+ if (CMD_ARGC < 1 || CMD_ARGC > 2 )
4707+ return ERROR_COMMAND_SYNTAX_ERROR ;
47084708
4709- if ( argc == 3 ) {
4710- const char * option = Jim_GetString ( argv [ 1 ], NULL ) ;
4709+ bool force = false;
4710+ Jim_Obj * next_argv = CMD_JIMTCL_ARGV [ 0 ] ;
47114711
4712- if (!strcmp (option , "-force" )) {
4713- argc -- ;
4714- argv ++ ;
4715- force = true;
4716- } else {
4717- Jim_SetResultFormatted (interp , "invalid option '%s'" , option );
4718- return JIM_ERR ;
4712+ if (CMD_ARGC == 2 ) {
4713+ if (strcmp (CMD_ARGV [0 ], "-force" )) {
4714+ command_print (CMD , "invalid argument '%s', must be '-force'" , CMD_ARGV [0 ]);
4715+ return ERROR_COMMAND_ARGUMENT_INVALID ;
47194716 }
4720- }
47214717
4722- if (argc != 2 ) {
4723- Jim_WrongNumArgs (interp , 1 , argv , "[-force] list" );
4724- return JIM_ERR ;
4718+ force = true;
4719+ next_argv = CMD_JIMTCL_ARGV [1 ];
47254720 }
47264721
4727- const int length = Jim_ListLength (interp , argv [ 1 ] );
4722+ const int length = Jim_ListLength (CMD_CTX -> interp , next_argv );
47284723
4729- Jim_Obj * result_dict = Jim_NewDictObj (interp , NULL , 0 );
4730-
4731- if (!result_dict )
4732- return JIM_ERR ;
4733-
4734- struct command_context * cmd_ctx = current_command_context (interp );
4735- assert (cmd_ctx );
4736- const struct target * target = get_current_target (cmd_ctx );
4724+ const struct target * target = get_current_target (CMD_CTX );
47374725
47384726 for (int i = 0 ; i < length ; i ++ ) {
4739- Jim_Obj * elem = Jim_ListGetIndex (interp , argv [1 ], i );
4740-
4741- if (!elem )
4742- return JIM_ERR ;
4727+ Jim_Obj * elem = Jim_ListGetIndex (CMD_CTX -> interp , next_argv , i );
47434728
47444729 const char * reg_name = Jim_String (elem );
47454730
4746- struct reg * reg = register_get_by_name (target -> reg_cache , reg_name ,
4747- false);
4731+ struct reg * reg = register_get_by_name (target -> reg_cache , reg_name , false);
47484732
47494733 if (!reg || !reg -> exist ) {
4750- Jim_SetResultFormatted ( interp , "unknown register '%s'" , reg_name );
4751- return JIM_ERR ;
4734+ command_print ( CMD , "unknown register '%s'" , reg_name );
4735+ return ERROR_COMMAND_ARGUMENT_INVALID ;
47524736 }
47534737
47544738 if (force || !reg -> valid ) {
47554739 int retval = reg -> type -> get (reg );
47564740
47574741 if (retval != ERROR_OK ) {
4758- Jim_SetResultFormatted (interp , "failed to read register '%s'" ,
4759- reg_name );
4760- return JIM_ERR ;
4742+ command_print (CMD , "failed to read register '%s'" , reg_name );
4743+ return retval ;
47614744 }
47624745 }
47634746
47644747 char * reg_value = buf_to_hex_str (reg -> value , reg -> size );
47654748
47664749 if (!reg_value ) {
47674750 LOG_ERROR ("Failed to allocate memory" );
4768- return JIM_ERR ;
4751+ return ERROR_FAIL ;
47694752 }
47704753
4771- char * tmp = alloc_printf ( " 0x%s" , reg_value );
4754+ command_print ( CMD , "%s 0x%s", reg_name , reg_value );
47724755
47734756 free (reg_value );
4774-
4775- if (!tmp ) {
4776- LOG_ERROR ("Failed to allocate memory" );
4777- return JIM_ERR ;
4778- }
4779-
4780- Jim_DictAddElement (interp , result_dict , elem ,
4781- Jim_NewStringObj (interp , tmp , -1 ));
4782-
4783- free (tmp );
47844757 }
47854758
4786- Jim_SetResult (interp , result_dict );
4787-
4788- return JIM_OK ;
4759+ return ERROR_OK ;
47894760}
47904761
47914762COMMAND_HANDLER (handle_set_reg_command )
@@ -5577,9 +5548,9 @@ static const struct command_registration target_instance_command_handlers[] = {
55775548 {
55785549 .name = "get_reg" ,
55795550 .mode = COMMAND_EXEC ,
5580- .jim_handler = target_jim_get_reg ,
5551+ .handler = handle_target_get_reg ,
55815552 .help = "Get register values from the target" ,
5582- .usage = "list" ,
5553+ .usage = "[-force] list" ,
55835554 },
55845555 {
55855556 .name = "set_reg" ,
@@ -6712,9 +6683,9 @@ static const struct command_registration target_exec_command_handlers[] = {
67126683 {
67136684 .name = "get_reg" ,
67146685 .mode = COMMAND_EXEC ,
6715- .jim_handler = target_jim_get_reg ,
6686+ .handler = handle_target_get_reg ,
67166687 .help = "Get register values from the target" ,
6717- .usage = "list" ,
6688+ .usage = "[-force] list" ,
67186689 },
67196690 {
67206691 .name = "set_reg" ,
0 commit comments