]> git.sur5r.net Git - u-boot/commitdiff
arm: semihosting: get rid of forward declarations
authorLinus Walleij <linus.walleij@linaro.org>
Mon, 15 Dec 2014 10:06:05 +0000 (11:06 +0100)
committerTom Rini <trini@ti.com>
Mon, 29 Dec 2014 12:44:06 +0000 (07:44 -0500)
By rearranging the functions in the semihosting code we can
avoid forward-declaration of the internal static functions.
This puts the stuff in a logical order: read/open/close/len
and then higher-order functions follow at the end.

Cc: Darwin Rambo <drambo@broadcom.com>
Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
Cc: Mark Hambleton <mark.hambleton@arm.com>
Cc: Tom Rini <trini@ti.com>
Acked-by: Steve Rae <srae@broadcom.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
arch/arm/lib/semihosting.c

index e9d524e18acabe35bf2f6233471215cf6e185e03..fd6d8573f560fd1064f43540fea6b43c2a7ebd07 100644 (file)
 #define MODE_READ      0x0
 #define MODE_READBIN   0x1
 
-static long smh_read(long fd, void *memp, size_t len);
-static long smh_open(const char *fname, char *modestr);
-static long smh_close(long fd);
-static long smh_len_fd(long fd);
-
 /*
  * Call the handler
  */
@@ -44,60 +39,43 @@ static long smh_trap(unsigned int sysnum, void *addr)
 }
 
 /*
- * 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.
+ * Open a file on the host. Mode is "r" or "rb" currently. Returns a file
+ * descriptor or -1 on error.
  */
-int smh_load(const char *fname, void *memp, int avail, int verbose)
+static long smh_open(const char *fname, char *modestr)
 {
-       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;
+       unsigned long mode;
+       struct smh_open_s {
+               const char *fname;
+               unsigned long mode;
+               size_t len;
+       } open;
 
-       /* Get the file length */
-       ret = smh_len_fd(fd);
-       if (ret == -1) {
-               smh_close(fd);
-               return -1;
-       }
+       debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr);
 
-       /* 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);
+       /* Check the file mode */
+       if (!(strcmp(modestr, "r"))) {
+               mode = MODE_READ;
+       } else if (!(strcmp(modestr, "rb"))) {
+               mode = MODE_READBIN;
+       } else {
+               printf("%s: ERROR mode \'%s\' not supported\n", __func__,
+                      modestr);
                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);
-               }
-       }
+       open.fname = fname;
+       open.len = strlen(fname);
+       open.mode = mode;
 
-       /* Close the file */
-       smh_close(fd);
+       /* Open the file on the host */
+       fd = smh_trap(SYSOPEN, &open);
+       if (fd == -1)
+               printf("%s: ERROR fd %ld for file \'%s\'\n", __func__, fd,
+                      fname);
 
-       return ret;
+       return fd;
 }
 
 /*
@@ -134,46 +112,6 @@ static long smh_read(long fd, void *memp, size_t len)
        return 0;
 }
 
-/*
- * Open a file on the host. Mode is "r" or "rb" currently. Returns a file
- * descriptor or -1 on error.
- */
-static long smh_open(const char *fname, char *modestr)
-{
-       long fd;
-       unsigned long mode;
-       struct smh_open_s {
-               const char *fname;
-               unsigned long mode;
-               size_t len;
-       } open;
-
-       debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr);
-
-       /* Check the file mode */
-       if (!(strcmp(modestr, "r"))) {
-               mode = MODE_READ;
-       } else if (!(strcmp(modestr, "rb"))) {
-               mode = MODE_READBIN;
-       } else {
-               printf("%s: ERROR mode \'%s\' not supported\n", __func__,
-                      modestr);
-               return -1;
-       }
-
-       open.fname = fname;
-       open.len = strlen(fname);
-       open.mode = mode;
-
-       /* Open the file on the host */
-       fd = smh_trap(SYSOPEN, &open);
-       if (fd == -1)
-               printf("%s: ERROR fd %ld for file \'%s\'\n", __func__, fd,
-                      fname);
-
-       return fd;
-}
-
 /*
  * Close the file using the file descriptor
  */
@@ -206,6 +144,63 @@ 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
  */