grub-devel
[Top][All Lists]
Advanced

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

[RFC PATCH 01/23] Add a new architecture to the build process


From: Ram Pai
Subject: [RFC PATCH 01/23] Add a new architecture to the build process
Date: Wed, 26 Feb 2014 10:31:00 -0800

Add a new architecture to the build process

Signed-off-by: Ram Pai <address@hidden>
Signed-off-by: Tomohiro B Berry <address@hidden>
Signed-off-by: Thomas Falcon <address@hidden>
---
 Makefile.am                 |  4 ++++
 config.h.in                 |  4 ++++
 configure.ac                | 10 +++++++---
 gentpl.py                   |  7 ++++---
 grub-core/Makefile.am       |  7 +++++++
 grub-core/Makefile.core.def | 18 ++++++++++++++++++
 include/grub/powerpc64le    |  1 +
 7 files changed, 45 insertions(+), 6 deletions(-)
 create mode 120000 include/grub/powerpc64le

diff --git a/Makefile.am b/Makefile.am
index f02ae0a..8aad803 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -383,6 +383,10 @@ if COND_powerpc_ieee1275
 BOOTCHECKS = bootcheck-linux-ppc
 endif
 
+if COND_powerpc64le_ieee1275
+BOOTCHECKS = bootcheck-linux-ppc
+endif
+
 EXTRA_DIST += grub-core/tests/boot/kbsd.init-i386.S 
grub-core/tests/boot/kbsd.init-x86_64.S grub-core/tests/boot/kbsd.spec.txt 
grub-core/tests/boot/kernel-8086.S grub-core/tests/boot/kernel-i386.S 
grub-core/tests/boot/kfreebsd-aout.cfg grub-core/tests/boot/kfreebsd.cfg 
grub-core/tests/boot/kfreebsd.init-i386.S 
grub-core/tests/boot/kfreebsd.init-x86_64.S grub-core/tests/boot/knetbsd.cfg 
grub-core/tests/boot/kopenbsd.cfg grub-core/tests/boot/kopenbsdlabel.txt 
grub-core/tests/boot/linux16.cfg grub-core/tests/boot/linux.cfg 
grub-core/tests/boot/linux.init-i386.S grub-core/tests/boot/linux.init-mips.S 
grub-core/tests/boot/linux.init-ppc.S grub-core/tests/boot/linux.init-x86_64.S 
grub-core/tests/boot/linux-ppc.cfg grub-core/tests/boot/multiboot2.cfg 
grub-core/tests/boot/multiboot.cfg grub-core/tests/boot/ntldr.cfg 
grub-core/tests/boot/pc-chainloader.cfg grub-core/tests/boot/qemu-shutdown-x86.S
 
 .PHONY: bootcheck-linux-i386 bootcheck-linux-x86_64 \
diff --git a/config.h.in b/config.h.in
index 4b63014..1d71e35 100644
--- a/config.h.in
+++ b/config.h.in
@@ -6,6 +6,10 @@
 #define __powerpc__ 1
 #endif
 
+#if defined(__PPC64__) && defined(__LITTLE_ENDIAN__)
+#define __powerpc64le__ 1
+#endif
+
 #define GCRYPT_NO_DEPRECATED 1
 
 /* Define to 1 to enable disk cache statistics.  */
diff --git a/configure.ac b/configure.ac
index 8888c2f..09e9dfb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -119,6 +119,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 ;;
@@ -137,6 +138,7 @@ case "$target_cpu"-"$platform" in
   x86_64-xen) ;;
   x86_64-*) target_cpu=i386 ;;
   powerpc64-ieee1275) target_cpu=powerpc ;;
+  powerpc64le-ieee1275) target_cpu=powerpc64le ;;
 esac
 
 # Check if the platform is supported, make final adjustments.
@@ -152,6 +154,7 @@ case "$target_cpu"-"$platform" in
   i386-ieee1275) ;;
   i386-qemu) ;;
   powerpc-ieee1275) ;;
+  powerpc64le-ieee1275) ;;
   sparc64-ieee1275) ;;
   ia64-efi) ;;
   mips-qemu_mips) ;;
@@ -173,7 +176,7 @@ esac
 if test x$platform != xemu ; then
    case "$target_cpu" in
        i386 | powerpc) target_m32=1 ;;
-       x86_64 | sparc64) target_m64=1 ;;
+       x86_64 | sparc64 | powerpc64le) target_m64=1 ;;
    esac
 fi
 
