asmlinkage

IRCで、Linuxのkernel source中で使われている"asmlinkage"なるキーワードはなんぞや?と聞かれたので調べ物。

asmlinkage int foo(int a, int b) {
 /* ... */
}

のように使われているらしい。で、調べたところこのキーワードは i386ファミリ向けで、extern "C" __attribute__((regparm(0))) に展開されるようだ。その意味は「関数の引数をレジスタ経由で渡す最適化をしない」だそーです。

などに載ってますね。