grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/2] grub-efi: allow compilation without large model support


From: jhuang0
Subject: Re: [PATCH 2/2] grub-efi: allow compilation without large model support
Date: Fri, 22 Nov 2013 17:59:35 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8



On 11/22/2013 4:13 PM, jhuang0 wrote:


On 11/22/2013 4:00 PM, Vladimir 'φ-coder/phcoder' Serbinenko wrote:
On 22.11.2013 08:23, address@hidden wrote:
From: Jackie Huang <address@hidden>

-mcmodel=large is not supported by gcc with version lower
than 4.4, but we don't need to use memory over 4GiB, so add
a patch to allow compilation without large model support.

Please try attached patch instead

Thanks, I'm going to try with your patch.

Tested with Vladimir's patch, it works fine. I'm going send v5 for this.

Thanks,
Jackie


Thanks,
Jackie

Signed-off-by: Jackie Huang <address@hidden>
---
  ...allow-a-compilation-without-mcmodel-large.patch | 81
++++++++++++++++++++++
  meta/recipes-bsp/grub/grub-efi_2.00.bb             |  1 +
  2 files changed, 82 insertions(+)
  create mode 100644
meta/recipes-bsp/grub/files/grub-efi-allow-a-compilation-without-mcmodel-large.patch


diff --git
a/meta/recipes-bsp/grub/files/grub-efi-allow-a-compilation-without-mcmodel-large.patch
b/meta/recipes-bsp/grub/files/grub-efi-allow-a-compilation-without-mcmodel-large.patch

new file mode 100644
index 0000000..c6a30c8
--- /dev/null
+++
b/meta/recipes-bsp/grub/files/grub-efi-allow-a-compilation-without-mcmodel-large.patch

@@ -0,0 +1,81 @@
+From 0cea0e4266214da1f11e812834f5d5c47a6e04e6 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <address@hidden>
+Date: Tue, 5 Nov 2013 07:23:32 -0500
+Subject: [PATCH] Allow a compilation without -mcmodel=large
+
+* kern/efi/mm.c (grub_efi_allocate_pages): don't allocate >4GiB
+  when compiled without -mcmodel=large
+  (filter_memory_map): remove memory post 4 GiB when compiled
+  without -mcmodel=large
+* configure.ac: add -DMCMODEL_SMALL=1 to TARGET_CFLAGS when
+  -mcmodel=large isn't supported
+
+It's ported from old version of grub which was deliberately
+removed in current and newer version:
+
+2009-06-04  Vladimir Serbinenko  <address@hidden>
+
+         Allow a compilation without -mcmodel=large
+
+2010-04-21  Vladimir Serbinenko  <address@hidden>
+
+   * configure.ac: Refuse to compile for x86_64-efi is mcmodel=large
+     is not supported.
+
+Upstream-Status: Inappropriate [compatibility]
+
+Signed-off-by: Jackie Huang <address@hidden>
+---
+ configure.ac            |    4 +++-
+ grub-core/kern/efi/mm.c |    6 +++---
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 319d063..ee72fee 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -567,7 +567,9 @@ if test "$target_cpu"-"$platform" = x86_64-efi;
then
+               [grub_cv_cc_mcmodel=no])
+   ])
+   if test "x$grub_cv_cc_mcmodel" = xno; then
+-    AC_MSG_ERROR([-mcmodel=large not supported. Upgrade your gcc.])
++    CFLAGS="$SAVED_CFLAGS -m64 -DMCMODEL_SMALL=1"
++    TARGET_CFLAGS="$TARGET_CFLAGS -DMCMODEL_SMALL=1"
++    AC_MSG_WARN([-mcmodel=large not supported. You won't be able to
use the memory over 4GiB. Upgrade your gcc.])
+   else
+     TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
+   fi
+diff --git a/grub-core/kern/efi/mm.c b/grub-core/kern/efi/mm.c
+index a2edc84..c67dd13 100644
+--- a/grub-core/kern/efi/mm.c
++++ b/grub-core/kern/efi/mm.c
+@@ -62,7 +62,7 @@ grub_efi_allocate_pages
(grub_efi_physical_address_t address,
+     return 0;
+ #endif
+
+-#if 1
++#if defined (MCMODEL_SMALL)
+   if (address == 0)
+     {
+       type = GRUB_EFI_ALLOCATE_MAX_ADDRESS;
+@@ -305,7 +305,7 @@ filter_memory_map (grub_efi_memory_descriptor_t
*memory_map,
+        desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size))
+     {
+       if (desc->type == GRUB_EFI_CONVENTIONAL_MEMORY
+-#if 1
++#if defined (MCMODEL_SMALL)
+       && desc->physical_start <= 0xffffffff
+ #endif
+       && desc->physical_start + PAGES_TO_BYTES (desc->num_pages) >
0x100000
+@@ -321,7 +321,7 @@ filter_memory_map (grub_efi_memory_descriptor_t
*memory_map,
+           desc->physical_start = 0x100000;
+         }
+
+-#if 1
++#if defined (MCMODEL_SMALL)
+       if (BYTES_TO_PAGES (filtered_desc->physical_start)
+           + filtered_desc->num_pages
+           > BYTES_TO_PAGES (0x100000000LL))
+--
+1.7.1
+
diff --git a/meta/recipes-bsp/grub/grub-efi_2.00.bb
b/meta/recipes-bsp/grub/grub-efi_2.00.bb
index 2fe688c..deb9514 100644
--- a/meta/recipes-bsp/grub/grub-efi_2.00.bb
+++ b/meta/recipes-bsp/grub/grub-efi_2.00.bb
@@ -27,6 +27,7 @@ SRC_URI =
"ftp://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \
             file://grub-no-unused-result.patch \
             file://grub-2.00-ignore-gnulib-gets-stupidity.patch \
             file://fix-issue-with-flex-2.5.37.patch \
+
file://grub-efi-allow-a-compilation-without-mcmodel-large.patch \
            "
  SRC_URI[md5sum] = "e927540b6eda8b024fb0391eeaa4091c"
  SRC_URI[sha256sum] =
"65b39a0558f8c802209c574f4d02ca263a804e8a564bc6caf1cd0fd3b3cc11e3"




--
Jackie Huang
WIND RIVER | China Development Center
MSN:address@hidden
Tel: +86 8477 8594
Mobile: +86 138 1027 4745



reply via email to

[Prev in Thread] Current Thread [Next in Thread]