[AMD64] seek(2)

しつこく,seekのネタ.mkfileのAMD64のエントリは次のようになっている.64ビットのmovはmovq命令だし,ソフトウェア割込みにはsyscall命令を使っている.汎用レジスタも増えたし,引数はレジスタ渡しを豪勢に使っているのかと思ったら,A Manual for the Plan 9 assemblerによると,一つ目はレジスタ渡しするが,残りはスタック渡しになる.レジスタ渡しには疑似レジスタRARGを使う(実際はBPを使うみたい).引数は8バイトアライメントでスタックに積まれる.RARGでレジスタ渡しされる分の空間も空けられているので,システムコールする場合は,その空間にRARGの値をmovqしている.システムコール番号はRARGで渡す.

		case amd64
			if(~ $i seek)
				echo TEXT _seek'(SB)', 1, '$0'
			if not
				echo TEXT $i'(SB)', 1, '$0'
			echo MOVQ RARG, 'a0+0(FP)'
			echo MOVQ '$'$n, RARG
			echo SYSCALL
			echo RET

seekは_seekに置き換えているんだけど...

肝心のカーネルのソースが見当たらないなぁ.どこにあるの??