aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Anderson <sean.anderson@seco.com>2022-03-22 16:59:22 -0400
committerTom Rini <trini@konsulko.com>2022-04-01 15:03:13 -0400
commitdcc4f9623e27b92a1e0b97326631b0d5841c49cb (patch)
tree8060d94f0be5b2044e0ba6e8ea8a15532178e240
parentdbf6f7c95240bd5fc7f5bbc2b36e275248279f53 (diff)
downloadu-boot-dcc4f9623e27b92a1e0b97326631b0d5841c49cb.zip
u-boot-dcc4f9623e27b92a1e0b97326631b0d5841c49cb.tar.gz
u-boot-dcc4f9623e27b92a1e0b97326631b0d5841c49cb.tar.bz2
arm: smh: Remove smhload command
This command's functionality is now completely implemented by the standard fs load command. Convert the vexpress64 boot command (which is the only user) and remove the implementation. Signed-off-by: Sean Anderson <sean.anderson@seco.com>
-rw-r--r--arch/arm/lib/semihosting.c76
-rw-r--r--include/configs/vexpress_aemv8.h10
2 files changed, 5 insertions, 81 deletions
diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c
index 45cd566..57ab252 100644
--- a/arch/arm/lib/semihosting.c
+++ b/arch/arm/lib/semihosting.c
@@ -10,8 +10,6 @@
* available in silicon now, fastmodel usage makes less sense for them.
*/
#include <common.h>
-#include <command.h>
-#include <env.h>
#include <log.h>
#include <semihosting.h>
@@ -169,77 +167,3 @@ long smh_seek(long fd, long pos)
return smh_errno();
return 0;
}
-
-static int smh_load_file(const char * const name, ulong load_addr,
- ulong *size)
-{
- long fd;
- long len;
- long ret;
-
- fd = smh_open(name, MODE_READ | MODE_BINARY);
- if (fd < 0)
- return fd;
-
- len = smh_flen(fd);
- if (len < 0) {
- smh_close(fd);
- return len;
- }
-
- ret = smh_read(fd, (void *)load_addr, len);
- smh_close(fd);
-
- if (ret == len) {
- *size = len;
- printf("loaded file %s from %08lX to %08lX, %08lX bytes\n",
- name,
- load_addr,
- load_addr + len - 1,
- len);
- } else if (ret >= 0) {
- ret = -EAGAIN;
- }
-
- if (ret < 0) {
- printf("read failed: %ld\n", ret);
- return ret;
- }
-
- return 0;
-}
-
-static int do_smhload(struct cmd_tbl *cmdtp, int flag, int argc,
- char *const argv[])
-{
- if (argc == 3 || argc == 4) {
- ulong load_addr;
- ulong size = 0;
- int ret;
- char size_str[64];
-
- load_addr = hextoul(argv[2], NULL);
- if (!load_addr)
- return -1;
-
- ret = smh_load_file(argv[1], load_addr, &size);
- if (ret < 0)
- return CMD_RET_FAILURE;
-
- /* Optionally save returned end to the environment */
- if (argc == 4) {
- sprintf(size_str, "0x%08lx", size);
- env_set(argv[3], size_str);
- }
- } else {
- return CMD_RET_USAGE;
- }
- return 0;
-}
-
-U_BOOT_CMD(smhload, 4, 0, do_smhload, "load a file using semihosting",
- "<file> 0x<address> [end var]\n"
- " - load a semihosted file to the address specified\n"
- " if the optional [end var] is specified, the end\n"
- " address of the file will be stored in this environment\n"
- " variable.\n");
diff --git a/include/configs/vexpress_aemv8.h b/include/configs/vexpress_aemv8.h
index efffea9..4f0ff23 100644
--- a/include/configs/vexpress_aemv8.h
+++ b/include/configs/vexpress_aemv8.h
@@ -167,20 +167,20 @@
*/
#define BOOTENV_DEV_SMH(devtypeu, devtypel, instance) \
"bootcmd_smh= " \
- "if smhload ${boot_name} ${boot_addr_r}; then" \
+ "if load hostfs - ${boot_addr_r} ${boot_name}; then" \
" setenv bootargs;" \
" abootimg addr ${boot_addr_r};" \
" abootimg get dtb --index=0 fdt_addr_r;" \
" bootm ${boot_addr_r} ${boot_addr_r} ${fdt_addr_r};" \
"else" \
- " if smhload ${kernel_name} ${kernel_addr_r}; then" \
+ " if load hostfs - ${kernel_addr_r} ${kernel_name}; then" \
" setenv fdt_high 0xffffffffffffffff;" \
" setenv initrd_high 0xffffffffffffffff;" \
- " smhload ${fdtfile} ${fdt_addr_r};" \
- " smhload ${ramdisk_name} ${ramdisk_addr_r} ramdisk_end;" \
+ " load hostfs - ${fdt_addr_r} ${fdtfile};" \
+ " load hostfs - ${ramdisk_addr_r} ${ramdisk_name};" \
" fdt addr ${fdt_addr_r};" \
" fdt resize;" \
- " fdt chosen ${ramdisk_addr_r} ${ramdisk_end};" \
+ " fdt chosen ${ramdisk_addr_r} ${filesize};" \
" booti $kernel_addr_r - $fdt_addr_r;" \
" fi;" \
"fi\0"