diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c
index e32ad909450ca23faab030698f7fea0faa95d675..415ac89de9f1fe9d7f20e39d7e3928ed282617ae 100644
--- a/arch/arm/lib/semihosting.c
+++ b/arch/arm/lib/semihosting.c
@@ -186,7 +186,7 @@ static int do_smhload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	if (argc == 3 || argc == 4) {
 		ulong load_addr;
 		ulong end_addr = 0;
-		ulong ret;
+		int ret;
 		char end_str[64];
 
 		load_addr = simple_strtoul(argv[2], NULL, 16);
@@ -195,7 +195,7 @@ static int do_smhload(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 		ret = smh_load_file(argv[1], load_addr, &end_addr);
 		if (ret < 0)
-			return 1;
+			return CMD_RET_FAILURE;
 
 		/* Optionally save returned end to the environment */
 		if (argc == 4) {