mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-02-18 22:32:28 +01:00
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.
124 lines
4.0 KiB
Diff
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
|
|
|