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
next prev 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).