@@ -557,7 +560,7 @@ if test "x$grub_cv_cc_target_clang" = xyes && ( test 
"x$target_cpu" = xi386 \
    TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
 fi
 
-if test "x$grub_cv_cc_target_clang" = xyes && test "x$target_cpu" = xpowerpc; 
then
+if test "x$grub_cv_cc_target_clang" = xyes && (test "x$target_cpu" = xpowerpc 
|| test "x$target_cpu" = xpowerpc64le ); then
 AC_CACHE_CHECK([if clang can handle ame instruction], 
[grub_cv_cc_target_clang_ame]
 [
 CFLAGS="$TARGET_CFLAGS"
@@ -1428,7 +1431,7 @@ if test x"$enable_build_grub_mkfont" = xno ; then
   FONT_SOURCE=
 fi
 
-if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test 
"x$platform" = xloongson || test "x$platform" = xqemu_mips || test 
"x$target_cpu"-"$platform" = xpowerpc-ieee1275 || test "x$platform" = xcoreboot 
); then
+if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test 
"x$platform" = xloongson || test "x$platform" = xqemu_mips || test 
"x$target_cpu"-"$platform" = xpowerpc-ieee1275 || test 
"x$target_cpu"-"$platform" = xpowerpc64le-ieee1275 || test "x$platform" = 
xcoreboot ); then
   if test x"$grub_build_mkfont_excuse" = x ; then
     AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need 
unifont])
   else
@@ -1671,6 +1674,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_powerpc64le_ieee1275], [test x$target_cpu = xpowerpc64le 
-a x$platform = xieee1275])
 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/gentpl.py b/gentpl.py
index bdcae1a..744bed0 100644
--- a/gentpl.py
+++ b/gentpl.py
@@ -30,7 +30,7 @@ GRUB_PLATFORMS = [ "emu", "i386_pc", "i386_efi", "i386_qemu", 
"i386_coreboot",
                    "i386_multiboot", "i386_ieee1275", "x86_64_efi",
                    "i386_xen", "x86_64_xen",
                    "mips_loongson", "sparc64_ieee1275",
-                   "powerpc_ieee1275", "mips_arc", "ia64_efi",
+                   "powerpc_ieee1275", "powerpc64le_ieee1275", "mips_arc", 
"ia64_efi",
                    "mips_qemu_mips", "arm_uboot", "arm_efi", "arm64_efi" ]
 
 GROUPS = {}
@@ -44,12 +44,13 @@ GROUPS["x86"]      = GROUPS["i386"] + GROUPS["x86_64"]
 GROUPS["mips"]     = [ "mips_loongson", "mips_qemu_mips", "mips_arc" ]
 GROUPS["sparc64"]  = [ "sparc64_ieee1275" ]
 GROUPS["powerpc"]  = [ "powerpc_ieee1275" ]
+GROUPS["powerpc64le"]  = [ "powerpc64le_ieee1275" ]
 GROUPS["arm"]      = [ "arm_uboot", "arm_efi" ]
 GROUPS["arm64"]    = [ "arm64_efi" ]
 
 # Groups based on firmware
 GROUPS["efi"]  = [ "i386_efi", "x86_64_efi", "ia64_efi", "arm_efi", 
"arm64_efi" ]
-GROUPS["ieee1275"]   = [ "i386_ieee1275", "sparc64_ieee1275", 
"powerpc_ieee1275" ]
+GROUPS["ieee1275"]   = [ "i386_ieee1275", "sparc64_ieee1275", 
"powerpc_ieee1275", "powerpc64le_ieee1275" ]
 GROUPS["uboot"] = [ "arm_uboot" ]
 GROUPS["xen"]  = [ "i386_xen", "x86_64_xen" ]
 
@@ -58,7 +59,7 @@ GROUPS["noemu"]   = GRUB_PLATFORMS[:]; 
GROUPS["noemu"].remove("emu")
 
 # Groups based on hardware features
 GROUPS["cmos"] = GROUPS["x86"][:] + ["mips_loongson", "mips_qemu_mips",
-                                     "sparc64_ieee1275", "powerpc_ieee1275"]
+                                     "sparc64_ieee1275", "powerpc_ieee1275", 
"powerpc64le_ieee1275" ]
 GROUPS["cmos"].remove("i386_efi"); GROUPS["cmos"].remove("x86_64_efi");
 GROUPS["pci"]      = GROUPS["x86"] + ["mips_loongson"]
 GROUPS["usb"]      = GROUPS["pci"]
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
index 5c087c8..d9034c1 100644
--- a/grub-core/Makefile.am
+++ b/grub-core/Makefile.am
@@ -210,6 +210,13 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
 endif
 
