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

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.

Paolo

  reply	other threads:[~2010-10-12 14:58 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 [this message]
2010-10-12 15:12               ` malc
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=4CB47796.1010101@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=av1474@comtv.ru \
    --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).