lkml.org 
[lkml]   [2006]   [Jun]   [12]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
FromAndi Kleen <>
SubjectRe: broken local_t on i386
DateTue, 13 Jun 2006 05:36:01 +0200
On Monday 12 June 2006 21:15, Christoph Lameter wrote:
> On Mon, 12 Jun 2006, Andi Kleen wrote:
> 
> > > I thought you had some funky segment registers on i386 and x86_64. Cant
> > > they be switched on context switch? If an inc/dec could work relative to
> > > those then you would not need a virtual mapping.
> > 
> > The segment register needs an offset. So you need the linker to generate
> > the offset from the base of the per cpu segment somehow. At compile time the 
> > address is not known so it cannot be done then.
> 
> Define something like a big struct and use offsetof?

That is how the basic architecture specific PDA works (asm/pda.h)

But i don't see a good way to define a big struct for asm/percpu.h

Preprocessing would be too slow and getting all people to put
their per CPU variables into a single header also doesn't seem
like a good idea.

> 
> So the compiler is not able to generate an offset to the beginning of a 
> data segment? 

It's an assembler/linker issue.

-Andi (who is really surprised people make such a big deal out of 
two instructions)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-06-13 05:54    [from the cache]
©2003-2008