+if COND_powerpc64le_ieee1275
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
+endif
+
 if COND_sparc64_ieee1275
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/ieee1275/ieee1275.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/sparc64/ieee1275/ieee1275.h
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
index 42443bc..c6e70bb 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -35,6 +35,7 @@ script = {
   name = grub.chrp;
   common = boot/powerpc/grub.chrp.in;
   enable = powerpc_ieee1275;
+  enable = powerpc64le_ieee1275;
 };
 
 script = {
@@ -42,6 +43,7 @@ script = {
   name = bootinfo.txt;
   common = boot/powerpc/bootinfo.txt.in;
   enable = powerpc_ieee1275;
+  enable = powerpc64le_ieee1275;
 };
 
 kernel = {
@@ -87,6 +89,7 @@ kernel = {
 
   mips_loongson_ldflags    = '-Wl,-Ttext,0x80200000';
   powerpc_ieee1275_ldflags = '-Wl,-Ttext,0x200000';
+  powerpc64le_ieee1275_ldflags = '-Wl,-Ttext,0x200000';
   sparc64_ieee1275_ldflags = '-Wl,-Ttext,0x4400';
   mips_arc_ldflags    = '-Wl,-Ttext,$(TARGET_LINK_ADDR)';
   mips_qemu_mips_ldflags    = '-Wl,-Ttext,0x80200000';
@@ -110,6 +113,7 @@ kernel = {
   mips_startup = kern/mips/startup.S;
   sparc64_ieee1275_startup = kern/sparc64/ieee1275/crt0.S;
   powerpc_ieee1275_startup = kern/powerpc/ieee1275/startup.S;
+  powerpc64le_ieee1275_startup = kern/powerpc/ieee1275/startup.S;
   arm_uboot_startup = kern/arm/uboot/startup.S;
   arm_efi_startup = kern/arm/efi/startup.S;
   arm64_efi_startup = kern/arm64/efi/startup.S;
@@ -253,6 +257,9 @@ kernel = {
   powerpc_ieee1275 = kern/powerpc/cache.S;
   powerpc_ieee1275 = kern/powerpc/dl.c;
 
+  powerpc64le_ieee1275 = kern/powerpc/cache.S;
+  powerpc64le_ieee1275 = kern/powerpc/dl.c;
+
   sparc64_ieee1275 = kern/sparc64/cache.S;
   sparc64_ieee1275 = kern/sparc64/dl.c;
   sparc64_ieee1275 = kern/sparc64/ieee1275/ieee1275.c;
@@ -754,6 +761,7 @@ module = {
   enable = emu;
   enable = sparc64_ieee1275;
   enable = powerpc_ieee1275;
+  enable = powerpc64le_ieee1275;
   enable = mips_arc;
   enable = ia64_efi;
   enable = arm_efi;
@@ -855,6 +863,7 @@ module = {
   arm_efi = lib/efi/reboot.c;
   arm64_efi = lib/efi/reboot.c;
   powerpc_ieee1275 = lib/ieee1275/reboot.c;
+  powerpc64le_ieee1275 = lib/ieee1275/reboot.c;
   sparc64_ieee1275 = lib/ieee1275/reboot.c;
   mips_arc = lib/mips/arc/reboot.c;
   mips_loongson = lib/mips/loongson/reboot.c;
@@ -1027,12 +1036,14 @@ module = {
   ieee1275 = commands/ieee1275/suspend.c;
   enable = i386_ieee1275;
   enable = powerpc_ieee1275;
+  enable = powerpc64le_ieee1275;
 };
 
 module = {
   name = escc;
   ieee1275 = term/ieee1275/escc.c;
   enable = powerpc_ieee1275;
+  enable = powerpc64le_ieee1275;
 };
 
 module = {
@@ -1537,6 +1548,8 @@ module = {
   mips = lib/mips/relocator.c;
   powerpc = lib/powerpc/relocator_asm.S;
   powerpc = lib/powerpc/relocator.c;
+  powerpc64le = lib/powerpc/relocator_asm.S;
+  powerpc64le = lib/powerpc/relocator.c;
   xen = lib/xen/relocator.c;
   i386_xen = lib/i386/xen/relocator.S;
   x86_64_xen = lib/x86_64/xen/relocator.S;
@@ -1548,6 +1561,7 @@ module = {
 
   enable = mips;
   enable = powerpc;
+  enable = powerpc64le;
   enable = x86;
   enable = xen;
 };
@@ -1559,8 +1573,10 @@ module = {
   uboot = lib/uboot/datetime.c;
   sparc64_ieee1275 = lib/ieee1275/datetime.c;
   powerpc_ieee1275 = lib/ieee1275/datetime.c;
+  powerpc64le_ieee1275 = lib/ieee1275/datetime.c;
   sparc64_ieee1275 = lib/ieee1275/cmos.c;
   powerpc_ieee1275 = lib/ieee1275/cmos.c;
+  powerpc64le_ieee1275 = lib/ieee1275/cmos.c;
   xen = lib/xen/datetime.c;
   xen_cppflags = '$(CPPFLAGS_XEN)';
 
@@ -1669,6 +1685,7 @@ module = {
   i386_pc = lib/i386/pc/vesa_modes_table.c;
   mips = loader/mips/linux.c;
   powerpc_ieee1275 = loader/powerpc/ieee1275/linux.c;
+  powerpc64le_ieee1275 = loader/powerpc/ieee1275/linux.c;
   sparc64_ieee1275 = loader/sparc64/ieee1275/linux.c;
   ia64_efi = loader/ia64/efi/linux.c;
   arm = loader/arm/linux.c;
@@ -2057,6 +2074,7 @@ module = {
   name = ieee1275_fb;
   ieee1275 = video/ieee1275.c;
   enable = powerpc_ieee1275;
+  enable = powerpc64le_ieee1275;
 };
 
 module = {
diff --git a/include/grub/powerpc64le b/include/grub/powerpc64le
new file mode 120000
index 0000000..9a47ca9
--- /dev/null
+++ b/include/grub/powerpc64le
@@ -0,0 +1 @@
+powerpc
\ No newline at end of file
-- 
1.8.5.3




reply via email to

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