diff --git a/ChangeLog b/ChangeLog index 36d1d941d..d330978fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-12-09 Vladimir Serbinenko + + Add missing compile and link options for sparc64-emu. + 2013-12-09 Vladimir Serbinenko Implement sparc64 trampolines (needed for sparc64-emu). diff --git a/conf/Makefile.common b/conf/Makefile.common index 47f3b9a03..d6da66cf5 100644 --- a/conf/Makefile.common +++ b/conf/Makefile.common @@ -10,6 +10,10 @@ if COND_sparc64_ieee1275 CFLAGS_PLATFORM += -mno-app-regs LDFLAGS_PLATFORM = -Wl,-melf64_sparc -mno-relax endif +if COND_sparc64_emu + CFLAGS_PLATFORM += -mno-app-regs + LDFLAGS_PLATFORM = -Wl,--no-relax +endif if COND_arm CFLAGS_PLATFORM += -mthumb-interwork CCASFLAGS_PLATFORM = -mthumb-interwork diff --git a/configure.ac b/configure.ac index 1e329c67d..0abbb9927 100644 --- a/configure.ac +++ b/configure.ac @@ -176,6 +176,10 @@ if test x$platform != xemu ; then esac fi +if test x"$target_cpu-$platform" = xsparc64-emu ; then + target_m64=1 ; +fi + case "$target_os" in windows* | mingw32*) target_os=cygwin ;; esac @@ -345,6 +349,11 @@ AC_SYS_LARGEFILE # Identify characteristics of the host architecture. unset ac_cv_c_bigendian +if test x"$target_cpu-$platform" = xsparc64-emu ; then + CFLAGS="$CFLAGS -m64" + HOST_CFLAGS="$HOST_CFLAGS -m64" +fi + AC_C_BIGENDIAN AC_CHECK_SIZEOF(void *) AC_CHECK_SIZEOF(long) @@ -820,7 +829,7 @@ AC_SUBST(TARGET_LDFLAGS_OLDMAGIC) LDFLAGS="$TARGET_LDFLAGS" -if test "$target_cpu" = x86_64; then +if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then # Use large model to support 4G memory AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [ CFLAGS="$TARGET_CFLAGS -m64 -mcmodel=large" @@ -830,6 +839,8 @@ if test "$target_cpu" = x86_64; then ]) if test "x$grub_cv_cc_mcmodel" = xyes; then TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large" + elif test "$target_cpu-$platform" = sparc64-emu; then + TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany" fi fi @@ -1585,6 +1596,7 @@ AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips]) AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc]) 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_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel]) AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])