diff --git a/src/target/arm11.c b/src/target/arm11.c
index 5411b04dc532639e790c2d88f0df551f649e6224..28ee723899ba74f4909a4efd316e6977f60eb52c 100644
--- a/src/target/arm11.c
+++ b/src/target/arm11.c
@@ -2060,12 +2060,12 @@ BOOL_WRAPPER(hardware_step,			"hardware single step")
 
 int arm11_handle_vcr(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
-	if (argc == 1)
-	{
-		arm11_vcr = strtoul(args[0], NULL, 0);
-	}
-	else if (argc != 0)
-	{
+	switch (argc) {
+	case 0:
+		break;
+	case 1:
+		COMMAND_PARSE_NUMBER(u32, args[0], arm11_vcr);
+	default:
 		return ERROR_COMMAND_SYNTAX_ERROR;
 	}
 
@@ -2134,7 +2134,7 @@ int arm11_handle_mrc_mcr(struct command_context_s *cmd_ctx, char *cmd, char **ar
 
 	for (size_t i = 0; i < (read ? 5 : 6); i++)
 	{
-		values[i] = strtoul(args[i + 1], NULL, 0);
+		COMMAND_PARSE_NUMBER(u32, args[i + 1], values[i]);
 
 		if (values[i] > arm11_coproc_instruction_limits[i])
 		{