Re: [PATCH 3/4] x86_64: Fold pda into per cpu area
From: Jeremy Fitzhardinge
Date: Wed Jun 04 2008 - 09:59:00 EST
Mike Travis wrote:
Jeremy Fitzhardinge wrote:
Mike Travis wrote:
* Declare the pda as a per cpu variable.
* Make the x86_64 per cpu area start at zero.
* Since the pda is now the first element of the per_cpu area, cpu_pda()
is no longer needed and per_cpu() can be used instead. This also
makes
the _cpu_pda[] table obsolete.
* Since %gs is pointing to the pda, it will then also point to the
per cpu
variables and can be accessed thusly:
%gs:[&per_cpu_xxxx - __per_cpu_start]
The above is only a partial story (I folded the two patches but didn't
update the comments correctly.] The variables are already offset from
__per_cpu_start by virtue of the .data.percpu section being based at
zero. Therefore only the %gs register needs to be set to the base of
each cpu's percpu section to resolve the target address:
%gs:&per_cpu_xxxx
Oh, good. I'd played with trying to make that work at one point, and
got lost in linker bugs and/or random version-specific strangeness.
J
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/