qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-2.0 V3] tests/acpi-test: do not run iasl on


From: Marcel Apfelbaum
Subject: Re: [Qemu-devel] [PATCH for-2.0 V3] tests/acpi-test: do not run iasl on big endian machines
Date: Sun, 23 Mar 2014 15:00:51 +0200

On Sun, 2014-03-23 at 12:48 +0000, Peter Maydell wrote:
> On 23 March 2014 12:32, Marcel Apfelbaum <address@hidden> wrote:
> > On Sun, 2014-03-23 at 12:14 +0000, Peter Maydell wrote:
> >> On 23 March 2014 09:49, Michael S. Tsirkin <address@hidden> wrote:
> >> > At this point I'm confused.
> >> > If iasl compiler is broken, we should detect and fix that.
> >> > It might be ok to just detect endian-ness as a quick work-around.
> >> > BTW configure already has code to detect endian-ness:
> >> > if test "$bigendian" = "yes" ; then
> >> >   echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
> >> > fi
> >>
> >> That's the endianness of the machine we're compiling QEMU
> >> for, not the endianness of the machine we're compiling QEMU
> >> on. If for instance you're on x86_64 cross-compiling for PPC
> >> then HOST_WORDS_BIGENDIAN is true, but the iasl you use
> >> in the build process will be running on a little endian machine.
> >
> > Hi Peter, are you sure about this?
> > I saw the 'target_bigendian' that does what you described above.
> > $bigendian is the result of a little C program that checks *host's* 
> > endian-ness.
> > Of course I might have missed something.
> 
> "host" for QEMU means "the machine QEMU will run on"
> (as opposed to "target" meaning "the machine QEMU is emulating").
> Those can both be different from the machine you're building on.
> Example: you can be on an x86_64 machine cross-compiling a
> qemu-system-mips intended to run on PPC hosts:
>  build system: x86_64 (we don't currently try to identify its endianness)
>  host system: PPC ("$bigendian" is set to endianness)
>  target system: mips ("$target_bigendian" is set to endianness)
> 
> bigendian is set by cross-compiling a test object, which produces
> a PPC object file that we then examine to see which endianness
> the PPC system we're building for is.
> target_bigendian is set for the target machine by just hard-coding it --
> in this case it would be set because 'mips' is a bigendian target.
> The iasl we use in the build process is the x86_64 native binary,
> so neither $bigendian nor $target_bigendian are correct.

Thanks for the detailed answer! It really helped!
I missed the build machine != host machine != target machine :(

Marcel

> 
> thanks
> -- PMM






reply via email to

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