discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] x86_64, etc


From: Eric Blossom
Subject: [Discuss-gnuradio] x86_64, etc
Date: Sun, 3 Jul 2005 00:09:23 -0700
User-agent: Mutt/1.5.6i

I've just checked a bunch of changes into CVS related to making the
x86_64 build work.  Tomorrow, I plan to test these changes on OS/X.

In the bad news department, I have definitely broken the Cygwin and
MinGW builds.  Someone who cares about them and can test them should
visit config/gr_python.m4 and config/gr_no_undefined.m4 and submit a
patch to re-enable the search for libpython, ensuring that the search
(and related dependency introduction) only occurs when building
windows DLL's.

Other x86_64 notes: 

The mc4020 driver looks like it needs a bit of TLC.  Everything else
looks OK, at least under SuSE 9.3 Professional.  I ensure that $libdir
ends in lib64 when building on x86_64.  This is definitely the right
answer on SuSE and from doing some Googling, looks like it should work
on the other x86_64 GNU/Linux distributions.  If you've got an x86_64
box, please update and test.

Your PYTHONPATH will need to be set to something like:

  $ export PYTHONPATH=/usr/local/lib64/python2.4/site-packages

Also, it's a good idea to add /usr/local/lib64/pkgconfig to
PKG_CONFIG_PATH.   Both of these assume that you're using the default
/usr/local prefix.  Modify as necessary for other prefixes.


The x86_64 architecture is very cool.  As many of you probably know,
you've got twice as many general registers (16 64-bit regs) and twice
as many SSE regs (16 128-bit XMM regs) as the x86 architecture.  The
function calling sequence passes up to 6 integers plus pointers in the
general regs and up to 8 floats/doubles in the XMM regs.  Return
values are in %rax/%rdx or %xmm0/%xmm1 depending on type.  The
compiler uses the scalar SSE instructions for floating point, though
the X87 instructions are still available. 

In a bit of a flashback to the 8088 days, the compiler supports 4
memory models: small, medium, large and kernel.  Small limits your
code + data to the bottom 2GB of the 64-bit address space (this is the
default).  Medium gives you 2GB of (code + small data) and 16EB of
large data.  Large gives you 16EB combined.  Kernel runs in the top
2GB of the 64-bit address space, and there are position-independent
(PIC) variants for most modes.  The small and kernel modes are fastest
because you can access your code and data with 32-bit offsets.  The
other modes require additional instructions to generate 64-bit
offsets.  Details: http://www.x86-64.org/documentation/abi.pdf


I'd appreciate it if some of you could update everything from CVS and
try building.  Be sure to update gr-build too, there are important
changes in buildit.

Thanks!
Eric




reply via email to

[Prev in Thread] Current Thread [Next in Thread]