On Tue, 2008-01-15 at 10:43 +0800, Xu, Anthony wrote:
> > Here is the concrete example:
> >       * guest writes to MMIO
> >       * KVM passes MMIO information (physical address, number of
> >         bytes, value) to qemu
>               The value is saved in memory, is it bigendian or
> littleendian?

The value in memory is copied from the value in the register when the
guest was executing, so its format is probably dependent on the state of
a control register.

> >       * Qemu knows from the address that this access is for a
> >         passthough device, a special case the administrator has
> >       pre-configured * Qemu does mmap(/dev/mem), and writes "length"
> 
>               When qemu writes value, Can qemu know what
> mode(bigendian/littleendian it is running)?
>       Qemu can run on bigendian in IA64.

/usr/include/endian.h will #define __BYTE_ORDER as either
__LITTLE_ENDIAN or __BIG_ENDIAN. I have no idea if this is defined in a
standard or is glibc-specific.

You could also test at runtime with a construct like:
        union {
                int i;
                char c[4];
        } u;
        
        u.i = 1;
        if (u.c[0] == 1) {
                ...
        } else {
                ...
        }

-- 
Hollis Blanchard
IBM Linux Technology Center


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to