qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paul Brook <paul@codesourcery.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH, RFC] More than 2G of memory on 64-bit hosts
Date: Tue, 26 Jun 2007 14:54:16 +0100	[thread overview]
Message-ID: <200706261454.16852.paul@codesourcery.com> (raw)
In-Reply-To: <cd8ecdef0706251903v6b15eb44r6045452fe271bd13@mail.gmail.com>

> With proper support from the compiler, it's theoretically possible on
> x86-64 systems to use 32-bit pointers in long mode. I'm not aware of any 
systems that use this, however.

Vxworks does. We just finished doing the gcc port. From a software point of 
view ILP32 mode on a 64-bit CPU/OS is indistinguishable from regular 32-bit 
mode.
>  I'm not sure how big longs are on those systems, but I
> wouldn't be surprised if longs are 32-bits or 64-bits and pointers
> 128-bits.

I really hope not.

> > > One from me, if you like... Just don't use the "unsigned long" type.
> > > The intptr_t type would be better (it's 32-bit on 32-bit systems and
> > > 64-bit on 64-bit systems).
> >
> > Nice, I didn't know about that. But how is this any different from
> > unsigned long?

The story behind this is that ISO C89 requires that "long" be at least as big 
as a pointer (ie. "void *"). The actual requirement is that it be possible to 
store a pointer in a standard integer type, and "long" is the largest 
standard integer type.

Unfortunately C99 relaxed this requirement, and allowed abominations like the 
win64 ABI.

This means you have a choice: Write standard conforming code (long) that works 
on all known systems except win64, or use features that do't exist on many 
systems. IIRC C99 types like intptr_t are not supported on several fairly 
common unix systems.

It's ironic that the one system that requires C99 features explicitly does not 
(and probably never will) have full C99 support.

Paul

  parent reply	other threads:[~2007-06-26 13:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-25 20:16 [Qemu-devel] [PATCH, RFC] More than 2G of memory on 64-bit hosts Blue Swirl
2007-06-25 20:26 ` Michal Schulz
2007-06-25 20:52   ` Blue Swirl
2007-06-25 21:08     ` Michal Schulz
2007-06-26  2:03     ` Karl Magdsick
2007-06-26  8:00       ` Thiemo Seufer
2007-06-26 13:54       ` Paul Brook [this message]
2007-06-27 10:26         ` Blue Swirl
2007-06-27 10:32           ` Julian Seward
2007-06-27 11:10             ` Thiemo Seufer
2007-06-27 11:20               ` Julian Seward
2007-06-27 12:18                 ` Marius Groeger
2007-06-27 12:32                   ` Thiemo Seufer
2007-07-06 19:20           ` Rob Landley
2007-06-29 14:26       ` Gwenole Beauchesne
2007-06-25 20:28 ` Thiemo Seufer
2007-06-25 20:53   ` Blue Swirl

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=200706261454.16852.paul@codesourcery.com \
    --to=paul@codesourcery.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).