rpi_start.Sを読む (第9回)
今回読むのは次の部分です。
これで終わりです。だと面白くないので、ちょっと振り返ってみましょう。
第6回から第8回までは、第3回でゼロに初期化したL1テーブルを設定する一連の処理でした。
処理は、
mmu_init_tableは、次のようなテーブルでした。
これが、L1テーブルに格納されるころには次のようになり、
L1テーブルは次のように設定されたということになります。
186 .unreq va 187 .unreq pa 188 .unreq n_sec 189 .unreq attr 190 .unreq itable 191 .unreq l1table 192 .unreq l1sfrmこれは、157行目からの
157 l1table .req r0 158 va .req r1 159 pa .req r2 160 n_sec .req r3 161 attr .req r4 162 itable .req r5 163 l1sfrm .req r6に対して、反対のことをしているわけですね。
これで終わりです。だと面白くないので、ちょっと振り返ってみましょう。
第6回から第8回までは、第3回でゼロに初期化したL1テーブルを設定する一連の処理でした。
処理は、
- mmu_init_tableに設定された三つのva, pa, n_sec, attrによるループ
- n_secによるループ
mmu_init_tableは、次のようなテーブルでした。
va | pa | nsec | attr |
---|---|---|---|
0x0 | 0x0 | 0x643033 | 0x412 |
0xC0000000 | 0x0 | 0x643033 | 0x041E |
0xF2000000 | 0x20000000 | 0x010FFFFF | 0x0412 |
va | pa | n_sec |
---|---|---|
0x0000 | 0x00000412 | 0x06 |
0x2000 | 0x0000041E | 0x06 |
0x3C80 | 0x20000412 | 0x10 |
L1 offset | L1 entry |
---|---|
0000 | 0x00000412 |
0004 | 0x00000412 |
0008 | 0x00000412 |
000C | 0x00000412 |
0010 | 0x00000412 |
0014 | 0x00000412 |
0018 | 0x00000000 |
001C | 0x00000000 |
(中略) | |
1FF8 | 0x00000000 |
1FFC | 0x00000000 |
2000 | 0x0000041E |
2004 | 0x0000041E |
2008 | 0x0000041E |
200C | 0x0000041E |
2010 | 0x0000041E |
2014 | 0x0000041E |
2018 | 0x00000000 |
201C | 0x00000000 |
(中略) | |
3C78 | 0x00000000 |
3C7C | 0x00000000 |
3C80 | 0x20000412 |
3C84 | 0x20000412 |
3C88 | 0x20000412 |
3C8C | 0x20000412 |
3C90 | 0x20000412 |
3C94 | 0x20000412 |
3C98 | 0x20000412 |
3C9C | 0x20000412 |
3CA0 | 0x20000412 |
3CA4 | 0x20000412 |
3CA8 | 0x20000412 |
3CAC | 0x20000412 |
3CB0 | 0x20000412 |
3CB4 | 0x20000412 |
3CB8 | 0x20000412 |
3CBC | 0x20000412 |
3CC0 | 0x00000000 |
3CC4 | 0x00000000 |
(以下略) |
コメント(0件)
- TB-URL http://www.tokuda.net/diary/0811/tb/