pxe: add AArch64 image support
authorStephen Warren <swarren@nvidia.com>
Tue, 21 Jul 2015 23:49:41 +0000 (17:49 -0600)
committerTom Warren <twarren@nvidia.com>
Mon, 27 Jul 2015 22:53:48 +0000 (15:53 -0700)
The sysboot and pxe commands currently support either U-Boot formats or
raw zImages. Add support for the AArch64 Linux port's native image format
too.

As with zImage support, there is no auto-detection of the native image
format. Rather, if the image is auto-detected as a U-Boot format, U-Boot
will try to interpret it as such. Otherwise, U-Boot will fall back to a
raw/native image format, if one is enabled.

My belief is that CONFIG_CMD_BOOTZ won't ever be enabled for any AArch64
port, hence there's never a need to differentiate between CONFIG_CMD_
_BOOTI and _BOOTZ at run-time; compile-time will do. Even if this isn't
true, we want to prefer _BOOTI over _BOOTZ when defined, since _BOOTI is
definitely the native format for AArch64.

Change-Id: I83c5cc7566032afd72516de46f4e5eb7a780284a
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
common/cmd_pxe.c
include/command.h

index abf0941b579c20ae8ca1b31ba7196921e39ffab2..080b3760de0074d2468a838a12ce850ac510b059 100644 (file)
@@ -793,8 +793,12 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
        /* Try bootm for legacy and FIT format image */
        if (genimg_get_format(buf) != IMAGE_FORMAT_INVALID)
                do_bootm(cmdtp, 0, bootm_argc, bootm_argv);
-#ifdef CONFIG_CMD_BOOTZ
-       /* Try booting a zImage */
+#ifdef CONFIG_CMD_BOOTI
+       /* Try booting an AArch64 Linux kernel image */
+       else
+               do_booti(cmdtp, 0, bootm_argc, bootm_argv);
+#elif defined(CONFIG_CMD_BOOTZ)
+       /* Try booting a Image */
        else
                do_bootz(cmdtp, 0, bootm_argc, bootm_argv);
 #endif
index bd3fc049ecaa7b3e3c30c0fafc4fb35dd1790f02..6c04cd9007a5ea1bdc05b0580355bb62c0c5fac2 100644 (file)
@@ -104,6 +104,8 @@ static inline int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
 
 extern int do_bootz(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
+extern int do_booti(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+
 extern int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
                           char *const argv[]);