Patchwork qemu: Fix cross compilation for mipsel

login
register
mail settings
Submitter James Hogan
Date Aug. 27, 2013, 4:02 p.m.
Message ID <1377619333-16062-1-git-send-email-james.hogan@imgtec.com>
Download mbox | patch
Permalink /patch/270151/
State New
Headers show

Comments

James Hogan - Aug. 27, 2013, 4:02 p.m.
The configure script was setting HOST_WORDS_BIGENDIAN for all $cpu =
mips|mips64 when cross compiling, since endianness cannot be detected by
running a test program. This includes little endian MIPS though. It
didn't cause any build errors but does prevent QEMU from working
correctly. Instead, detect the endianness similar to how we do for ARM,
by checking for the __MIPSEB__ builtin processor definition.

This is from a hunk in the "[PATCH 8/12] KVM/MIPS: Enable KVM/MIPS for
MIPS targets. Add MIPS GIC code to the build" patch by Sanjay Lal [1].

[1] https://patchwork.kernel.org/patch/2207251/

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Andreas Färber <afaerber@suse.de>
Cc: Sanjay Lal <sanjayl@kymasys.com>
Cc: qemu-stable@nongnu.org
---
 configure | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
Richard Henderson - Aug. 27, 2013, 6:39 p.m.
On 08/27/2013 09:02 AM, James Hogan wrote:
> The configure script was setting HOST_WORDS_BIGENDIAN for all $cpu =
> mips|mips64 when cross compiling, since endianness cannot be detected by
> running a test program. This includes little endian MIPS though. It
> didn't cause any build errors but does prevent QEMU from working
> correctly. Instead, detect the endianness similar to how we do for ARM,
> by checking for the __MIPSEB__ builtin processor definition.
> 
> This is from a hunk in the "[PATCH 8/12] KVM/MIPS: Enable KVM/MIPS for
> MIPS targets. Add MIPS GIC code to the build" patch by Sanjay Lal [1].

Redundant with Mike Frysinger's more general patch,

http://patchwork.ozlabs.org/patch/256001/


r~
James Hogan - Aug. 28, 2013, 8:25 a.m.
On 27/08/13 19:39, Richard Henderson wrote:
> On 08/27/2013 09:02 AM, James Hogan wrote:
>> The configure script was setting HOST_WORDS_BIGENDIAN for all $cpu =
>> mips|mips64 when cross compiling, since endianness cannot be detected by
>> running a test program. This includes little endian MIPS though. It
>> didn't cause any build errors but does prevent QEMU from working
>> correctly. Instead, detect the endianness similar to how we do for ARM,
>> by checking for the __MIPSEB__ builtin processor definition.
>>
>> This is from a hunk in the "[PATCH 8/12] KVM/MIPS: Enable KVM/MIPS for
>> MIPS targets. Add MIPS GIC code to the build" patch by Sanjay Lal [1].
> 
> Redundant with Mike Frysinger's more general patch,
> 
> http://patchwork.ozlabs.org/patch/256001/

Even better. Thanks for pointing that out. I've added my tested-by.

Cheers
James

Patch

diff --git a/configure b/configure
index 0a55c20..a765a9f 100755
--- a/configure
+++ b/configure
@@ -1415,7 +1415,12 @@  case "$cpu" in
       bigendian=yes
     fi
   ;;
-  hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
+  mips|mips64)
+    if check_define __MIPSEB__; then
+      bigendian=yes
+    fi
+  ;;
+  hppa|m68k|ppc|ppc64|s390|s390x|sparc|sparc64)
     bigendian=yes
   ;;
 esac