mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
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>
This commit is contained in:
parent
dbf6f7c952
commit
dcc4f9623e
2 changed files with 5 additions and 81 deletions
|
@ -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");
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue