grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
From: Ram Pai <linuxram@us.ibm.com>
To: grub-devel@gnu.org
Cc: tonyb@au1.ibm.com, anton@au1.ibm.com, linuxram@us.ibm.com,
	tlfalcon@linux.vnet.ibm.com, tbberry@us.ibm.com
Subject: [RFC PATCH 04/23] grub-install can now recognize and install a LE grub boot loader
Date: Wed, 26 Feb 2014 10:31:03 -0800	[thread overview]
Message-ID: <1393439482-20341-5-git-send-email-linuxram@us.ibm.com> (raw)
In-Reply-To: <1393439482-20341-1-git-send-email-linuxram@us.ibm.com>

grub-install can now recognize and install a LE grub boot loader

Signed-off-by: Ram Pai <linuxram@us.ibm.com>
---
 include/grub/offsets.h      |  5 +++++
 include/grub/util/install.h |  1 +
 util/grub-install-common.c  |  1 +
 util/grub-install.c         | 15 +++++++++++++--
 util/mkimage.c              | 19 +++++++++++++++++++
 5 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/include/grub/offsets.h b/include/grub/offsets.h
index 85e7401..b6acd02 100644
--- a/include/grub/offsets.h
+++ b/include/grub/offsets.h
@@ -63,6 +63,9 @@
 #define GRUB_KERNEL_POWERPC_IEEE1275_LINK_ALIGN 4
 #define GRUB_KERNEL_POWERPC_IEEE1275_LINK_ADDR 0x200000
 
+#define GRUB_KERNEL_POWERPC64LE_IEEE1275_LINK_ALIGN 4
+#define GRUB_KERNEL_POWERPC64LE_IEEE1275_LINK_ADDR 0x200000
+
 #define GRUB_KERNEL_MIPS_LOONGSON_LINK_ADDR         0x80200000
 
 #define GRUB_KERNEL_MIPS_LOONGSON_LINK_ALIGN  32
@@ -111,6 +114,7 @@
 #define GRUB_KERNEL_ARM_UBOOT_MOD_GAP 0x0
 
 #define GRUB_KERNEL_POWERPC_IEEE1275_MOD_ALIGN 0x1000
+#define GRUB_KERNEL_POWERPC64LE_IEEE1275_MOD_ALIGN 0x1000
 #define GRUB_KERNEL_SPARC64_IEEE1275_LOG_MOD_ALIGN 3
 #define GRUB_KERNEL_SPARC64_IEEE1275_MOD_ALIGN (1 << GRUB_KERNEL_SPARC64_IEEE1275_LOG_MOD_ALIGN)
 
@@ -126,6 +130,7 @@
    for PowerMac to prevent "CLAIM failed" error.  The real fix is to
    rewrite grub-mkimage to generate valid ELF files.  */
 #define GRUB_KERNEL_POWERPC_IEEE1275_MOD_GAP 0x8000
+#define GRUB_KERNEL_POWERPC64LE_IEEE1275_MOD_GAP 0x8000
 
 #ifdef GRUB_MACHINE
 #define GRUB_OFFSETS_CONCAT_(a,b,c) a ## b ## c
diff --git a/include/grub/util/install.h b/include/grub/util/install.h
index aedcd29..3f32cd3 100644
--- a/include/grub/util/install.h
+++ b/include/grub/util/install.h
@@ -89,6 +89,7 @@ enum grub_install_plat
     GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON,
     GRUB_INSTALL_PLATFORM_SPARC64_IEEE1275,
     GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275,
+    GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275,
     GRUB_INSTALL_PLATFORM_MIPSEL_ARC,
     GRUB_INSTALL_PLATFORM_MIPS_ARC,
     GRUB_INSTALL_PLATFORM_IA64_EFI,
diff --git a/util/grub-install-common.c b/util/grub-install-common.c
index c8bedcb..a1f18fc 100644
--- a/util/grub-install-common.c
+++ b/util/grub-install-common.c
@@ -661,6 +661,7 @@ static struct
     [GRUB_INSTALL_PLATFORM_MIPS_ARC] =         { "mips",    "arc"       },
     [GRUB_INSTALL_PLATFORM_SPARC64_IEEE1275] = { "sparc64", "ieee1275"  },
     [GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275] = { "powerpc", "ieee1275"  },
