Add a new architecture to the build process Signed-off-by: Ram Pai <linux...@us.ibm.com> Signed-off-by: Tomohiro B Berry <tbbe...@us.ibm.com> Signed-off-by: Thomas Falcon <tlfal...@linux.vnet.ibm.com> --- 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 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel