qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: malc <av1474@comtv.ru>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 08/39] provide portable sizeof(long) test
Date: Tue, 12 Oct 2010 19:12:40 +0400 (MSD)	[thread overview]
Message-ID: <alpine.LNX.2.00.1010121906310.5082@linmac> (raw)
In-Reply-To: <4CB47796.1010101@redhat.com>

On Tue, 12 Oct 2010, Paolo Bonzini wrote:

> On 10/12/2010 04:41 PM, malc wrote:
> > > > >  Gives wrong results on Win64.
> > >  
> > >  Then it's not HOST_LONG_BITS, it's HOST_POINTER_BITS.
> > 
> > Not quite, [s]size_t/ptrdiff_t are 64 bits wide udner Win64, little
> > to do with pointers.
> 
> Before (on Win64): sizeof(long) == 4, HOST_LONG_BITS == 64
> 
> After: sizeof(long) == 4, HOST_LONG_BITS == 32
> 
> If you say HOST_LONG_BITS should be 64, then I say it is poorly named: it
> represents sizeof(void*) * CHAR_BIT and should be named HOST_POINTER_BITS.
> 
> BTW, HOST_LONG_BITS is used mostly for user-mode emulation, which does not
> matter for Win64.  In exec-all.h it is used to second-guess
> sizeof(tcg_target_long), which would be the size of a pointer.  However,
> it is safe to give a conservative value based on sizeof(long).
> 
> Finally, in other places it is definitely used to mean sizeof(long).  Even
> though the softmmu is probably not IL32P64-clean, there you have this:
> 
> #if HOST_LONG_BITS == 32 && TARGET_LONG_BITS == 32
> #define CPU_TLB_ENTRY_BITS 4
> #else
> #define CPU_TLB_ENTRY_BITS 5
> #endif
> 
> typedef struct CPUTLBEntry {
>     /* bit TARGET_LONG_BITS to TARGET_PAGE_BITS : virtual address
>        bit TARGET_PAGE_BITS-1..4  : Nonzero for accesses that should not
>                                     go directly to ram.
>        bit 3                      : indicates that the entry is invalid
>        bit 2..0                   : zero
>     */
>     target_ulong addr_read;
>     target_ulong addr_write;
>     target_ulong addr_code;
>     /* Addend to virtual address to get host address.  IO accesses
>        use the corresponding iotlb value.  */
>     unsigned long addend;
>     /* padding to get a power of two size */
>     uint8_t dummy[(1 << CPU_TLB_ENTRY_BITS) -
>                   (sizeof(target_ulong) * 3 +
>                    ((-sizeof(target_ulong) * 3) & (sizeof(unsigned long) - 1)) + 
>                    sizeof(unsigned long))];
> } CPUTLBEntry;
> 
> _As things are now_ it is more correct to use sizeof(long), or at
> least more conservative.
> 
> I can certainly change it to sizeof(void*) in v2, even though I don't think
> it's a good idea, but it's your call as a maintainer.
> 

Bottom line: QEMU assumes that long is large enough to hold a pointer,
this assumption is wrong, and your patch is wrong (not because it 
miscalculates size of ABI long) but because of the assumptions current
code has. Whether two wrongs makes right is an open question, currently
Win64 isnot supported in any shape or form, even though Filip Navarra
once did a port[1] which never went into mainline.

[1] http://marc.info/?l=qemu-devel&m=124912692531724&w=2

-- 
mailto:av1474@comtv.ru

  reply	other threads:[~2010-10-12 15:20 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-12 13:00 [Qemu-devel] [PATCH 00/39] Make configure command line autoconf-compatible Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 01/39] default compilation tools to environment variables Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 02/39] default make and install " Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 03/39] move feature variables to the top Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 04/39] fix sparse support (?) Paolo Bonzini
2010-10-12 19:02   ` Blue Swirl
2010-10-13  7:15     ` Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 05/39] test cc with the complete set of chosen flags Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 06/39] include failed source file in config.log Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 07/39] do not pass bogus $(SRC_PATH) include paths to cc during configure Paolo Bonzini
2010-10-12 19:09   ` Blue Swirl
2010-10-13  7:25     ` Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 08/39] provide portable sizeof(long) test Paolo Bonzini
2010-10-12 13:47   ` malc
2010-10-12 14:31     ` Paolo Bonzini
2010-10-12 14:38       ` malc
2010-10-12 14:40         ` Paolo Bonzini
2010-10-12 14:41           ` malc
2010-10-12 14:58             ` Paolo Bonzini
2010-10-12 15:12               ` malc [this message]
2010-10-12 15:32                 ` Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 09/39] fix spelling of $pkg_config, move default together with other cross tools Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 10/39] do not default to non-prefixed pkg-config when cross compiling Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 11/39] reorganize sdl-config tests Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 12/39] move --srcdir detection earlier Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 13/39] properly detect compiler in tests/Makefile Paolo Bonzini
2010-10-12 19:04   ` Blue Swirl
2010-10-13  7:19     ` Paolo Bonzini
2010-10-13 19:05       ` Blue Swirl
2010-10-12 13:00 ` [Qemu-devel] [PATCH 14/39] remove HOST_CC mention from roms/{sea, vga}bios/config.mak Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 15/39] let --host-cc slide into oblivion Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 16/39] introduce CFLAGS= and LDFLAGS= configure command-line options Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 17/39] introduce CPPFLAGS configure variable Paolo Bonzini
2010-10-12 19:11   ` Blue Swirl
2010-10-12 13:00 ` [Qemu-devel] [PATCH 18/39] add autoconfy alias CC= for --cc Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 19/39] add CPP variable Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 20/39] add autoconfy aliases MAKE=/INSTALL= for --make and --install Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 21/39] add autoconfy aliases --with-* for audio library options Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 22/39] make trace options use autoconfy names Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 23/39] deprecate --audio-card-list Paolo Bonzini
2010-10-12 13:49   ` malc
2010-10-12 14:30     ` Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 24/39] add autoconfy alias --enable-audio-drivers alias for --audio-drv-list Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 25/39] add autoconfy alias --enable-block-drivers for --block-drv-whitelist Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 26/39] add libtooly alias --enable-static for --static Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 27/39] add autoconfy alias --with-sysroot for --interp-prefix Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 28/39] rename interp_prefix to sysroot Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 29/39] add autoconfy alias --enable-targets for --target-list Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 30/39] add autoconfy alias --with-headers for --kerneldir Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 31/39] add autoconfy alias --srcdir= for --source-path Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 32/39] rename SRC_PATH to srcdir Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 33/39] rename source_path " Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 34/39] add autoconfy --host= option deprecating --cross-prefix Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 35/39] add autoconfy --build= option to be used instead of undocumented --cpu Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 36/39] add autoconfy --with-arch= option, compatible with --sparc-cpu Paolo Bonzini
2010-10-12 19:47   ` Blue Swirl
2010-10-13  7:32     ` Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 37/39] make more options "standard" Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 38/39] provide a more gnuish default sysroot Paolo Bonzini
2010-10-12 13:00 ` [Qemu-devel] [PATCH 39/39] use host triplets for feature detection Paolo Bonzini
2010-10-12 13:22 ` [Qemu-devel] [PATCH 00/39] Make configure command line autoconf-compatible malc
2010-10-12 13:26   ` Paolo Bonzini
2010-10-12 13:32     ` malc
2010-10-12 14:30       ` Anthony Liguori
2010-10-12 14:34         ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LNX.2.00.1010121906310.5082@linmac \
    --to=av1474@comtv.ru \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).