armv8: semihosting: delete external interface

Now that loading files using semihosting can be done using
a command in standard scripts, and we have rewritten the boardfile
and added it to the Vexpress64, let's delete the external
interface to the semihosting file retrieveal and rely solely
on these commands, and staticize them inside that file so the
whole business is self-contained.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
master
Linus Walleij 10 years ago committed by Tom Rini
parent 49995ffe81
commit d5f3d17ca6
  1. 17
      arch/arm/include/asm/semihosting.h
  2. 92
      arch/arm/lib/semihosting.c

@ -1,17 +0,0 @@
/*
* Copyright 2014 Broadcom Corporation
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef __SEMIHOSTING_H__
#define __SEMIHOSTING_H__
/*
* ARM semihosting functions for loading images to memory. See the source
* code for more information.
*/
int smh_load(const char *fname, void *memp, int avail, int verbose);
long smh_len(const char *fname);
#endif /* __SEMIHOSTING_H__ */

@ -14,7 +14,6 @@
*/
#include <common.h>
#include <command.h>
#include <asm/semihosting.h>
#define SYSOPEN 0x01
#define SYSCLOSE 0x02
@ -145,97 +144,6 @@ static long smh_len_fd(long fd)
return ret;
}
/*
* Open, load a file into memory, and close it. Check that the available space
* is sufficient to store the entire file. Return the bytes actually read from
* the file as seen by the read function. The verbose flag enables some extra
* printing of successful read status.
*/
int smh_load(const char *fname, void *memp, int avail, int verbose)
{
long ret;
long fd;
size_t len;
ret = -1;
debug("%s: fname \'%s\', avail %u, memp %p\n", __func__, fname,
avail, memp);
/* Open the file */
fd = smh_open(fname, "rb");
if (fd == -1)
return -1;
/* Get the file length */
ret = smh_len_fd(fd);
if (ret == -1) {
smh_close(fd);
return -1;
}
/* Check that the file will fit in the supplied buffer */
if (ret > avail) {
printf("%s: ERROR ret %ld, avail %u\n", __func__, ret,
avail);
smh_close(fd);
return -1;
}
len = ret;
/* Read the file into the buffer */
ret = smh_read(fd, memp, len);
if (ret == 0) {
/* Print successful load information if requested */
if (verbose) {
printf("\n%s\n", fname);
printf(" 0x%8p dest\n", memp);
printf(" 0x%08lx size\n", len);
printf(" 0x%08x avail\n", avail);
}
}
/* Close the file */
smh_close(fd);
return ret;
}
/*
* Get the file length from the filename
*/
long smh_len(const char *fname)
{
long ret;
long fd;
long len;
debug("%s: file \'%s\'\n", __func__, fname);
/* Open the file */
fd = smh_open(fname, "rb");
if (fd < 0)
return fd;
/* Get the file length */
len = smh_len_fd(fd);
if (len < 0) {
smh_close(fd);
return len;
}
/* Close the file */
ret = smh_close(fd);
if (ret < 0)
return ret;
debug("%s: returning len %ld\n", __func__, len);
/* Return the file length (or -1 error indication) */
return len;
}
static int smh_load_file(const char * const name, ulong load_addr,
ulong *end_addr)
{

Loading…
Cancel
Save