+    [GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275] = { "powerpc64le", "ieee1275"  },
     [GRUB_INSTALL_PLATFORM_IA64_EFI] =         { "ia64",    "efi"       },
     [GRUB_INSTALL_PLATFORM_ARM_EFI] =          { "arm",     "efi"       },
     [GRUB_INSTALL_PLATFORM_ARM64_EFI] =        { "arm64",   "efi"       },
diff --git a/util/grub-install.c b/util/grub-install.c
index 2e6226a..994af24 100644
--- a/util/grub-install.c
+++ b/util/grub-install.c
@@ -311,6 +311,8 @@ get_default_platform (void)
 {
 #ifdef __powerpc__
    return "powerpc-ieee1275";
+#elif __powerpc64le__
+   return "powerpc64le-ieee1275";
 #elif defined (__sparc__) || defined (__sparc64__)
    return "sparc64-ieee1275";
 #elif defined (__MIPSEL__)
@@ -475,6 +477,7 @@ have_bootdev (enum grub_install_plat pl)
     case GRUB_INSTALL_PLATFORM_I386_IEEE1275:
     case GRUB_INSTALL_PLATFORM_SPARC64_IEEE1275:
     case GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275:
+    case GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275:
     case GRUB_INSTALL_PLATFORM_MIPSEL_ARC:
     case GRUB_INSTALL_PLATFORM_MIPS_ARC:
       return 1;
@@ -897,6 +900,7 @@ main (int argc, char *argv[])
     case GRUB_INSTALL_PLATFORM_I386_IEEE1275:
     case GRUB_INSTALL_PLATFORM_SPARC64_IEEE1275:
     case GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275:
+    case GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275:
     case GRUB_INSTALL_PLATFORM_MIPSEL_ARC:
     case GRUB_INSTALL_PLATFORM_MIPS_ARC:
     case GRUB_INSTALL_PLATFORM_ARM_UBOOT:
@@ -926,6 +930,7 @@ main (int argc, char *argv[])
 	grub_util_error ("%s", _("install device isn't specified"));
       break;
     case GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275:
+    case GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275:
       if (install_device)
 	is_prep = 1;
       break;
@@ -1138,7 +1143,8 @@ main (int argc, char *argv[])
       grub_install_mkdir_p (efidir);
     }
 
