Hi, a few people have played with the idea of generating binaries with 32 bit pointers for x86_64 long mode. The goal would be to reap the benefits of the additional and larger registers in long mode without the cost of doubling pointer size. A proof-of-concept patch for binutils/gcc can be found here: http://gcc.gnu.org/ml/gcc/2007-11/msg00633.html The same thing was done on Alpha with ofs1 binaries, which linux supports so there is some kernel supports already in linux to handle this. But not for x86_64. On alpha we have: (processor.h) #define STACK_TOP \ (current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL) On x86 we have: (processor.h) #define TASK_SIZE64 ((1UL << 47) - PAGE_SIZE) #define IA32_PAGE_OFFSET ((current->personality & ADDR_LIMIT_3GB) ? \ 0xc0000000 : 0xFFFFe000) #define TASK_SIZE (test_thread_flag(TIF_IA32) ? \ IA32_PAGE_OFFSET : TASK_SIZE64) #define TASK_SIZE_OF(child) ((test_tsk_thread_flag(child, TIF_IA32)) ? \ IA32_PAGE_OFFSET : TASK_SIZE64) #define STACK_TOP TASK_SIZE Could that be changed to #define TASK_SIZE ((test_thread_flag(TIF_IA32) \ | (current->personality & ADDR_LIMIT_32BIT)) ? \ IA32_PAGE_OFFSET : TASK_SIZE64) #define TASK_SIZE_OF(child) (((test_tsk_thread_flag(child, TIF_IA32)) \ | (child->personality & ADDR_LIMIT_32BIT)) ? \ IA32_PAGE_OFFSET : TASK_SIZE64) MfG Goswin -- To unsubscribe from this list: send the line "unsubscribe linux-x86_64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html