David S. Miller writes: > If you have to hide the operation so deeply like this, maybe you can > do something similar to sparc64, by explicitly doing the per-cpu fixed > register and offsets, and still get the single instruction relocs that > powerpc can do for up to 64K by doing something like: > > &per_cpu_blah - &per_cpu_base > > to calculate the offset.
I don't know how to tell gcc that (&per_cpu_blah - &per_cpu_base) is a quantity that the linker can compute and that will fit into a 16-bit offset. If I use an inline asm, then I have to generate the address and let gcc dereference it, because __get_cpu_var is used both as an lvalue and an rvalue. That means two instructions where one would suffice. So there doesn't seem to be a way to get the optimal code, unless the gcc folks are willing to add a -fkernel or something for us. :) Paul. - To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
