[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Discuss-gnuradio] x86_64, etc,
Eric Blossom <=