Questions on x86-64/32 kernel w/ large arrays..

Brian Dobbins brian.dobbins at
Thu May 29 22:57:37 EDT 2003

Hi guys,

  Could anyone with a lot more kernel knowledge than myself fill me in...?  
Recalling that with 32-bit systems, the default linux behaviour was to 
load system stuff around the 1GB mark, making it impossible to 
(statically) allocate arrays larger than that without modifying the kernel 

  (See: )

  .. Now with the x86-64 kernel, as supplied by GinGin64, in
'include/asm-x86-64/processor.h', I see the following:

#define TASK_UNMAPPED_32 0xa0000000
#define TASK_UNMAPPED_BASE      \
        ((current->thread.flags & THREAD_IA32) ? TASK_UNMAPPED_32 : 

  .. Does this mean that in 32-bit mode on the Opteron, I automatically 
get bumped up from the 1GB limit to nearly 2.5GB (0xa0000000)?  And, more 
importantly, since the OS itself is in 64-bit mode, can I alter this 
setting to allow myself to have very nearly (or all!) 4GB of space for a 
static allocation for a 32-bit executable?

  (Ordinarily I'd run in 64-bit mode, but someone I know is looking to 
port their code from the old Digital FORTRAN to the Intel compiler, which 
limits us to a 32-bit executable.)

  Any ideas?  Thoughts?  Am I totally off base here?  (I don't poke around
the kernel much!)  I'll most likely send this to the kernel lists if I
don't get any luck here, but since it's not urgent, I thought I'd ask the
very knowledgeable people here first.  :-)

  - Brian

Beowulf mailing list, Beowulf at
To change your subscription (digest mode or unsubscribe) visit

More information about the Beowulf mailing list