-  if (platform == GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275)
+  if (platform == GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275 ||
+      platform ==  GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275)
     {
       int is_guess = 0;
       if (!macppcdir)
@@ -1340,7 +1346,8 @@ main (int argc, char *argv[])
       if ((disk_module && grub_strcmp (disk_module, "biosdisk") != 0)
 	  || grub_drives[1]
 	  || (!install_drive
-	      && platform != GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275)
+	      && platform != GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275
+	      && platform != GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275)
 	  || (install_drive && !is_same_disk (grub_drives[0], install_drive))
 	  || !have_bootdev (platform))
 	{
@@ -1433,6 +1440,7 @@ main (int argc, char *argv[])
 		    break;
 		  case GRUB_INSTALL_PLATFORM_SPARC64_IEEE1275:
 		  case GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275:
+		  case GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275:
 		  case GRUB_INSTALL_PLATFORM_I386_IEEE1275:
 		    {
 		      const char * ofpath = grub_util_devname_to_ofpath (*curdev);
@@ -1539,6 +1547,7 @@ main (int argc, char *argv[])
     case GRUB_INSTALL_PLATFORM_I386_MULTIBOOT:
     case GRUB_INSTALL_PLATFORM_I386_IEEE1275:
     case GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275:
+    case GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275:
     case GRUB_INSTALL_PLATFORM_I386_XEN:
     case GRUB_INSTALL_PLATFORM_X86_64_XEN:
       core_name = "core.elf";
@@ -1598,6 +1607,7 @@ main (int argc, char *argv[])
 
     case GRUB_INSTALL_PLATFORM_I386_IEEE1275:
     case GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275:
+    case GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275:
       {
 	char *dst = grub_util_path_concat (2, grubdir, "grub");
 	grub_install_copy_file (imgfile, dst, 1);
@@ -1700,6 +1710,7 @@ main (int argc, char *argv[])
       }
 
     case GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275:
+    case GRUB_INSTALL_PLATFORM_POWERPC64LE_IEEE1275:
       if (macppcdir)
 	{
 	  char *core_services = grub_util_path_concat (4, macppcdir,
diff --git a/util/mkimage.c b/util/mkimage.c
index 26d9816..baf5fdc 100644
--- a/util/mkimage.c
+++ b/util/mkimage.c
@@ -371,6 +371,25 @@ static const struct grub_install_image_target_desc image_targets[] =
       .link_align = 4
     },
     {
+      .dirname = "powerpc64le-ieee1275",
+      .names = { "powerpc64le-ieee1275", NULL },
+      .voidp_sizeof = 8,
+      .bigendian = 0,
+      .id = IMAGE_PPC, 
+      .flags = PLATFORM_FLAGS_NONE,
+      .total_module_size = TARGET_NO_FIELD,
+      .decompressor_compressed_size = TARGET_NO_FIELD,
+      .decompressor_uncompressed_size = TARGET_NO_FIELD,
+      .decompressor_uncompressed_addr = TARGET_NO_FIELD,
+      .section_align = 1,
+      .vaddr_offset = 0,
+      .link_addr = GRUB_KERNEL_POWERPC64LE_IEEE1275_LINK_ADDR,
+      .elf_target = EM_PPC64,
+      .mod_gap = GRUB_KERNEL_POWERPC64LE_IEEE1275_MOD_GAP,
+      .mod_align = GRUB_KERNEL_POWERPC64LE_IEEE1275_MOD_ALIGN,
+      .link_align = 4
+    },
+    {
       .dirname = "sparc64-ieee1275",
       .names = { "sparc64-ieee1275-raw", NULL },
       .voidp_sizeof = 8,
-- 
1.8.5.3



  parent reply	other threads:[~2014-02-26 18:32 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-26 18:30 [RFC PATCH 00/23] grub 64bit little-endian on power Ram Pai
2014-02-26 18:31 ` [RFC PATCH 01/23] Add a new architecture to the build process Ram Pai
2014-02-26 18:31 ` [RFC PATCH 02/23] Build LE grub as O1 Ram Pai
2014-02-26 18:31 ` [RFC PATCH 03/23] ignore .TOC. symbol Ram Pai
2014-04-01 16:52   ` Andrey Borzenkov
2014-02-26 18:31 ` Ram Pai [this message]
2014-02-26 18:31 ` [RFC PATCH 05/23] set ABI version in e_flag of the PPC64LE ELF image Ram Pai
2014-02-26 18:31 ` [RFC PATCH 06/23] Add IEEE1275_ADDR helper Ram Pai
2014-04-01 17:11   ` Andrey Borzenkov
2014-02-26 18:31 ` [RFC PATCH 07/23] Fix some more warnings when casting Ram Pai
2014-02-26 18:31 ` [RFC PATCH 08/23] Add powerpc64 types Ram Pai
2014-04-01 17:15   ` Andrey Borzenkov
2014-04-02 17:02     ` Ram Pai
2014-02-26 18:31 ` [RFC PATCH 09/23] Fix warnings when building powerpc linux loader 64bit Ram Pai
2014-04-01 17:21   ` Andrey Borzenkov
2014-04-02 17:03     ` Ram Pai
2014-02-26 18:31 ` [RFC PATCH 10/23] GRUB_ELF_R_PPC_* processing is applicable only for 32 bit bootloader Ram Pai
2014-02-26 18:31 ` [RFC PATCH 11/23] Fix powerpc setjmp/longjmp 64bit issues Ram Pai
2014-04-01 17:27   ` Andrey Borzenkov
2014-04-02 17:06     ` Ram Pai
2014-04-02 17:19       ` Andrey Borzenkov
2014-04-02 17:48         ` Ram Pai
2014-04-02 17:56           ` Andrey Borzenkov
2014-04-02 18:55             ` Ram Pai
2014-02-26 18:31 ` [RFC PATCH 12/23] Add powerpc64 ieee1275 trampoline Ram Pai
2014-02-26 18:31 ` [RFC PATCH 13/23] Add 64bit support to powerpc startup code Ram Pai
2014-02-26 18:31 ` [RFC PATCH 14/23] Add grub_dl_find_section_addr Ram Pai
2014-02-26 18:31 ` [RFC PATCH 15/23] Add ppc64 relocations Ram Pai
2014-02-26 18:31 ` [RFC PATCH 16/23] ppc64 doesn't need libgcc routines Ram Pai
2014-02-26 18:31 ` [RFC PATCH 17/23] Use FUNC_START/FUNC_END for powerpc function definitions Ram Pai
2014-02-26 18:31 ` [RFC PATCH 18/23] .TOC. symbol is special in ppc64le Ram Pai
2014-02-26 18:31 ` [RFC PATCH 19/23] align .toc section on 4byte boundary Ram Pai
2014-02-26 18:31 ` [RFC PATCH 20/23] fix parameter to firmware calls Ram Pai
2014-04-01 17:45   ` Andrey Borzenkov
2014-04-02 17:08     ` Ram Pai
2014-04-02 17:16       ` Andrey Borzenkov
2014-02-26 18:31 ` [RFC PATCH 21/23] powerpc64 is not necessarily BigEndian anymore! :) Ram Pai
2014-04-01 17:49   ` Andrey Borzenkov
2014-04-01 20:22     ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-04-03 17:33       ` Ram Pai
2014-04-03 17:53         ` Andrey Borzenkov
2014-04-03 18:37           ` Ram Pai
2014-04-03 19:03             ` Andrey Borzenkov
2014-04-03 19:26               ` Ram Pai
2014-04-03 19:42                 ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-04-03 20:23                   ` Ram Pai
2014-04-03 19:54                 ` Andrey Borzenkov
2014-04-03 20:32                   ` Ram Pai
2014-04-03 21:41                     ` Vladimir 'phcoder' Serbinenko
2014-04-04  2:28                     ` Andrey Borzenkov
2014-04-04 17:47                       ` Ram Pai
2014-04-04 18:17                         ` Andrey Borzenkov
2014-04-04 18:24                           ` Dinar Valeev
2014-04-04 19:12                             ` Andrey Borzenkov
2014-04-04 20:29                               ` Dinar Valeev
2014-04-04 22:19                                 ` Ram Pai
     [not found]                                   ` <CAEaD8JN9SkqU9+BkU2MYub=aC3Wb143nMPgRWjVbFvgit90yBQ@mail.gmail.com>
2014-04-05  0:04                                     ` Fwd: " Vladimir 'phcoder' Serbinenko
2014-09-27  5:42                             ` Andrei Borzenkov
2014-09-28  6:33                               ` Andrei Borzenkov
2014-04-04  6:37                   ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-04-04 17:08                     ` Andrey Borzenkov
2014-04-05 15:45                       ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-04-05 16:49                         ` Andrey Borzenkov
2014-04-05 18:29                           ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-04-05 18:48                             ` Andrey Borzenkov
2014-04-02 17:09     ` Ram Pai
2014-02-26 18:31 ` [RFC PATCH 22/23] fix segfaults if initrd Ram Pai
2014-02-26 18:31 ` [RFC PATCH 23/23] Optional: Power7 VSX instructions workaround Ram Pai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1393439482-20341-5-git-send-email-linuxram@us.ibm.com \
    --to=linuxram@us.ibm.com \
    --cc=anton@au1.ibm.com \
    --cc=grub-devel@gnu.org \
    --cc=tbberry@us.ibm.com \
    --cc=tlfalcon@linux.vnet.ibm.com \
    --cc=tonyb@au1.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).