FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

テキストを読んで、xv6のブートプロセスを理解する(2)

bootmain.cに入ると、ディスクからデータのロードを始める。

github.com

ここで注目すべきは、カーネルのプログラムとしては、テキストは0x80100000から始まることを想定していることだ。 だがこんな場所にメモリは存在しておらず、ページングを利用して0x00100000にマップされる。

しかし、カーネルが実行される前はページングが有効になっていないため、kernel.ldのマッピングの機能を用いて、0x80100000に存在しているものの、物理アドレス0x01000000にロードされるように工夫がされている。

    /* Link the kernel at this address: "." means the current address */
        /* Must be equal to KERNLINK */
    . = 0x80100000;

    .text : AT(0x100000) {
        *(.text .stub .text.* .gnu.linkonce.t.*)
    }

この、AT(0x100000)の部分さね。