linux-0.01 読み (6)

イマサラですが

という事が判明。386 なソレをいくつかチェックしてソースを見る事に。

上記マニュアルを参考にしつつ再確認な方向。

さ、読む

とは言え、コメントにあるように

  • 0x7c00 に load されて
  • 0x9000 にコピィ
  • その後、0x1000 にコピィして云々

との事なんですがどうなのか。

とりあえず

init/main.c の main() が呼び出される仕掛けが分からん。boot/head.s な after_page_tables で $main というナニが push されてるのは承知してるんですが、setup_paging の末端の以下の処理を経て

	orl $0x80000000,%eax
	movl %eax,%cr0		/* set paging (PG) bit */
	ret			/* this also flushes prefetch-queue */

prefetch-queue が flush された結果どうなるかが分からない。IA32_Arh_Dev_Man_Vol3_i.pdf の 9 章とか見てるんですが糸口ナシ。