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
next prev 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).