commit-grub
[Top][All Lists]
Advanced

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

[2256] 2009-06-04 Vladimir Serbinenko <address@hidden>


From: Vladimir Serbinenko
Subject: [2256] 2009-06-04 Vladimir Serbinenko <address@hidden>
Date: Thu, 04 Jun 2009 20:25:11 +0000

Revision: 2256
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2256
Author:   phcoder
Date:     2009-06-04 20:25:11 +0000 (Thu, 04 Jun 2009)
Log Message:
-----------
2009-06-04  Vladimir Serbinenko  <address@hidden>

        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: fail gracefully and add -DMCMODEL_SMALL=1 to 
        TARGET_CFLAGS when -mcmodel=large isn't supported
        

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/configure.ac
    trunk/grub2/kern/efi/mm.c

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog       2009-06-04 20:16:13 UTC (rev 2255)
+++ trunk/grub2/ChangeLog       2009-06-04 20:25:11 UTC (rev 2256)
@@ -1,5 +1,16 @@
 2009-06-04  Vladimir Serbinenko  <address@hidden>
 
+       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: fail gracefully and add -DMCMODEL_SMALL=1 to 
+       TARGET_CFLAGS when -mcmodel=large isn't supported
+       
+2009-06-04  Vladimir Serbinenko  <address@hidden>
+
        Remove nested functions in efiemu core
 
        * efiemu/runtime/efiemu.c (reflect): make static instead of nested

Modified: trunk/grub2/configure.ac
===================================================================
--- trunk/grub2/configure.ac    2009-06-04 20:16:13 UTC (rev 2255)
+++ trunk/grub2/configure.ac    2009-06-04 20:25:11 UTC (rev 2256)
@@ -339,18 +339,23 @@
 if test "$target_cpu"-"$platform" = x86_64-efi; then
   # Use large model to support 4G memory
   AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
-    CFLAGS="-m64 -mcmodel=large"
+    SAVED_CFLAGS=$CFLAGS
+    CFLAGS="$CFLAGS -m64 -mcmodel=large"
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
                      [grub_cv_cc_mcmodel=yes],
                      [grub_cv_cc_mcmodel=no])
   ])
-  if test "x$grub_cv_cc_no_mcmodel" = xno; then
-    AC_MSG_ERROR([-mcmodel=large not supported, upgrade your gcc])
+  if test "x$grub_cv_cc_mcmodel" = xno; then
+    CFLAGS="$SAVED_CFLAGS -m64 -DMCMODEL_SMALL=1"
+    TARGET_CFLAGS="$TARGET_CFLAGS -DMCMODEL_SMALL=1"    
+    AC_MSG_WARN([-mcmodel=large not supported. You wan't be able to use the 
memory over 4GiB. Upgrade your gcc])
+  else
+    TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
   fi
 
   # EFI writes to stack below %rsp, we must not use the red zone
   AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, 
[
-    CFLAGS="-m64 -mno-red-zone"
+    CFLAGS="$CFLAGS -m64 -mno-red-zone"
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
                      [grub_cv_cc_no_red_zone=yes],
                      [grub_cv_cc_no_red_zone=no])
@@ -359,7 +364,7 @@
     AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
   fi
 
-  TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large -mno-red-zone"
+  TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
 fi
 
 #

Modified: trunk/grub2/kern/efi/mm.c
===================================================================
--- trunk/grub2/kern/efi/mm.c   2009-06-04 20:16:13 UTC (rev 2255)
+++ trunk/grub2/kern/efi/mm.c   2009-06-04 20:25:11 UTC (rev 2256)
@@ -63,7 +63,9 @@
   /* Limit the memory access to less than 4GB for 32-bit platforms.  */
   if (address > 0xffffffff)
     return 0;
+#endif
   
+#if GRUB_TARGET_SIZEOF_VOID_P < 8 || defined (MCMODEL_SMALL)
   if (address == 0)
     {
       type = GRUB_EFI_ALLOCATE_MAX_ADDRESS;
@@ -218,7 +220,7 @@
        desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size))
     {
       if (desc->type == GRUB_EFI_CONVENTIONAL_MEMORY
-#if GRUB_TARGET_SIZEOF_VOID_P < 8
+#if GRUB_TARGET_SIZEOF_VOID_P < 8 || defined (MCMODEL_SMALL)
          && desc->physical_start <= 0xffffffff
 #endif
          && desc->physical_start + PAGES_TO_BYTES (desc->num_pages) > 0x100000
@@ -234,7 +236,7 @@
              desc->physical_start = 0x100000;
            }
          
-#if GRUB_TARGET_SIZEOF_VOID_P < 8
+#if GRUB_TARGET_SIZEOF_VOID_P < 8 || defined (MCMODEL_SMALL)
          if (BYTES_TO_PAGES (filtered_desc->physical_start)
              + filtered_desc->num_pages
              > BYTES_TO_PAGES (0x100000000LL))





reply via email to

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