Accepting request 741725 from home:Andreas_Schwab:Factory
- Enable support for riscv64 - Backports from upstream: * risc-v-fix-computation-of-pc-relative-relocation-offset.patch * risc-v-add-clzdi2-symbol.patch * grub-install-define-default-platform-for-risc-v.patch OBS-URL: https://build.opensuse.org/request/show/741725 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=341
This commit is contained in:
parent
62e3547e57
commit
5c5a86e543
34
grub-install-define-default-platform-for-risc-v.patch
Normal file
34
grub-install-define-default-platform-for-risc-v.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
From 11268841e2e0130a862d15fce86d42cd6501bb49 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Schwab <schwab@suse.de>
|
||||||
|
Date: Thu, 15 Aug 2019 16:55:13 +0200
|
||||||
|
Subject: [PATCH] grub-install: Define default platform for RISC-V
|
||||||
|
|
||||||
|
Signed-off-by: Andreas Schwab <schwab@suse.de>
|
||||||
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||||
|
Reviewed-by: Alexander Graf <agraf@csgraf.de>
|
||||||
|
---
|
||||||
|
util/grub-install.c | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/util/grub-install.c b/util/grub-install.c
|
||||||
|
index 8a55ad4b8..8970b73aa 100644
|
||||||
|
--- a/util/grub-install.c
|
||||||
|
+++ b/util/grub-install.c
|
||||||
|
@@ -324,6 +324,14 @@ get_default_platform (void)
|
||||||
|
return "arm64-efi";
|
||||||
|
#elif defined (__amd64__) || defined (__x86_64__) || defined (__i386__)
|
||||||
|
return grub_install_get_default_x86_platform ();
|
||||||
|
+#elif defined (__riscv)
|
||||||
|
+#if __riscv_xlen == 32
|
||||||
|
+ return "riscv32-efi";
|
||||||
|
+#elif __riscv_xlen == 64
|
||||||
|
+ return "riscv64-efi";
|
||||||
|
+#else
|
||||||
|
+ return NULL;
|
||||||
|
+#endif
|
||||||
|
#elif defined (__s390x__)
|
||||||
|
return "s390x-emu";
|
||||||
|
#else
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Oct 22 08:05:19 UTC 2019 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
- Enable support for riscv64
|
||||||
|
- Backports from upstream:
|
||||||
|
* risc-v-fix-computation-of-pc-relative-relocation-offset.patch
|
||||||
|
* risc-v-add-clzdi2-symbol.patch
|
||||||
|
* grub-install-define-default-platform-for-risc-v.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Oct 17 06:34:52 UTC 2019 - Michael Chang <mchang@suse.com>
|
Thu Oct 17 06:34:52 UTC 2019 - Michael Chang <mchang@suse.com>
|
||||||
|
|
||||||
|
21
grub2.spec
21
grub2.spec
@ -101,11 +101,17 @@ BuildRequires: update-bootloader-rpm-macros
|
|||||||
%define only_efi 1
|
%define only_efi 1
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%ifarch riscv64
|
||||||
|
%define grubcpu riscv64
|
||||||
|
%define platform efi
|
||||||
|
%define only_efi 1
|
||||||
|
%endif
|
||||||
|
|
||||||
%define grubarch %{grubcpu}-%{platform}
|
%define grubarch %{grubcpu}-%{platform}
|
||||||
|
|
||||||
# build efi bootloader on some platforms only:
|
# build efi bootloader on some platforms only:
|
||||||
%if ! 0%{?efi:1}
|
%if ! 0%{?efi:1}
|
||||||
%global efi %{ix86} x86_64 ia64 aarch64 %{arm}
|
%global efi %{ix86} x86_64 ia64 aarch64 %{arm} riscv64
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifarch %{efi}
|
%ifarch %{efi}
|
||||||
@ -277,6 +283,10 @@ Patch501: grub2-btrfs-help-on-snapper-rollback.patch
|
|||||||
Patch510: grub2-video-limit-the-resolution-for-fixed-bimap-font.patch
|
Patch510: grub2-video-limit-the-resolution-for-fixed-bimap-font.patch
|
||||||
# Support long menuentries (FATE#325760)
|
# Support long menuentries (FATE#325760)
|
||||||
Patch511: grub2-gfxmenu-support-scrolling-menu-entry-s-text.patch
|
Patch511: grub2-gfxmenu-support-scrolling-menu-entry-s-text.patch
|
||||||
|
# RISC-V fixes
|
||||||
|
Patch601: risc-v-fix-computation-of-pc-relative-relocation-offset.patch
|
||||||
|
Patch602: risc-v-add-clzdi2-symbol.patch
|
||||||
|
Patch603: grub-install-define-default-platform-for-risc-v.patch
|
||||||
|
|
||||||
Requires: gettext-runtime
|
Requires: gettext-runtime
|
||||||
%if 0%{?suse_version} >= 1140
|
%if 0%{?suse_version} >= 1140
|
||||||
@ -310,7 +320,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|||||||
%if 0%{?only_x86_64:1}
|
%if 0%{?only_x86_64:1}
|
||||||
ExclusiveArch: x86_64
|
ExclusiveArch: x86_64
|
||||||
%else
|
%else
|
||||||
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x aarch64 %{arm}
|
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x aarch64 %{arm} riscv64
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -371,10 +381,10 @@ provides support for %{platform} systems.
|
|||||||
%package %{grubefiarch}
|
%package %{grubefiarch}
|
||||||
|
|
||||||
Summary: Bootloader with support for Linux, Multiboot and more
|
Summary: Bootloader with support for Linux, Multiboot and more
|
||||||
# Require efibootmgr
|
|
||||||
# Without it grub-install is broken so break the package as well if unavailable
|
|
||||||
Group: System/Boot
|
Group: System/Boot
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
# Require efibootmgr
|
||||||
|
# Without it grub-install is broken so break the package as well if unavailable
|
||||||
Requires: efibootmgr
|
Requires: efibootmgr
|
||||||
Requires(post): efibootmgr
|
Requires(post): efibootmgr
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
@ -541,6 +551,9 @@ swap partition while in resuming
|
|||||||
%patch501 -p1
|
%patch501 -p1
|
||||||
%patch510 -p1
|
%patch510 -p1
|
||||||
%patch511 -p1
|
%patch511 -p1
|
||||||
|
%patch601 -p1
|
||||||
|
%patch602 -p1
|
||||||
|
%patch603 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# collect evidence to debug spurious build failure on SLE15
|
# collect evidence to debug spurious build failure on SLE15
|
||||||
|
46
risc-v-add-clzdi2-symbol.patch
Normal file
46
risc-v-add-clzdi2-symbol.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
From a57977b5faf800ac68f7dfe6b84138208c7e6072 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Schwab <schwab@suse.de>
|
||||||
|
Date: Thu, 19 Sep 2019 09:39:04 +0200
|
||||||
|
Subject: [PATCH] RISC-V: Add __clzdi2 symbol
|
||||||
|
|
||||||
|
This is needed for the zstd module build for riscv64-emu.
|
||||||
|
|
||||||
|
Signed-off-by: Andreas Schwab <schwab@suse.de>
|
||||||
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||||
|
---
|
||||||
|
configure.ac | 2 +-
|
||||||
|
include/grub/compiler-rt-emu.h | 5 +++++
|
||||||
|
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index e07ba4b56..7d74eba66 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -1370,7 +1370,7 @@ fi
|
||||||
|
|
||||||
|
# Check for libgcc symbols
|
||||||
|
if test x"$platform" = xemu; then
|
||||||
|
-AC_CHECK_FUNCS(__udivsi3 __umodsi3 __divsi3 __modsi3 __divdi3 __moddi3 __udivdi3 __umoddi3 __ctzdi2 __ctzsi2 __aeabi_uidiv __aeabi_uidivmod __aeabi_idiv __aeabi_idivmod __aeabi_ulcmp __muldi3 __aeabi_lmul __aeabi_memcpy __aeabi_memcpy4 __aeabi_memcpy8 __aeabi_memclr __aeabi_memclr4 __aeabi_memclr8 __aeabi_memset __aeabi_lasr __aeabi_llsl __aeabi_llsr _restgpr_14_x __ucmpdi2 __ashldi3 __ashrdi3 __lshrdi3 __bswapsi2 __bswapdi2 __bzero __register_frame_info __deregister_frame_info ___chkstk_ms __chkstk_ms)
|
||||||
|
+AC_CHECK_FUNCS(__udivsi3 __umodsi3 __divsi3 __modsi3 __divdi3 __moddi3 __udivdi3 __umoddi3 __ctzdi2 __ctzsi2 __clzdi2 __aeabi_uidiv __aeabi_uidivmod __aeabi_idiv __aeabi_idivmod __aeabi_ulcmp __muldi3 __aeabi_lmul __aeabi_memcpy __aeabi_memcpy4 __aeabi_memcpy8 __aeabi_memclr __aeabi_memclr4 __aeabi_memclr8 __aeabi_memset __aeabi_lasr __aeabi_llsl __aeabi_llsr _restgpr_14_x __ucmpdi2 __ashldi3 __ashrdi3 __lshrdi3 __bswapsi2 __bswapdi2 __bzero __register_frame_info __deregister_frame_info ___chkstk_ms __chkstk_ms)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$TARGET_APPLE_LINKER" = x1 ; then
|
||||||
|
diff --git a/include/grub/compiler-rt-emu.h b/include/grub/compiler-rt-emu.h
|
||||||
|
index b21425d9e..fde620ac1 100644
|
||||||
|
--- a/include/grub/compiler-rt-emu.h
|
||||||
|
+++ b/include/grub/compiler-rt-emu.h
|
||||||
|
@@ -74,6 +74,11 @@ unsigned
|
||||||
|
EXPORT_FUNC (__ctzsi2) (grub_uint32_t x);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifdef HAVE___CLZDI2
|
||||||
|
+int
|
||||||
|
+EXPORT_FUNC (__clzdi2) (grub_uint64_t x);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef HAVE___AEABI_UIDIV
|
||||||
|
grub_uint32_t
|
||||||
|
EXPORT_FUNC (__aeabi_uidiv) (grub_uint32_t a, grub_uint32_t b);
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
From 2bf40e9e5be9808b17852e688eead87acff14420 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Schwab <schwab@suse.de>
|
||||||
|
Date: Wed, 26 Jun 2019 16:50:03 +0200
|
||||||
|
Subject: [PATCH] RISC-V: Fix computation of pc-relative relocation offset
|
||||||
|
|
||||||
|
The offset calculation was missing the relocation addend.
|
||||||
|
|
||||||
|
Signed-off-by: Andreas Schwab <schwab@suse.de>
|
||||||
|
Tested-by: Chester Lin <clin@suse.com>
|
||||||
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||||
|
---
|
||||||
|
util/grub-mkimagexx.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
|
||||||
|
index bc087c2b5..d16ec63a1 100644
|
||||||
|
--- a/util/grub-mkimagexx.c
|
||||||
|
+++ b/util/grub-mkimagexx.c
|
||||||
|
@@ -1232,8 +1232,7 @@ SUFFIX (relocate_addrs) (Elf_Ehdr *e, struct section_metadata *smd,
|
||||||
|
grub_uint32_t *t32 = (grub_uint32_t *) target;
|
||||||
|
grub_uint16_t *t16 = (grub_uint16_t *) target;
|
||||||
|
grub_uint8_t *t8 = (grub_uint8_t *) target;
|
||||||
|
- grub_int64_t off = (long)sym_addr - target_section_addr - offset
|
||||||
|
- - image_target->vaddr_offset;
|
||||||
|
+ grub_int64_t off;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Instructions and instruction encoding are documented in the RISC-V
|
||||||
|
@@ -1243,6 +1242,7 @@ SUFFIX (relocate_addrs) (Elf_Ehdr *e, struct section_metadata *smd,
|
||||||
|
*/
|
||||||
|
|
||||||
|
sym_addr += addend;
|
||||||
|
+ off = sym_addr - target_section_addr - offset - image_target->vaddr_offset;
|
||||||
|
|
||||||
|
switch (ELF_R_TYPE (info))
|
||||||
|
{
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user