aports/main/grub/0007-RISC-V-Use-common-linux-loader.patch
Drew DeVault cb053f3506 main/grub: add additional riscv64 patches
The RISC-V implementation on grub upstream has the Linux loader stubbed
out and is largely non-functional. This incorporates the latest version
of a patchset from the grub mailing list which fleshes out the Linux
loader for RISC-V. With these changes, grub is able to boot Alpine Linux
via UEFI on RISC-V.
2021-09-19 15:43:38 +00:00

124 lines
4.0 KiB
Diff

From 81772eb884e9ab35b461bc9f0a38e1ab2b6a82a5 Mon Sep 17 00:00:00 2001
From: Atish Patra <atish.patra@wdc.com>
Date: Thu, 3 Jun 2021 00:12:35 +0300
Subject: [PATCH 7/7] RISC-V: Use common linux loader
RISC-V doesn't have to do anything very different from other architectures
to loader EFI stub linux kernel. As a result, just use the common linux
loader instead of defining a RISC-V specific linux loader.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
---
grub-core/Makefile.core.def | 4 +--
grub-core/loader/riscv/linux.c | 59 ----------------------------------
include/grub/riscv32/linux.h | 1 +
include/grub/riscv64/linux.h | 1 +
4 files changed, 4 insertions(+), 61 deletions(-)
delete mode 100644 grub-core/loader/riscv/linux.c
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
index b36cf663a..0536575bc 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -1809,8 +1809,8 @@ module = {
arm_efi = loader/efi/linux.c;
arm_uboot = loader/arm/linux.c;
arm64 = loader/efi/linux.c;
- riscv32 = loader/riscv/linux.c;
- riscv64 = loader/riscv/linux.c;
+ riscv32 = loader/efi/linux.c;
+ riscv64 = loader/efi/linux.c;
common = loader/linux.c;
common = lib/cmdline.c;
enable = noemu;
diff --git a/grub-core/loader/riscv/linux.c b/grub-core/loader/riscv/linux.c
deleted file mode 100644
index d17c488e1..000000000
--- a/grub-core/loader/riscv/linux.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * GRUB -- GRand Unified Bootloader
- * Copyright (C) 2018 Free Software Foundation, Inc.
- *
- * GRUB is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GRUB is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <grub/command.h>
-#include <grub/dl.h>
-#include <grub/lib/cmdline.h>
-
-GRUB_MOD_LICENSE ("GPLv3+");
-
-static grub_err_t
-grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
- int argc __attribute__ ((unused)),
- char *argv[] __attribute__ ((unused)))
-{
- grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET, N_("Linux not supported yet"));
-
- return grub_errno;
-}
-
-static grub_err_t
-grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
- int argc __attribute__ ((unused)),
- char *argv[] __attribute__ ((unused)))
-{
- grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET, N_("Linux not supported yet"));
-
- return grub_errno;
-}
-
-static grub_command_t cmd_linux, cmd_initrd;
-
-GRUB_MOD_INIT (linux)
-{
- cmd_linux = grub_register_command ("linux", grub_cmd_linux, 0,
- N_("Load Linux."));
- cmd_initrd = grub_register_command ("initrd", grub_cmd_initrd, 0,
- N_("Load initrd."));
-}
-
-GRUB_MOD_FINI (linux)
-{
- grub_unregister_command (cmd_linux);
- grub_unregister_command (cmd_initrd);
-}
diff --git a/include/grub/riscv32/linux.h b/include/grub/riscv32/linux.h
index de0dbdcd1..706c69087 100644
--- a/include/grub/riscv32/linux.h
+++ b/include/grub/riscv32/linux.h
@@ -38,5 +38,6 @@ struct linux_riscv_kernel_header
};
#define linux_arch_kernel_header linux_riscv_kernel_header
+# define GRUB_LINUX_ARCH_MAGIC_SIGNATURE GRUB_LINUX_RISCV_MAGIC_SIGNATURE
#endif /* ! GRUB_RISCV32_LINUX_HEADER */
diff --git a/include/grub/riscv64/linux.h b/include/grub/riscv64/linux.h
index 7c28bc922..88d5df781 100644
--- a/include/grub/riscv64/linux.h
+++ b/include/grub/riscv64/linux.h
@@ -40,5 +40,6 @@ struct linux_riscv_kernel_header
};
#define linux_arch_kernel_header linux_riscv_kernel_header
+# define GRUB_LINUX_ARCH_MAGIC_SIGNATURE GRUB_LINUX_RISCV_MAGIC_SIGNATURE
#endif /* ! GRUB_RISCV64_LINUX_HEADER */
--
2.33.0