Messages in this thread | | | From | Arnd Bergmann <> | Subject | Re: [PATCH 08/10] Use __kernel_ulong_t in struct msqid64_ds | Date | Fri, 18 May 2012 21:21:02 +0000 |
| |
On Friday 18 May 2012, H.J. Lu wrote: > Since x32 uses the same kernel interface as x86-64 with a few > exceptions. The current kernel header files with > > #ifdef __x86_64__ > # define __BITS_PER_LONG 64 > #else > # define __BITS_PER_LONG 32 > #endif > > #if __BITS_PER_LONG == 64 > Define x86-64 types > #endif > > work fine for x32 even if long for x32 is 32 bits. If __BITS_PER_LONG > is changed to 32 for x32, many types in kernel header files will be > wrong for x32. >
A lot of things are broken if __BITS_PER_LONG is set to 64 in x32 user space. It was specifically introduced to get around places in exported headers that incorrectly used '#ifdef CONFIG_64BIT' to define a user space structure, so that we can depend on whatever the user sees in bitmasks and other data structures.
Arnd
| |