Hello community,
here is the log from the commit of package grub2 for openSUSE:Factory checked in at 2016-02-09 13:31:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/grub2 (Old)
and /work/SRC/openSUSE:Factory/.grub2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grub2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/grub2/grub2.changes 2016-01-28 17:18:45.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.grub2.new/grub2.changes 2016-02-09 13:31:03.000000000 +0100
@@ -1,0 +2,44 @@
+Fri Jan 29 03:54:15 UTC 2016 - mchang@suse.com
+
+- Add config option to set efi xen loader command line option (bsc#957383)
+ * added grub2-efi-xen-cmdline.patch
+
+-------------------------------------------------------------------
+Thu Jan 28 12:27:27 UTC 2016 - dvaleev@suse.com
+
+- Drop ppc64le patches. Build stage1 as BE for Power
+ Droped patches:
+ - grub2-ppc64le-01-Add-Little-Endian-support-for-Power64-to-the-build.patch
+ - grub2-ppc64le-02-Build-grub-as-O1-until-we-add-savegpr-and-restgpr-ro.patch
+ - grub2-ppc64le-03-disable-creation-of-vsx-and-altivec-instructions.patch
+ - grub2-ppc64le-04-powerpc64-LE-s-linker-knows-how-to-handle-the-undefi.patch
+ - grub2-ppc64le-05-grub-install-can-now-recognize-and-install-a-LE-grub.patch
+ - grub2-ppc64le-06-set-the-ABI-version-to-0x02-in-the-e_flag-of-the-PPC.patch
+ - grub2-ppc64le-07-Add-IEEE1275_ADDR-helper.patch
+ - grub2-ppc64le-08-Fix-some-more-warnings-when-casting.patch
+ - grub2-ppc64le-09-Add-powerpc64-types.patch
+ - grub2-ppc64le-10-powerpc64-is-not-necessarily-BigEndian-anymore.patch
+ - grub2-ppc64le-11-Fix-warnings-when-building-powerpc-linux-loader-64bi.patch
+ - grub2-ppc64le-12-GRUB_ELF_R_PPC_-processing-is-applicable-only-for-32.patch
+ - grub2-ppc64le-13-Fix-powerpc-setjmp-longjmp-64bit-issues.patch
+ - grub2-ppc64le-14-Add-powerpc64-ieee1275-trampoline.patch
+ - grub2-ppc64le-15-Add-64bit-support-to-powerpc-startup-code.patch
+ - grub2-ppc64le-16-Add-grub_dl_find_section_addr.patch
+ - grub2-ppc64le-17-Add-ppc64-relocations.patch
+ - grub2-ppc64le-18-ppc64-doesn-t-need-libgcc-routines.patch
+ - grub2-ppc64le-19-Use-FUNC_START-FUNC_END-for-powerpc-function-definit.patch
+ - grub2-ppc64le-20-.TOC.-symbol-is-special-in-ppc64le-.-It-maps-to-the-.patch
+ - grub2-ppc64le-21-the-.toc-section-in-powerpc64le-modules-are-sometime.patch
+ - grub2-ppc64le-22-all-parameter-to-firmware-calls-should-to-be-BigEndi.patch
+ - grub2-ppc64le-fix-64bit-trampoline-in-dyn-linker.patch
+ - grub2-ppc64le-timeout.patch
+ - grub2-ppc64-build-ppc64-32bit.patch
+- Added patches:
+ - biendian.patch
+ - grub2-ppc64-cas-reboot-support.patch
+ - libgcc-prereq.patch
+ - libgcc.patch
+ - ppc64_opt.patch
+ - ppc64le.patch
+
+-------------------------------------------------------------------
Old:
----
grub2-ppc64-build-ppc64-32bit.patch
grub2-ppc64le-01-Add-Little-Endian-support-for-Power64-to-the-build.patch
grub2-ppc64le-02-Build-grub-as-O1-until-we-add-savegpr-and-restgpr-ro.patch
grub2-ppc64le-03-disable-creation-of-vsx-and-altivec-instructions.patch
grub2-ppc64le-04-powerpc64-LE-s-linker-knows-how-to-handle-the-undefi.patch
grub2-ppc64le-05-grub-install-can-now-recognize-and-install-a-LE-grub.patch
grub2-ppc64le-06-set-the-ABI-version-to-0x02-in-the-e_flag-of-the-PPC.patch
grub2-ppc64le-07-Add-IEEE1275_ADDR-helper.patch
grub2-ppc64le-08-Fix-some-more-warnings-when-casting.patch
grub2-ppc64le-09-Add-powerpc64-types.patch
grub2-ppc64le-10-powerpc64-is-not-necessarily-BigEndian-anymore.patch
grub2-ppc64le-11-Fix-warnings-when-building-powerpc-linux-loader-64bi.patch
grub2-ppc64le-12-GRUB_ELF_R_PPC_-processing-is-applicable-only-for-32.patch
grub2-ppc64le-13-Fix-powerpc-setjmp-longjmp-64bit-issues.patch
grub2-ppc64le-14-Add-powerpc64-ieee1275-trampoline.patch
grub2-ppc64le-15-Add-64bit-support-to-powerpc-startup-code.patch
grub2-ppc64le-16-Add-grub_dl_find_section_addr.patch
grub2-ppc64le-17-Add-ppc64-relocations.patch
grub2-ppc64le-18-ppc64-doesn-t-need-libgcc-routines.patch
grub2-ppc64le-19-Use-FUNC_START-FUNC_END-for-powerpc-function-definit.patch
grub2-ppc64le-20-.TOC.-symbol-is-special-in-ppc64le-.-It-maps-to-the-.patch
grub2-ppc64le-21-the-.toc-section-in-powerpc64le-modules-are-sometime.patch
grub2-ppc64le-22-all-parameter-to-firmware-calls-should-to-be-BigEndi.patch
grub2-ppc64le-fix-64bit-trampoline-in-dyn-linker.patch
grub2-ppc64le-timeout.patch
New:
----
biendian.patch
grub2-efi-xen-cmdline.patch
grub2-ppc64-cas-reboot-support.patch
libgcc-prereq.patch
libgcc.patch
ppc64_opt.patch
ppc64le.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ grub2.spec ++++++
--- /var/tmp/diff_new_pack.9iDptR/_old 2016-02-09 13:31:05.000000000 +0100
+++ /var/tmp/diff_new_pack.9iDptR/_new 2016-02-09 13:31:05.000000000 +0100
@@ -186,8 +186,6 @@
Patch51: grub2-xen-legacy-config-device-name.patch
Patch52: grub2-getroot-support-NVMe-device-names.patch
Patch53: grub2-getroot-treat-mdadm-ddf-as-simple-device.patch
-Patch54: grub2-efi-xen-chainload.patch
-Patch55: grub2-efi-chainloader-root.patch
Patch56: grub2-setup-try-fs-embed-if-mbr-gap-too-small.patch
Patch57: grub2-netboot-hang.patch
Patch58: grub2-xen-linux16.patch
@@ -214,34 +212,17 @@
Patch104: grub2-btrfs-04-grub2-install.patch
Patch105: grub2-btrfs-05-grub2-mkconfig.patch
Patch106: grub2-btrfs-06-subvol-mount.patch
-# PowerPC LE support
-Patch201: grub2-ppc64le-01-Add-Little-Endian-support-for-Power64-to-the-build.patch
-Patch202: grub2-ppc64le-02-Build-grub-as-O1-until-we-add-savegpr-and-restgpr-ro.patch
-Patch203: grub2-ppc64le-03-disable-creation-of-vsx-and-altivec-instructions.patch
-Patch204: grub2-ppc64le-04-powerpc64-LE-s-linker-knows-how-to-handle-the-undefi.patch
-Patch205: grub2-ppc64le-05-grub-install-can-now-recognize-and-install-a-LE-grub.patch
-Patch206: grub2-ppc64le-06-set-the-ABI-version-to-0x02-in-the-e_flag-of-the-PPC.patch
-Patch207: grub2-ppc64le-07-Add-IEEE1275_ADDR-helper.patch
-Patch208: grub2-ppc64le-08-Fix-some-more-warnings-when-casting.patch
-Patch209: grub2-ppc64le-09-Add-powerpc64-types.patch
-Patch210: grub2-ppc64le-10-powerpc64-is-not-necessarily-BigEndian-anymore.patch
-Patch211: grub2-ppc64le-11-Fix-warnings-when-building-powerpc-linux-loader-64bi.patch
-Patch212: grub2-ppc64le-12-GRUB_ELF_R_PPC_-processing-is-applicable-only-for-32.patch
-Patch213: grub2-ppc64le-13-Fix-powerpc-setjmp-longjmp-64bit-issues.patch
-Patch214: grub2-ppc64le-14-Add-powerpc64-ieee1275-trampoline.patch
-Patch215: grub2-ppc64le-15-Add-64bit-support-to-powerpc-startup-code.patch
-Patch216: grub2-ppc64le-16-Add-grub_dl_find_section_addr.patch
-Patch217: grub2-ppc64le-17-Add-ppc64-relocations.patch
-Patch218: grub2-ppc64le-18-ppc64-doesn-t-need-libgcc-routines.patch
-Patch219: grub2-ppc64le-19-Use-FUNC_START-FUNC_END-for-powerpc-function-definit.patch
-Patch220: grub2-ppc64le-20-.TOC.-symbol-is-special-in-ppc64le-.-It-maps-to-the-.patch
-Patch221: grub2-ppc64le-21-the-.toc-section-in-powerpc64le-modules-are-sometime.patch
-Patch222: grub2-ppc64le-22-all-parameter-to-firmware-calls-should-to-be-BigEndi.patch
-Patch224: grub2-ppc64-build-ppc64-32bit.patch
-Patch225: grub2-ppc64-qemu.patch
-Patch226: grub2-ppc64le-timeout.patch
-Patch227: grub2-ppc64le-disable-video.patch
-Patch228: grub2-ppc64le-memory-map.patch
+# Support EFI xen loader
+Patch120: grub2-efi-xen-chainload.patch
+Patch121: grub2-efi-chainloader-root.patch
+Patch122: grub2-efi-xen-cmdline.patch
+# PPC64 LE support
+Patch201: ppc64le.patch
+Patch202: libgcc-prereq.patch
+Patch203: libgcc.patch
+Patch204: grub2-ppc64-qemu.patch
+Patch205: grub2-ppc64le-disable-video.patch
+Patch207: grub2-ppc64le-memory-map.patch
Patch229: grub2-xfs-Add-helper-for-inode-size.patch
Patch230: grub2-xfs-Fix-termination-loop-for-directory-iteration.patch
Patch231: grub2-xfs-Convert-inode-numbers-to-cpu-endianity-immediate.patch
@@ -250,7 +231,6 @@
Patch234: 0001-Add-bootargs-parser-for-open-firmware.patch
Patch235: 0002-Add-Virtual-LAN-support.patch
Patch236: grub2-efi_gop-avoid-low-resolution.patch
-Patch237: grub2-ppc64le-fix-64bit-trampoline-in-dyn-linker.patch
Patch238: grub2-arm64-Reduce-timer-event-frequency-by-10.patch
Patch239: grub2-arm64-set-correct-length.patch
Patch240: grub2-arm64-setjmp-Add-missing-license-macro.patch
@@ -269,6 +249,9 @@
Patch272: 0003-acpi-do-not-skip-BIOS-scan-if-EBDA-length-is-zero.patch
Patch273: 0004-tsc-Use-alternative-delay-sources-whenever-appropria.patch
Patch274: 0005-i386-fix-TSC-calibration-using-PIT.patch
+Patch275: biendian.patch
+Patch276: ppc64_opt.patch
+Patch277: grub2-ppc64-cas-reboot-support.patch
Requires: gettext-runtime
%if 0%{?suse_version} >= 1140
@@ -469,8 +452,6 @@
%patch51 -p1
%patch52 -p1
%patch53 -p1
-%patch54 -p1
-%patch55 -p1
%patch56 -p1
%patch57 -p1
%patch58 -p1
@@ -495,33 +476,15 @@
%patch104 -p1
%patch105 -p1
%patch106 -p1
+%patch120 -p1
+%patch121 -p1
+%patch122 -p1
%patch201 -p1
%patch202 -p1
%patch203 -p1
%patch204 -p1
%patch205 -p1
-%patch206 -p1
%patch207 -p1
-%patch208 -p1
-%patch209 -p1
-%patch210 -p1
-%patch211 -p1
-%patch212 -p1
-%patch213 -p1
-%patch214 -p1
-%patch215 -p1
-%patch216 -p1
-%patch217 -p1
-%patch218 -p1
-%patch219 -p1
-%patch220 -p1
-%patch221 -p1
-%patch222 -p1
-%patch224 -p1
-%patch225 -p1
-%patch226 -p1
-%patch227 -p1
-%patch228 -p1
%patch229 -p1
%patch230 -p1
%patch231 -p1
@@ -530,7 +493,6 @@
%patch234 -p1
%patch235 -p1
%patch236 -p1
-%patch237 -p1
%patch238 -p1
%patch239 -p1
%patch240 -p1
@@ -546,6 +508,9 @@
%patch272 -p1
%patch273 -p1
%patch274 -p1
+%patch275 -p1
+%patch276 -p1
+%patch277 -p1
# Generate po/LINGUAS for message catalogs ...
./linguas.sh
++++++ biendian.patch ++++++
From 9facac630985467ee1ad40beaed07d50ee18062c Mon Sep 17 00:00:00 2001
From: Paulo Flabiano Smorigo
Date: Fri, 15 Aug 2014 14:39:53 -0300
Subject: [PATCH 143/143] Suport for bi-endianess in elf file
* grub-core/kern/elf.c: check and switch endianess with grub_{be,le}_to
cpu functions.
* grub-core/kern/elfXX.c: Likewise.
Also-by: Tomohiro B Berry
---
grub-core/kern/elf.c | 60 +++++++++++++++++++++++++++++++++++++++--
grub-core/kern/elfXX.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 131 insertions(+), 2 deletions(-)
diff --git a/grub-core/kern/elf.c b/grub-core/kern/elf.c
index 5f99c43..de90811 100644
--- a/grub-core/kern/elf.c
+++ b/grub-core/kern/elf.c
@@ -28,6 +28,11 @@
GRUB_MOD_LICENSE ("GPLv3+");
+void grub_elf32_check_endianess (grub_elf_t elf);
+void grub_elf64_check_endianess (grub_elf_t elf);
+grub_err_t grub_elf32_check_version (grub_elf_t elf);
+grub_err_t grub_elf64_check_version (grub_elf_t elf);
+
/* Check if EHDR is a valid ELF header. */
static grub_err_t
grub_elf_check_header (grub_elf_t elf)
@@ -38,10 +43,22 @@ grub_elf_check_header (grub_elf_t elf)
|| e->e_ident[EI_MAG1] != ELFMAG1
|| e->e_ident[EI_MAG2] != ELFMAG2
|| e->e_ident[EI_MAG3] != ELFMAG3
- || e->e_ident[EI_VERSION] != EV_CURRENT
- || e->e_version != EV_CURRENT)
+ || e->e_ident[EI_VERSION] != EV_CURRENT)
return grub_error (GRUB_ERR_BAD_OS, N_("invalid arch-independent ELF magic"));
+ if (grub_elf_is_elf32 (elf))
+ {
+ grub_elf32_check_endianess (elf);
+ grub_elf32_check_version (elf);
+ }
+ else if (grub_elf_is_elf64 (elf))
+ {
+ grub_elf64_check_endianess (elf);
+ grub_elf64_check_version (elf);
+ }
+ else
+ return grub_error (GRUB_ERR_BAD_OS, N_("invalid arch-dependent ELF magic"));
+
return GRUB_ERR_NONE;
}
@@ -127,7 +144,20 @@ grub_elf_open (const char *name)
#define grub_elf_is_elfXX grub_elf_is_elf32
#define grub_elfXX_load_phdrs grub_elf32_load_phdrs
#define ElfXX_Phdr Elf32_Phdr
+#define ElfXX_Ehdr Elf32_Ehdr
#define grub_uintXX_t grub_uint32_t
+#define grub_be_to_halfXX grub_be_to_cpu16
+#define grub_be_to_wordXX grub_be_to_cpu32
+#define grub_be_to_addrXX grub_be_to_cpu32
+#define grub_be_to_offXX grub_be_to_cpu32
+#define grub_be_to_XwordXX grub_be_to_wordXX
+#define grub_le_to_halfXX grub_le_to_cpu16
+#define grub_le_to_wordXX grub_le_to_cpu32
+#define grub_le_to_addrXX grub_le_to_cpu32
+#define grub_le_to_offXX grub_le_to_cpu32
+#define grub_le_to_XwordXX grub_le_to_wordXX
+#define grub_elfXX_check_endianess grub_elf32_check_endianess
+#define grub_elfXX_check_version grub_elf32_check_version
#include "elfXX.c"
@@ -140,7 +170,20 @@ grub_elf_open (const char *name)
#undef grub_elf_is_elfXX
#undef grub_elfXX_load_phdrs
#undef ElfXX_Phdr
+#undef ElfXX_Ehdr
#undef grub_uintXX_t
+#undef grub_be_to_halfXX
+#undef grub_be_to_wordXX
+#undef grub_be_to_addrXX
+#undef grub_be_to_offXX
+#undef grub_be_to_XwordXX
+#undef grub_le_to_halfXX
+#undef grub_le_to_wordXX
+#undef grub_le_to_addrXX
+#undef grub_le_to_offXX
+#undef grub_le_to_XwordXX
+#undef grub_elfXX_check_endianess
+#undef grub_elfXX_check_version
/* 64-bit */
@@ -153,6 +196,19 @@ grub_elf_open (const char *name)
#define grub_elf_is_elfXX grub_elf_is_elf64
#define grub_elfXX_load_phdrs grub_elf64_load_phdrs
#define ElfXX_Phdr Elf64_Phdr
+#define ElfXX_Ehdr Elf64_Ehdr
#define grub_uintXX_t grub_uint64_t
+#define grub_be_to_halfXX grub_be_to_cpu16
+#define grub_be_to_wordXX grub_be_to_cpu32
+#define grub_be_to_addrXX grub_be_to_cpu64
+#define grub_be_to_offXX grub_be_to_cpu64
+#define grub_be_to_XwordXX grub_be_to_cpu64
+#define grub_le_to_halfXX grub_le_to_cpu16
+#define grub_le_to_wordXX grub_le_to_cpu32
+#define grub_le_to_addrXX grub_le_to_cpu64
+#define grub_le_to_offXX grub_le_to_cpu64
+#define grub_le_to_XwordXX grub_le_to_cpu64
+#define grub_elfXX_check_endianess grub_elf64_check_endianess
+#define grub_elfXX_check_version grub_elf64_check_version
#include "elfXX.c"
diff --git a/grub-core/kern/elfXX.c b/grub-core/kern/elfXX.c
index 1d09971..ecf9df6 100644
--- a/grub-core/kern/elfXX.c
+++ b/grub-core/kern/elfXX.c
@@ -154,3 +154,76 @@ grub_elfXX_load (grub_elf_t elf, const char *filename,
return grub_errno;
}
+
+void
+grub_elfXX_check_endianess (grub_elf_t elf)
+{
+ ElfXX_Ehdr *e = &(elf->ehdr.ehdrXX);
+ ElfXX_Phdr *phdr;
+
+ if (e->e_ident[EI_DATA] == ELFDATA2MSB)
+ {
+ e->e_type = grub_be_to_halfXX (e->e_type);
+ e->e_machine = grub_be_to_halfXX (e->e_machine);
+ e->e_version = grub_be_to_wordXX (e->e_version);
+ e->e_entry = grub_be_to_addrXX (e->e_entry);
+ e->e_phoff = grub_be_to_offXX (e->e_phoff);
+ e->e_shoff = grub_be_to_offXX (e->e_shoff);
+ e->e_flags = grub_be_to_wordXX (e->e_flags);
+ e->e_ehsize = grub_be_to_halfXX (e->e_ehsize);
+ e->e_phentsize = grub_be_to_halfXX (e->e_phentsize);
+ e->e_phnum = grub_be_to_halfXX (e->e_phnum);
+ e->e_shentsize = grub_be_to_halfXX (e->e_shentsize);
+ e->e_shnum = grub_be_to_halfXX (e->e_shnum);
+ e->e_shstrndx = grub_be_to_halfXX (e->e_shstrndx);
+
+ FOR_ELFXX_PHDRS (elf,phdr)
+ {
+ phdr->p_type = grub_be_to_wordXX (phdr->p_type);
+ phdr->p_flags = grub_be_to_wordXX (phdr->p_flags);
+ phdr->p_offset = grub_be_to_offXX (phdr->p_offset);
+ phdr->p_vaddr = grub_be_to_addrXX (phdr->p_vaddr);
+ phdr->p_paddr = grub_be_to_addrXX (phdr->p_paddr);
+ phdr->p_filesz = grub_be_to_XwordXX (phdr->p_filesz);
+ phdr->p_memsz = grub_be_to_XwordXX (phdr->p_memsz);
+ phdr->p_align = grub_be_to_XwordXX (phdr->p_align);
+ }
+ }
+ else if (e->e_ident[EI_DATA] == ELFDATA2LSB)
+ {
+ e->e_type = grub_le_to_halfXX (e->e_type);
+ e->e_machine = grub_le_to_halfXX (e->e_machine);
+ e->e_version = grub_le_to_wordXX (e->e_version);
+ e->e_entry = grub_le_to_addrXX (e->e_entry);
+ e->e_phoff = grub_le_to_offXX (e->e_phoff);
+ e->e_shoff = grub_le_to_offXX (e->e_shoff);
+ e->e_flags = grub_le_to_wordXX (e->e_flags);
+ e->e_ehsize = grub_le_to_halfXX (e->e_ehsize);
+ e->e_phentsize = grub_le_to_halfXX (e->e_phentsize);
+ e->e_phnum = grub_le_to_halfXX (e->e_phnum);
+ e->e_shentsize = grub_le_to_halfXX (e->e_shentsize);
+ e->e_shnum = grub_le_to_halfXX (e->e_shnum);
+ e->e_shstrndx = grub_le_to_halfXX (e->e_shstrndx);
+
+ FOR_ELFXX_PHDRS (elf,phdr)
+ {
+ phdr->p_type = grub_le_to_wordXX (phdr->p_type);
+ phdr->p_flags = grub_le_to_wordXX (phdr->p_flags);
+ phdr->p_offset = grub_le_to_offXX (phdr->p_offset);
+ phdr->p_vaddr = grub_le_to_addrXX (phdr->p_vaddr);
+ phdr->p_paddr = grub_le_to_addrXX (phdr->p_paddr);
+ phdr->p_filesz = grub_le_to_XwordXX (phdr->p_filesz);
+ phdr->p_memsz = grub_le_to_XwordXX (phdr->p_memsz);
+ phdr->p_align = grub_le_to_XwordXX (phdr->p_align);
+ }
+ }
+}
+
+grub_err_t
+grub_elfXX_check_version (grub_elf_t elf)
+{
+ if (elf->ehdr.ehdrXX.e_version != EV_CURRENT)
+ return grub_error (GRUB_ERR_BAD_OS, N_("invalid arch-independent ELF magic"));
+
+ return GRUB_ERR_NONE;
+}
--
1.9.3
++++++ grub2-efi-xen-chainload.patch ++++++
--- /var/tmp/diff_new_pack.9iDptR/_old 2016-02-09 13:31:05.000000000 +0100
+++ /var/tmp/diff_new_pack.9iDptR/_new 2016-02-09 13:31:05.000000000 +0100
@@ -50,7 +50,7 @@
fi
# loop-AES arranges things so that /dev/loop/X can be our root device, but
-@@ -81,6 +85,31 @@ esac
+@@ -85,6 +89,31 @@ esac
title_correction_code=
@@ -82,7 +82,7 @@
linux_entry ()
{
os="$1"
-@@ -118,6 +147,40 @@ linux_entry ()
+@@ -122,6 +151,40 @@ linux_entry ()
save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/"
fi
@@ -123,7 +123,7 @@
if [ -z "${prepare_boot_cache}" ]; then
prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
fi
-@@ -225,6 +288,24 @@ while [ "x${xen_list}" != "x" ] ; do
+@@ -219,6 +282,24 @@ while [ "x${xen_list}" != "x" ] ; do
xen_dirname=`dirname ${current_xen}`
rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
xen_version=`echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g"`
@@ -148,7 +148,7 @@
if [ -z "$boot_device_id" ]; then
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
fi
-@@ -289,7 +370,6 @@ while [ "x${xen_list}" != "x" ] ; do
+@@ -283,7 +364,6 @@ while [ "x${xen_list}" != "x" ] ; do
if [ x"$is_top_level" != xtrue ]; then
echo ' }'
fi
@@ -156,7 +156,7 @@
done
# If at least one kernel was found, then we need to
-@@ -299,3 +379,7 @@ if [ x"$is_top_level" != xtrue ]; then
+@@ -293,3 +373,7 @@ if [ x"$is_top_level" != xtrue ]; then
fi
echo "$title_correction_code"
++++++ grub2-efi-xen-cmdline.patch ++++++
Index: grub-2.02~beta2/util/grub-mkconfig.in
===================================================================
--- grub-2.02~beta2.orig/util/grub-mkconfig.in
+++ grub-2.02~beta2/util/grub-mkconfig.in
@@ -260,7 +260,8 @@ export GRUB_DEFAULT \
GRUB_DISABLE_SUBMENU \
GRUB_CMDLINE_LINUX_RECOVERY \
GRUB_USE_LINUXEFI \
- SUSE_BTRFS_SNAPSHOT_BOOTING
+ SUSE_BTRFS_SNAPSHOT_BOOTING \
+ SUSE_CMDLINE_XENEFI
if test "x${grub_cfg}" != "x"; then
rm -f "${grub_cfg}.new"
Index: grub-2.02~beta2/util/grub.d/20_linux_xen.in
===================================================================
--- grub-2.02~beta2.orig/util/grub.d/20_linux_xen.in
+++ grub-2.02~beta2/util/grub.d/20_linux_xen.in
@@ -176,7 +176,7 @@ linux_entry ()
message="$(gettext_printf "Loading Xen %s with Linux %s ..." ${xen_version} ${version})"
sed "s/^/$submenu_indentation/" <<-EOF
echo '$(echo "$message" | grub_quote)'
- chainloader \$cmdpath/${xen_basename} ${xen_basename} $section
+ chainloader \$cmdpath/${xen_basename} ${xen_basename} ${SUSE_CMDLINE_XENEFI} $section
}
EOF
for f in ${grub_dir}/$xen_cfg ${xen_dir}/${xen_basename} ${dirname}/${basename} ${dirname}/${initrd}; do
++++++ grub2-ppc64-cas-reboot-support.patch ++++++
From 9d1411ffa7290c1cbdc9ee95bb5fcc5506e63e0f Mon Sep 17 00:00:00 2001
From: Paulo Flabiano Smorigo
Date: Thu, 20 Sep 2012 18:07:39 -0300
Subject: [PATCH 096/152] IBM client architecture (CAS) reboot support
This is an implementation of IBM client architecture (CAS) reboot for GRUB.
There are cases where the POWER firmware must reboot in order to support
specific features requested by a kernel. The kernel calls
ibm,client-architecture-support and it may either return or reboot with the new
feature set. eg:
Calling ibm,client-architecture-support.../
Elapsed time since release of system processors: 70959 mins 50 secs
Welcome to GRUB!
Instead of return to the GRUB menu, it will check if the flag for CAS reboot is
set. If so, grub will automatically boot the last booted kernel using the same
parameters
---
grub-core/kern/ieee1275/openfw.c | 62 ++++++++++++++++++++++++++++++++++++++++
grub-core/normal/main.c | 19 ++++++++++++
grub-core/script/execute.c | 7 +++++
include/grub/ieee1275/ieee1275.h | 2 ++
4 files changed, 90 insertions(+)
Index: grub-2.02~beta2/grub-core/kern/ieee1275/openfw.c
===================================================================
--- grub-2.02~beta2.orig/grub-core/kern/ieee1275/openfw.c
+++ grub-2.02~beta2/grub-core/kern/ieee1275/openfw.c
@@ -561,3 +561,65 @@ grub_ieee1275_canonicalise_devname (cons
return NULL;
}
+/* Check if it's a CAS reboot. If so, set the script to be executed. */
+int
+grub_ieee1275_cas_reboot (char *script)
+{
+ grub_uint32_t ibm_ca_support_reboot;
+ grub_uint32_t ibm_fw_nbr_reboots;
+ char property_value[10];
+ grub_ssize_t actual;
+ grub_ieee1275_ihandle_t options;
+
+ if (grub_ieee1275_finddevice ("/options", &options) < 0)
+ return -1;
+
+ /* Check two properties, one is enough to get cas reboot value */
+ ibm_ca_support_reboot = 0;
+ if (grub_ieee1275_get_integer_property (grub_ieee1275_chosen,
+ "ibm,client-architecture-support-reboot",
+ &ibm_ca_support_reboot,
+ sizeof (ibm_ca_support_reboot),
+ &actual) >= 0)
+ grub_dprintf("ieee1275", "ibm,client-architecture-support-reboot: %u\n",
+ ibm_ca_support_reboot);
+
+ ibm_fw_nbr_reboots = 0;
+ if (grub_ieee1275_get_property (options, "ibm,fw-nbr-reboots",
+ property_value, sizeof (property_value),
+ &actual) >= 0)
+ {
+ property_value[sizeof (property_value) - 1] = 0;
+ ibm_fw_nbr_reboots = (grub_uint8_t) grub_strtoul (property_value, 0, 10);
+ grub_dprintf("ieee1275", "ibm,fw-nbr-reboots: %u\n", ibm_fw_nbr_reboots);
+ }
+
+ if (ibm_ca_support_reboot || ibm_fw_nbr_reboots)
+ {
+ if (! grub_ieee1275_get_property_length (options, "boot-last-label", &actual))
+ {
+ if (actual > 1024)
+ script = grub_realloc (script, actual + 1);
+ grub_ieee1275_get_property (options, "boot-last-label", script, actual,
+ &actual);
+ return 0;
+ }
+ }
+
+ grub_ieee1275_set_boot_last_label ("");
+
+ return -1;
+}
+
+int grub_ieee1275_set_boot_last_label (const char *text)
+{
+ grub_ieee1275_ihandle_t options;
+ grub_ssize_t actual;
+
+ grub_dprintf("ieee1275", "set boot_last_label (size: %" PRIxGRUB_SIZE ")\n", grub_strlen(text));
+ if (! grub_ieee1275_finddevice ("/options", &options) &&
+ options != (grub_ieee1275_ihandle_t) -1)
+ grub_ieee1275_set_property (options, "boot-last-label", text,
+ grub_strlen (text), &actual);
+ return 0;
+}
Index: grub-2.02~beta2/grub-core/normal/main.c
===================================================================
--- grub-2.02~beta2.orig/grub-core/normal/main.c
+++ grub-2.02~beta2/grub-core/normal/main.c
@@ -32,6 +32,9 @@
#include
#include
#include
+#ifdef GRUB_MACHINE_IEEE1275
+#include
+#endif
GRUB_MOD_LICENSE ("GPLv3+");
@@ -267,6 +270,21 @@ grub_normal_execute (const char *config,
{
menu = read_config_file (config);
+#ifdef GRUB_MACHINE_IEEE1275
+ int boot;
+ boot = 0;
+ char *script;
+ script = grub_malloc (1024);
+ if (! grub_ieee1275_cas_reboot (script))
+ {
+ if (! grub_script_execute_sourcecode (script))
+ boot = 1;
+ }
+ grub_free (script);
+ if (boot)
+ grub_command_execute ("boot", 0, 0);
+#endif
+
/* Ignore any error. */
grub_errno = GRUB_ERR_NONE;
}
Index: grub-2.02~beta2/grub-core/script/execute.c
===================================================================
--- grub-2.02~beta2.orig/grub-core/script/execute.c
+++ grub-2.02~beta2/grub-core/script/execute.c
@@ -27,6 +27,9 @@
#include
#include
#include
+#ifdef GRUB_MACHINE_IEEE1275
+#include
+#endif
/* Max digits for a char is 3 (0xFF is 255), similarly for an int it
is sizeof (int) * 3, and one extra for a possible -ve sign. */
@@ -861,6 +864,10 @@ grub_script_execute_sourcecode (const ch
grub_err_t ret = 0;
struct grub_script *parsed_script;
+#ifdef GRUB_MACHINE_IEEE1275
+ grub_ieee1275_set_boot_last_label (source);
+#endif
+
while (source)
{
char *line;
Index: grub-2.02~beta2/include/grub/ieee1275/ieee1275.h
===================================================================
--- grub-2.02~beta2.orig/include/grub/ieee1275/ieee1275.h
+++ grub-2.02~beta2/include/grub/ieee1275/ieee1275.h
@@ -234,6 +234,8 @@ int EXPORT_FUNC(grub_ieee1275_devalias_n
void EXPORT_FUNC(grub_ieee1275_children_peer) (struct grub_ieee1275_devalias *alias);
void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath,
struct grub_ieee1275_devalias *alias);
+int EXPORT_FUNC(grub_ieee1275_cas_reboot) (char *script);
+int EXPORT_FUNC(grub_ieee1275_set_boot_last_label) (const char *text);
#define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));)
++++++ grub2-ppc64le-disable-video.patch ++++++
--- /var/tmp/diff_new_pack.9iDptR/_old 2016-02-09 13:31:05.000000000 +0100
+++ /var/tmp/diff_new_pack.9iDptR/_new 2016-02-09 13:31:05.000000000 +0100
@@ -38,7 +38,7 @@
===================================================================
--- grub-2.02~beta2.orig/include/grub/ieee1275/ieee1275.h
+++ grub-2.02~beta2/include/grub/ieee1275/ieee1275.h
-@@ -147,6 +147,8 @@ enum grub_ieee1275_flag
+@@ -145,6 +145,8 @@ enum grub_ieee1275_flag
GRUB_IEEE1275_FLAG_BROKEN_REPEAT,
GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN,
++++++ grub2-ppc64le-memory-map.patch ++++++
--- /var/tmp/diff_new_pack.9iDptR/_old 2016-02-09 13:31:05.000000000 +0100
+++ /var/tmp/diff_new_pack.9iDptR/_new 2016-02-09 13:31:05.000000000 +0100
@@ -3,7 +3,7 @@
--- grub-2.02~beta2.orig/grub-core/kern/ieee1275/openfw.c
+++ grub-2.02~beta2/grub-core/kern/ieee1275/openfw.c
@@ -302,6 +302,34 @@ grub_ieee1275_map (grub_addr_t phys, gru
- return IEEE1275_VALUE(args.catch_result);
+ return args.catch_result;
}
+/* Preallocate IEEE1275_MAX_MAP_RESOURCE map tracks to track the
@@ -62,7 +62,7 @@
#define IEEE1275_MAX_PROP_LEN 8192
#define IEEE1275_MAX_PATH_LEN 256
-@@ -216,6 +222,7 @@ int EXPORT_FUNC(grub_ieee1275_millisecon
+@@ -214,6 +220,7 @@ int EXPORT_FUNC(grub_ieee1275_millisecon
grub_err_t EXPORT_FUNC(grub_claimmap) (grub_addr_t addr, grub_size_t size);
++++++ libgcc-prereq.patch ++++++
From f371dd5da81701f7bc3d28c67cb4c2c289728691 Mon Sep 17 00:00:00 2001
From: Andrey Borzenkov
Date: Sat, 18 Jan 2014 21:22:57 +0400
Subject: [PATCH] fix include loop on MinGW due to libintl.h pulling stdio.h
In file included from ./include/grub/dl.h:23:0,
from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3:
./include/grub/list.h:34:18: warning: conflicting types for 'grub_list_push' [en
abled by default]
void EXPORT_FUNC(grub_list_push) (grub_list_t *head, grub_list_t item);
^
./include/grub/symbol.h:68:25: note: in definition of macro 'EXPORT_FUNC'
# define EXPORT_FUNC(x) x
^
In file included from ./include/grub/fs.h:30:0,
from ./include/grub/file.h:25,
from ./grub-core/lib/posix_wrap/stdio.h:23,
from c:\mingw\include\libintl.h:314,
from ./include/grub/i18n.h:33,
from ./include/grub/misc.h:27,
from ./include/grub/list.h:25,
from ./include/grub/dl.h:28,
from grub-core/lib/libgcrypt-grub/cipher/rfc2268.c:3:
./include/grub/partition.h:106:3: note: previous implicit declaration of 'grub_l
ist_push' was here
grub_list_push (GRUB_AS_LIST_P (&grub_partition_map_list),
^
list.h needs just ATTRIBUTE_ERROR from misc.h; split compiler features
into separate file grub/compiler.h and include it instead.
---
ChangeLog | 14 +++++++++++
grub-core/commands/fileXX.c | 1 +
grub-core/efiemu/prepare.c | 1 +
grub-core/loader/i386/xen_file.c | 1 +
grub-core/loader/i386/xen_fileXX.c | 1 +
grub-core/video/capture.c | 1 +
include/grub/command.h | 1 +
include/grub/compiler.h | 51 ++++++++++++++++++++++++++++++++++++++
include/grub/dl.h | 1 +
include/grub/list.h | 4 +--
include/grub/misc.h | 29 +---------------------
include/grub/procfs.h | 1 +
12 files changed, 76 insertions(+), 30 deletions(-)
create mode 100644 include/grub/compiler.h
diff --git a/grub-core/commands/fileXX.c b/grub-core/commands/fileXX.c
index c9857ff..58e1094 100644
--- a/grub-core/commands/fileXX.c
+++ b/grub-core/commands/fileXX.c
@@ -18,6 +18,7 @@
#include
#include
+#include
#pragma GCC diagnostic ignored "-Wcast-align"
diff --git a/grub-core/efiemu/prepare.c b/grub-core/efiemu/prepare.c
index fb1b25d..84c3368 100644
--- a/grub-core/efiemu/prepare.c
+++ b/grub-core/efiemu/prepare.c
@@ -21,6 +21,7 @@
#include
#include
#include
+#include
#include
#include
diff --git a/grub-core/loader/i386/xen_file.c b/grub-core/loader/i386/xen_file.c
index ebbf6aa..ff23235 100644
--- a/grub-core/loader/i386/xen_file.c
+++ b/grub-core/loader/i386/xen_file.c
@@ -18,6 +18,7 @@
#include
#include
+#include
grub_elf_t
grub_xen_file (grub_file_t file)
diff --git a/grub-core/loader/i386/xen_fileXX.c b/grub-core/loader/i386/xen_fileXX.c
index 6df0015..73a5f90 100644
--- a/grub-core/loader/i386/xen_fileXX.c
+++ b/grub-core/loader/i386/xen_fileXX.c
@@ -17,6 +17,7 @@
*/
#include
+#include
static grub_err_t
parse_xen_guest (grub_elf_t elf, struct grub_xen_file_info *xi,
diff --git a/grub-core/video/capture.c b/grub-core/video/capture.c
index 67c8edd..4f83c74 100644
--- a/grub-core/video/capture.c
+++ b/grub-core/video/capture.c
@@ -4,6 +4,7 @@
#include
#include
#include
+#include
static struct
{
diff --git a/include/grub/command.h b/include/grub/command.h
index 8705a63..eee4e84 100644
--- a/include/grub/command.h
+++ b/include/grub/command.h
@@ -22,6 +22,7 @@
#include
#include
#include
+#include
typedef enum grub_command_flags
{
diff --git a/include/grub/compiler.h b/include/grub/compiler.h
new file mode 100644
index 0000000..c9e1d7a
--- /dev/null
+++ b/include/grub/compiler.h
@@ -0,0 +1,51 @@
+/* compiler.h - macros for various compiler features */
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2002,2003,2005,2006,2007,2008,2009,2010,2014 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/.
+ */
+
+#ifndef GRUB_COMPILER_HEADER
+#define GRUB_COMPILER_HEADER 1
+
+/* GCC version checking borrowed from glibc. */
+#if defined(__GNUC__) && defined(__GNUC_MINOR__)
+# define GNUC_PREREQ(maj,min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+# define GNUC_PREREQ(maj,min) 0
+#endif
+
+/* Does this compiler support compile-time error attributes? */
+#if GNUC_PREREQ(4,3)
+# define ATTRIBUTE_ERROR(msg) \
+ __attribute__ ((__error__ (msg)))
+#else
+# define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn))
+#endif
+
+#if GNUC_PREREQ(4,4)
+# define GNU_PRINTF gnu_printf
+#else
+# define GNU_PRINTF printf
+#endif
+
+#if GNUC_PREREQ(3,4)
+# define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
+#else
+# define WARN_UNUSED_RESULT
+#endif
+
+#endif /* ! GRUB_COMPILER_HEADER */
diff --git a/include/grub/dl.h b/include/grub/dl.h
index d29a899..9562fa6 100644
--- a/include/grub/dl.h
+++ b/include/grub/dl.h
@@ -26,6 +26,7 @@
#include
#include
#include
+#include
#endif
/*
diff --git a/include/grub/list.h b/include/grub/list.h
index edd20ad..d170ff6 100644
--- a/include/grub/list.h
+++ b/include/grub/list.h
@@ -21,8 +21,8 @@
#define GRUB_LIST_HEADER 1
#include
-#include
-#include
+#include
+#include
struct grub_list
{
diff --git a/include/grub/misc.h b/include/grub/misc.h
index 2cf74b5..c6cd456 100644
--- a/include/grub/misc.h
+++ b/include/grub/misc.h
@@ -25,34 +25,7 @@
#include
#include
#include
-
-/* GCC version checking borrowed from glibc. */
-#if defined(__GNUC__) && defined(__GNUC_MINOR__)
-# define GNUC_PREREQ(maj,min) \
- ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-#else
-# define GNUC_PREREQ(maj,min) 0
-#endif
-
-/* Does this compiler support compile-time error attributes? */
-#if GNUC_PREREQ(4,3)
-# define ATTRIBUTE_ERROR(msg) \
- __attribute__ ((__error__ (msg)))
-#else
-# define ATTRIBUTE_ERROR(msg) __attribute__ ((noreturn))
-#endif
-
-#if GNUC_PREREQ(4,4)
-# define GNU_PRINTF gnu_printf
-#else
-# define GNU_PRINTF printf
-#endif
-
-#if GNUC_PREREQ(3,4)
-# define WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
-#else
-# define WARN_UNUSED_RESULT
-#endif
+#include
#define ALIGN_UP(addr, align) \
((addr + (typeof (addr)) align - 1) & ~((typeof (addr)) align - 1))
diff --git a/include/grub/procfs.h b/include/grub/procfs.h
index d393da7..8cc331d 100644
--- a/include/grub/procfs.h
+++ b/include/grub/procfs.h
@@ -20,6 +20,7 @@
#define GRUB_PROCFS_HEADER 1
#include
+#include
struct grub_procfs_entry
{
--
2.1.4
++++++ libgcc.patch ++++++
From: Paulo Flabiano Smorigo
Date: Wed, 13 Aug 2014 19:00:19 +0000
Subject: [PATCH 142/143] Files reorganization and include some libgcc fuctions
As we avoid libgcc dependency for powerpc64el, we moved some functions
to other files and add the necessary ones.
* Makefile.core.def: Include compiler-rt.S.
* misc.c: Add the necessary libgcc functions.
* compiler-rt.S: New file.
* libgcc.h: Move some content from here ...
* compiler.h: ... to here.
Also-By: Brent Baude
Also-By: Vladimir 'phcoder' Serbinenko
---
grub-core/Makefile.core.def | 1 +
grub-core/kern/misc.c | 107 ++++++++++++++++++++++++++++
grub-core/kern/powerpc/compiler-rt.S | 130 +++++++++++++++++++++++++++++++++++
include/grub/compiler.h | 61 ++++++++++++++++
include/grub/libgcc.h | 67 ------------------
5 files changed, 299 insertions(+), 67 deletions(-)
create mode 100644 grub-core/kern/powerpc/compiler-rt.S
Index: grub-2.02~beta2/grub-core/Makefile.core.def
===================================================================
--- grub-2.02~beta2.orig/grub-core/Makefile.core.def
+++ grub-2.02~beta2/grub-core/Makefile.core.def
@@ -252,6 +252,7 @@ kernel = {
powerpc_ieee1275 = kern/powerpc/cache.S;
powerpc_ieee1275 = kern/powerpc/dl.c;
+ powerpc_ieee1275 = kern/powerpc/compiler-rt.S;
sparc64_ieee1275 = kern/sparc64/cache.S;
sparc64_ieee1275 = kern/sparc64/dl.c;
Index: grub-2.02~beta2/grub-core/kern/misc.c
===================================================================
--- grub-2.02~beta2.orig/grub-core/kern/misc.c
+++ grub-2.02~beta2/grub-core/kern/misc.c
@@ -1339,3 +1339,110 @@ grub_real_boot_time (const char *file,
grub_error_pop ();
}
#endif
+
+#if defined (NO_LIBGCC)
+
+/* Based on libgcc2.c from gcc suite. */
+int
+__ucmpdi2 (grub_uint64_t a, grub_uint64_t b)
+{
+ union component64 ac, bc;
+ ac.full = a;
+ bc.full = b;
+
+ if (ac.high < bc.high)
+ return 0;
+ else if (ac.high > bc.high)
+ return 2;
+
+ if (ac.low < bc.low)
+ return 0;
+ else if (ac.low > bc.low)
+ return 2;
+ return 1;
+}
+
+
+/* Based on libgcc2.c from gcc suite. */
+grub_uint64_t
+__lshrdi3 (grub_uint64_t u, int b)
+{
+ if (b == 0)
+ return u;
+
+ const union component64 uu = {.full = u};
+ const int bm = 32 - b;
+ union component64 w;
+
+ if (bm <= 0)
+ {
+ w.high = 0;
+ w.low = (grub_uint32_t) uu.high >> -bm;
+ }
+ else
+ {
+ const grub_uint32_t carries = (grub_uint32_t) uu.high << bm;
+
+ w.high = (grub_uint32_t) uu.high >> b;
+ w.low = ((grub_uint32_t) uu.low >> b) | carries;
+ }
+
+ return w.full;
+}
+
+/* Based on libgcc2.c from gcc suite. */
+grub_uint64_t
+__ashrdi3 (grub_uint64_t u, int b)
+{
+ if (b == 0)
+ return u;
+
+ const union component64 uu = {.full = u};
+ const int bm = 32 - b;
+ union component64 w;
+
+ if (bm <= 0)
+ {
+ /* w.high = 1..1 or 0..0 */
+ w.high = uu.high >> (32 - 1);
+ w.low = uu.high >> -bm;
+ }
+ else
+ {
+ const grub_uint32_t carries = (grub_uint32_t) uu.high << bm;
+
+ w.high = uu.high >> b;
+ w.low = ((grub_uint32_t) uu.low >> b) | carries;
+ }
+
+ return w.full;
+}
+
+/* Based on libgcc2.c from gcc suite. */
+grub_uint64_t
+__ashldi3 (grub_uint64_t u, int b)
+{
+ if (b == 0)
+ return u;
+
+ const union component64 uu = {.full = u};
+ const int bm = 32 - b;
+ union component64 w;
+
+ if (bm <= 0)
+ {
+ w.low = 0;
+ w.high = (grub_uint32_t) uu.low << -bm;
+ }
+ else
+ {
+ const grub_uint32_t carries = (grub_uint32_t) uu.low >> bm;
+
+ w.low = (grub_uint32_t) uu.low << b;
+ w.high = ((grub_uint32_t) uu.high << b) | carries;
+ }
+
+ return w.full;
+}
+
+#endif
Index: grub-2.02~beta2/grub-core/kern/powerpc/compiler-rt.S
===================================================================
--- /dev/null
+++ grub-2.02~beta2/grub-core/kern/powerpc/compiler-rt.S
@@ -0,0 +1,130 @@
+/*
+ * Special support for eabi and SVR4
+ *
+ * Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ * Written By Michael Meissner
+ * 64-bit support written by David Edelsohn
+ *
+ * This file 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, or (at your option) any
+ * later version.
+ *
+ * This file 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.
+ *
+ * Under Section 7 of GPL version 3, you are granted additional
+ * permissions described in the GCC Runtime Library Exception, version
+ * 3.1, as published by the Free Software Foundation.
+ *
+ * You should have received a copy of the GNU General Public License and
+ * a copy of the GCC Runtime Library Exception along with this program;
+ * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ * http://www.gnu.org/licenses/.
+ */
+
+/* Do any initializations needed for the eabi environment */
+
+#include
+#include
+
+ .section ".text"
+
+#define CFI_RESTORE(reg) .cfi_restore reg
+#define CFI_OFFSET(reg, off) .cfi_offset reg, off
+#define CFI_DEF_CFA_REGISTER(reg) .cfi_def_cfa_register reg
+#define CFI_STARTPROC .cfi_startproc
+#define CFI_ENDPROC .cfi_endproc
+
+/* Routines for restoring integer registers, called by the compiler. */
+/* Called with r11 pointing to the stack header word of the caller of the */
+/* function, just beyond the end of the integer restore area. */
+
+CFI_STARTPROC
+CFI_DEF_CFA_REGISTER (11)
+CFI_OFFSET (65, 4)
+CFI_OFFSET (14, -72)
+CFI_OFFSET (15, -68)
+CFI_OFFSET (16, -64)
+CFI_OFFSET (17, -60)
+CFI_OFFSET (18, -56)
+CFI_OFFSET (19, -52)
+CFI_OFFSET (20, -48)
+CFI_OFFSET (21, -44)
+CFI_OFFSET (22, -40)
+CFI_OFFSET (23, -36)
+CFI_OFFSET (24, -32)
+CFI_OFFSET (25, -28)
+CFI_OFFSET (26, -24)
+CFI_OFFSET (27, -20)
+CFI_OFFSET (28, -16)
+CFI_OFFSET (29, -12)
+CFI_OFFSET (30, -8)
+CFI_OFFSET (31, -4)
+FUNCTION(_restgpr_14_x) lwz 14,-72(11) /* restore gp registers */
+CFI_RESTORE (14)
+FUNCTION(_restgpr_15_x) lwz 15,-68(11)
+CFI_RESTORE (15)
+FUNCTION(_restgpr_16_x) lwz 16,-64(11)
+CFI_RESTORE (16)
+FUNCTION(_restgpr_17_x) lwz 17,-60(11)
+CFI_RESTORE (17)
+FUNCTION(_restgpr_18_x) lwz 18,-56(11)
+CFI_RESTORE (18)
+FUNCTION(_restgpr_19_x) lwz 19,-52(11)
+CFI_RESTORE (19)
+FUNCTION(_restgpr_20_x) lwz 20,-48(11)
+CFI_RESTORE (20)
+FUNCTION(_restgpr_21_x) lwz 21,-44(11)
+CFI_RESTORE (21)
+FUNCTION(_restgpr_22_x) lwz 22,-40(11)
+CFI_RESTORE (22)
+FUNCTION(_restgpr_23_x) lwz 23,-36(11)
+CFI_RESTORE (23)
+FUNCTION(_restgpr_24_x) lwz 24,-32(11)
+CFI_RESTORE (24)
+FUNCTION(_restgpr_25_x) lwz 25,-28(11)
+CFI_RESTORE (25)
+FUNCTION(_restgpr_26_x) lwz 26,-24(11)
+CFI_RESTORE (26)
+FUNCTION(_restgpr_27_x) lwz 27,-20(11)
+CFI_RESTORE (27)
+FUNCTION(_restgpr_28_x) lwz 28,-16(11)
+CFI_RESTORE (28)
+FUNCTION(_restgpr_29_x) lwz 29,-12(11)
+CFI_RESTORE (29)
+FUNCTION(_restgpr_30_x) lwz 30,-8(11)
+CFI_RESTORE (30)
+FUNCTION(_restgpr_31_x) lwz 0,4(11)
+ lwz 31,-4(11)
+CFI_RESTORE (31)
+ mtlr 0
+CFI_RESTORE (65)
+ mr 1,11
+CFI_DEF_CFA_REGISTER (1)
+ blr
+CFI_ENDPROC
+
+CFI_STARTPROC
+FUNCTION(_savegpr_14) stw 14,-72(11) /* save gp registers */
+FUNCTION(_savegpr_15) stw 15,-68(11)
+FUNCTION(_savegpr_16) stw 16,-64(11)
+FUNCTION(_savegpr_17) stw 17,-60(11)
+FUNCTION(_savegpr_18) stw 18,-56(11)
+FUNCTION(_savegpr_19) stw 19,-52(11)
+FUNCTION(_savegpr_20) stw 20,-48(11)
+FUNCTION(_savegpr_21) stw 21,-44(11)
+FUNCTION(_savegpr_22) stw 22,-40(11)
+FUNCTION(_savegpr_23) stw 23,-36(11)
+FUNCTION(_savegpr_24) stw 24,-32(11)
+FUNCTION(_savegpr_25) stw 25,-28(11)
+FUNCTION(_savegpr_26) stw 26,-24(11)
+FUNCTION(_savegpr_27) stw 27,-20(11)
+FUNCTION(_savegpr_28) stw 28,-16(11)
+FUNCTION(_savegpr_29) stw 29,-12(11)
+FUNCTION(_savegpr_30) stw 30,-8(11)
+FUNCTION(_savegpr_31) stw 31,-4(11)
+ blr
+CFI_ENDPROC
Index: grub-2.02~beta2/include/grub/compiler.h
===================================================================
--- grub-2.02~beta2.orig/include/grub/compiler.h
+++ grub-2.02~beta2/include/grub/compiler.h
@@ -48,4 +48,65 @@
# define WARN_UNUSED_RESULT
#endif
+#include "types.h"
+
+union component64
+{
+ grub_uint64_t full;
+ struct
+ {
+#ifdef GRUB_CPU_WORDS_BIGENDIAN
+ grub_uint32_t high;
+ grub_uint32_t low;
+#else
+ grub_uint32_t low;
+ grub_uint32_t high;
+#endif
+ };
+};
+
+#if defined (__powerpc__)
+grub_uint64_t EXPORT_FUNC (__lshrdi3) (grub_uint64_t u, int b);
+grub_uint64_t EXPORT_FUNC (__ashrdi3) (grub_uint64_t u, int b);
+grub_uint64_t EXPORT_FUNC (__ashldi3) (grub_uint64_t u, int b);
+int EXPORT_FUNC(__ucmpdi2) (grub_uint64_t a, grub_uint64_t b);
+void EXPORT_FUNC (_restgpr_14_x) (void);
+void EXPORT_FUNC (_restgpr_15_x) (void);
+void EXPORT_FUNC (_restgpr_16_x) (void);
+void EXPORT_FUNC (_restgpr_17_x) (void);
+void EXPORT_FUNC (_restgpr_18_x) (void);
+void EXPORT_FUNC (_restgpr_19_x) (void);
+void EXPORT_FUNC (_restgpr_20_x) (void);
+void EXPORT_FUNC (_restgpr_21_x) (void);
+void EXPORT_FUNC (_restgpr_22_x) (void);
+void EXPORT_FUNC (_restgpr_23_x) (void);
+void EXPORT_FUNC (_restgpr_24_x) (void);
+void EXPORT_FUNC (_restgpr_25_x) (void);
+void EXPORT_FUNC (_restgpr_26_x) (void);
+void EXPORT_FUNC (_restgpr_27_x) (void);
+void EXPORT_FUNC (_restgpr_28_x) (void);
+void EXPORT_FUNC (_restgpr_29_x) (void);
+void EXPORT_FUNC (_restgpr_30_x) (void);
+void EXPORT_FUNC (_restgpr_31_x) (void);
+void EXPORT_FUNC (_savegpr_14) (void);
+void EXPORT_FUNC (_savegpr_15) (void);
+void EXPORT_FUNC (_savegpr_16) (void);
+void EXPORT_FUNC (_savegpr_17) (void);
+void EXPORT_FUNC (_savegpr_18) (void);
+void EXPORT_FUNC (_savegpr_19) (void);
+void EXPORT_FUNC (_savegpr_20) (void);
+void EXPORT_FUNC (_savegpr_21) (void);
+void EXPORT_FUNC (_savegpr_22) (void);
+void EXPORT_FUNC (_savegpr_23) (void);
+void EXPORT_FUNC (_savegpr_24) (void);
+void EXPORT_FUNC (_savegpr_25) (void);
+void EXPORT_FUNC (_savegpr_26) (void);
+void EXPORT_FUNC (_savegpr_27) (void);
+void EXPORT_FUNC (_savegpr_28) (void);
+void EXPORT_FUNC (_savegpr_29) (void);
+void EXPORT_FUNC (_savegpr_30) (void);
+void EXPORT_FUNC (_savegpr_31) (void);
+
+#endif
+
#endif /* ! GRUB_COMPILER_HEADER */
Index: grub-2.02~beta2/include/grub/libgcc.h
===================================================================
--- grub-2.02~beta2.orig/include/grub/libgcc.h
+++ grub-2.02~beta2/include/grub/libgcc.h
@@ -16,79 +16,6 @@
* along with GRUB. If not, see http://www.gnu.org/licenses/.
*/
-/* We need to include config-util.h.in for HAVE_*. */
-#ifndef __STDC_VERSION__
-#define __STDC_VERSION__ 0
-#endif
-#include
-
-/* On x86 these functions aren't really needed. Save some space. */
-#if !defined (__i386__) && !defined (__x86_64__)
-# ifdef HAVE___ASHLDI3
-void EXPORT_FUNC (__ashldi3) (void);
-# endif
-# ifdef HAVE___ASHRDI3
-void EXPORT_FUNC (__ashrdi3) (void);
-# endif
-# ifdef HAVE___LSHRDI3
-void EXPORT_FUNC (__lshrdi3) (void);
-# endif
-# ifdef HAVE___UCMPDI2
-void EXPORT_FUNC (__ucmpdi2) (void);
-# endif
-# ifdef HAVE___BSWAPSI2
-void EXPORT_FUNC (__bswapsi2) (void);
-# endif
-# ifdef HAVE___BSWAPDI2
-void EXPORT_FUNC (__bswapdi2) (void);
-# endif
-# ifdef HAVE___CTZDI2
-void EXPORT_FUNC (__ctzdi2) (void);
-# endif
-# ifdef HAVE___CTZSI2
-void EXPORT_FUNC (__ctzsi2) (void);
-# endif
-#endif
-
-#ifdef HAVE__RESTGPR_14_X
-void EXPORT_FUNC (_restgpr_14_x) (void);
-void EXPORT_FUNC (_restgpr_15_x) (void);
-void EXPORT_FUNC (_restgpr_16_x) (void);
-void EXPORT_FUNC (_restgpr_17_x) (void);
-void EXPORT_FUNC (_restgpr_18_x) (void);
-void EXPORT_FUNC (_restgpr_19_x) (void);
-void EXPORT_FUNC (_restgpr_20_x) (void);
-void EXPORT_FUNC (_restgpr_21_x) (void);
-void EXPORT_FUNC (_restgpr_22_x) (void);
-void EXPORT_FUNC (_restgpr_23_x) (void);
-void EXPORT_FUNC (_restgpr_24_x) (void);
-void EXPORT_FUNC (_restgpr_25_x) (void);
-void EXPORT_FUNC (_restgpr_26_x) (void);
-void EXPORT_FUNC (_restgpr_27_x) (void);
-void EXPORT_FUNC (_restgpr_28_x) (void);
-void EXPORT_FUNC (_restgpr_29_x) (void);
-void EXPORT_FUNC (_restgpr_30_x) (void);
-void EXPORT_FUNC (_restgpr_31_x) (void);
-void EXPORT_FUNC (_savegpr_14) (void);
-void EXPORT_FUNC (_savegpr_15) (void);
-void EXPORT_FUNC (_savegpr_16) (void);
-void EXPORT_FUNC (_savegpr_17) (void);
-void EXPORT_FUNC (_savegpr_18) (void);
-void EXPORT_FUNC (_savegpr_19) (void);
-void EXPORT_FUNC (_savegpr_20) (void);
-void EXPORT_FUNC (_savegpr_21) (void);
-void EXPORT_FUNC (_savegpr_22) (void);
-void EXPORT_FUNC (_savegpr_23) (void);
-void EXPORT_FUNC (_savegpr_24) (void);
-void EXPORT_FUNC (_savegpr_25) (void);
-void EXPORT_FUNC (_savegpr_26) (void);
-void EXPORT_FUNC (_savegpr_27) (void);
-void EXPORT_FUNC (_savegpr_28) (void);
-void EXPORT_FUNC (_savegpr_29) (void);
-void EXPORT_FUNC (_savegpr_30) (void);
-void EXPORT_FUNC (_savegpr_31) (void);
-#endif
-
#if defined (__arm__)
void EXPORT_FUNC (__aeabi_lasr) (void);
void EXPORT_FUNC (__aeabi_llsl) (void);
++++++ ppc64_opt.patch ++++++
From afd0f21b2027310fda52b00ac1b964041d39a363 Mon Sep 17 00:00:00 2001
From: Paulo Flabiano Smorigo
Date: Mon, 15 Jun 2015 09:10:19 -0300
Subject: [PATCH] Add flag for powerpc ieee1275 to avoid unneeded optimizations
---
conf/Makefile.common | 3 +++
1 file changed, 3 insertions(+)
diff --git a/conf/Makefile.common b/conf/Makefile.common
index 96e58c9..fcb8d2e 100644
--- a/conf/Makefile.common
+++ b/conf/Makefile.common
@@ -17,6 +17,9 @@ endif
if COND_arm64
CFLAGS_PLATFORM += -mcmodel=large
endif
+if COND_powerpc_ieee1275
+ CFLAGS_PLATFORM += -mcpu=powerpc
+endif
#FIXME: discover and check XEN headers
CPPFLAGS_XEN = -I/usr/include
--
2.1.4
++++++ ppc64le.patch ++++++
From 8014cad21bb2cc986f10f0a927036851f490a8ec Mon Sep 17 00:00:00 2001
From: Paulo Flabiano Smorigo
Date: Wed, 13 Aug 2014 18:59:58 +0000
Subject: [PATCH 141/143] Add powerpc little-endian (ppc64le) flags
libgcc dependency was removed *just* for this target because
the distros that use ppc64el doesn't have 32-bit support on it.
* configure.ac: Add targets for powerpc64el and skip libgcc.
* Makefile.am: Likewise.
---
configure.ac | 17 +++++++++++++++--
grub-core/Makefile.am | 2 ++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index 2632e2d..53fd7c7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -142,6 +142,7 @@ if test "x$with_platform" = x; then
x86_64-*) platform=pc ;;
powerpc-*) platform=ieee1275 ;;
powerpc64-*) platform=ieee1275 ;;
+ powerpc64le-*) platform=ieee1275 ;;
sparc64-*) platform=ieee1275 ;;
mipsel-*) platform=loongson ;;
mips-*) platform=arc ;;
@@ -160,6 +161,7 @@ case "$target_cpu"-"$platform" in
x86_64-xen) ;;
x86_64-*) target_cpu=i386 ;;
powerpc64-ieee1275) target_cpu=powerpc ;;
+ powerpc64le-ieee1275) target_cpu=powerpc ;;
esac
# Check if the platform is supported, make final adjustments.
@@ -604,6 +606,13 @@ if test "x$target_cpu" = xi386 && test "x$platform" != xemu; then
TARGET_CFLAGS="$TARGET_CFLAGS -march=i386"
fi
+if test x$target_cpu = xpowerpc && test x$ac_cv_c_bigendian = xno; then
+ LD_FORCE_LE=1
+ TARGET_CFLAGS="$TARGET_CFLAGS -mbig-endian -DNO_LIBGCC=1"
+ TARGET_CCASFLAGS="$TARGET_CCASFLAGS -mbig-endian"
+ TARGET_LDFLAGS="$TARGET_LDFLAGS -static -mbig-endian"
+fi
+
if test "x$target_m32" = x1; then
# Force 32-bit mode.
TARGET_CFLAGS="$TARGET_CFLAGS -m32"
@@ -1047,7 +1056,8 @@ else
CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
fi
CPPFLAGS="$TARGET_CPPFLAGS"
-if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
+if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes \
+ || ( test x$target_cpu = xpowerpc && test x$ac_cv_c_bigendian = xno ); then
TARGET_LIBGCC=
else
TARGET_LIBGCC=-lgcc
@@ -1631,7 +1641,9 @@ if test x"$enable_werror" != xno ; then
HOST_CFLAGS="$HOST_CFLAGS -Werror"
fi
-if test "x$grub_cv_cc_target_clang" = xno; then
+# if not clang or power LE, use static libgcc
+if test "x$grub_cv_cc_target_clang" = xno \
+ || ! ( test x$target_cpu = xpowerpc && test x$ac_cv_c_bigendian = xno ); then
TARGET_LDFLAGS_STATIC_LIBGCC="-static-libgcc"
else
TARGET_LDFLAGS_STATIC_LIBGCC=
@@ -1694,6 +1706,7 @@ AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu =
AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
+AM_CONDITIONAL([COND_powerpc_le], [test x$target_cpu = xpowerpc -a x$ac_cv_c_bigendian = xno])
AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
index 5c087c8..cb7fd9f 100644
--- a/grub-core/Makefile.am
+++ b/grub-core/Makefile.am
@@ -84,8 +84,10 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/time.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm_private.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/net.h
if !COND_clang
+if !COND_powerpc_le
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/libgcc.h
endif
+endif
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/memory.h
if COND_i386_pc
--
1.9.3