From a4d610026f862518582357eeaa053d0baa6b9660 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Mon, 23 Dec 2013 17:35:18 +0100 Subject: [PATCH] ARM64 grub-file and grub-mkconfig support. --- ChangeLog | 4 ++++ grub-core/commands/file.c | 18 ++++++++++++++++++ util/grub-mkconfig.in | 3 ++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a92eccbdf..1043b4103 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-12-23 Vladimir Serbinenko + + ARM64 grub-file and grub-mkconfig support. + 2013-12-23 Vladimir Serbinenko Remove leftover options defines. diff --git a/grub-core/commands/file.c b/grub-core/commands/file.c index 2723609c0..42d62d479 100644 --- a/grub-core/commands/file.c +++ b/grub-core/commands/file.c @@ -48,6 +48,8 @@ static const struct grub_arg_option options[] = { N_("Check if FILE can be used as x86 multiboot2 kernel"), 0, 0}, {"is-arm-linux", 0, 0, N_("Check if FILE is ARM Linux"), 0, 0}, + {"is-arm64-linux", 0, 0, + N_("Check if FILE is ARM64 Linux"), 0, 0}, {"is-ia64-linux", 0, 0, N_("Check if FILE is IA64 Linux"), 0, 0}, {"is-mips-linux", 0, 0, @@ -107,6 +109,7 @@ enum IS_MULTIBOOT, IS_MULTIBOOT2, IS_ARM_LINUX, + IS_ARM64_LINUX, IS_IA64_LINUX, IS_MIPS_LINUX, IS_MIPSEL_LINUX, @@ -401,6 +404,21 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args) } break; } + case IS_ARM64_LINUX: + { + grub_uint32_t sig; + + if (grub_file_seek (file, 0x38) == (grub_size_t) -1) + break; + if (grub_file_read (file, &sig, 4) != 4) + break; + if (sig == grub_cpu_to_le32_compile_time (0x644d5241)) + { + ret = 1; + break; + } + break; + } case IS_PAE_DOMU ... IS_DOM0: { struct grub_xen_file_info xen_inf; diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in index 02a455eca..44f2d1d4d 100644 --- a/util/grub-mkconfig.in +++ b/util/grub-mkconfig.in @@ -273,7 +273,8 @@ for i in "${grub_mkconfig_dir}"/* ; do */\#*\#) ;; *) if grub_file_is_not_garbage "$i" && test -x "$i" ; then - for platform in x86 i386-xen-pae x86_64-xen mips mipsel sparc64 powerpc ia64 arm; do + for platform in x86 i386-xen-pae x86_64-xen mips mipsel sparc64 powerpc ia64 arm arm64; do + GRUB_PLATFORM=$platform export GRUB_PLATFORM buf="$($i)" -- 2.47.2