[PATCH v3 14/29] arm: smh: Remove smhload command
Sean Anderson
sean.anderson at seco.com
Tue Mar 22 21:59:22 CET 2022
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 at seco.com>
---
Changes in v3:
- Add dummy device number for hostfs
Changes in v2:
- Rebase on Andre's series
arch/arm/lib/semihosting.c | 76 --------------------------------
include/configs/vexpress_aemv8.h | 10 ++---
2 files changed, 5 insertions(+), 81 deletions(-)
diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c
index 45cd566cfc..57ab25294f 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 eb1f7a78d3..7f47880f70 100644
--- a/include/configs/vexpress_aemv8.h
+++ b/include/configs/vexpress_aemv8.h
@@ -170,20 +170,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"
--
2.25.1
More information about the U-Boot
mailing list