On Wed, Mar 2, 2011 at 11:40 AM, David Miller <davem@xxxxxxxxxxxxx> wrote: > > We purposely don't do that "page table entry typedef'd to aggregate" stuff > on sparc32 because otherwise such values get passed on the stack. > > Architectures can currently avoid this bad code generation for the > page table case, but with this new code they won't be able to avoid > pass-by-value. Well, the thing is, on architectures that _can_ pass by value, it avoids one indirection. And if you do pass it on stack, then the code generated will be the same as if we passed a pointer. So sparc may not be able to take advantage of the optimization, but I don't think the code generation would be worse. For the page table case, we don't have that kind of trade-off: the trade-off there is literally just between "pass in registers, or pass on stack". Here the trade-off is "pass as an aggregate value or pass as a pointer to an aggregate value". That said, since I suspect that the main user will always just get inlined (ie the helper function that actually fetches the pointers), I suspect even sparc will see the advantage of the pass-by-value model. But you might want to actually test the difference and look at the code generation. Linus -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>