User: Password:
|
|
Subscribe / Log in / New account

The x32 system call ABI

The x32 system call ABI

Posted Apr 15, 2012 21:16 UTC (Sun) by tenchiki (guest, #53749)
Parent article: The x32 system call ABI

I hope the people developing the x32 ABI have looked at what worked and what didn't work in the IRIX n32 ABI; it had a lot of the same requirements and issues. IRIX 64-bit systems ran %99+ of userspace as n32 for the same reasons mentioned (most apps don't need >2G address space, and 32bit pointers used the cache better).
One of the notable specs for the n32 ABI that don't seem to have been mentioned for x32 is to make the long datatype to be 64bits:

ABI: o32 n32 64
int 32 32 32
long 32 64 64
pointer 32 32 64
(all other types same size)


(Log in to post comments)

The x32 system call ABI

Posted Apr 15, 2012 23:05 UTC (Sun) by khim (subscriber, #9252) [Link]

One of the notable specs for the n32 ABI that don't seem to have been mentioned for x32 is to make the long datatype to be 64bits

Why would anyone want this? x32 uses ILP32 model to minimize difference between IA32 mode and x32 mode. Any other choice just looks… strange.

The x32 system call ABI

Posted Apr 16, 2012 6:56 UTC (Mon) by paulj (subscriber, #341) [Link]

Because it lets you have access to the 64bit arithmetic capabilities of the hardware, even when you don't need the 64bit addressing capabilities.

The x32 system call ABI

Posted Apr 16, 2012 9:00 UTC (Mon) by khim (subscriber, #9252) [Link]

What's wrong with using long long for that?

The x32 system call ABI

Posted Apr 16, 2012 11:07 UTC (Mon) by paulj (subscriber, #341) [Link]

Hmm, good point. Actually, I think in IRIX n32 it was indeed "long long" that was 64bit! (Making 64bit long risked breaking software that assumed sizeof(long) == sizeof(void *) and tried to store longs in pointers).


Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds