rpi_start.Sを読む (第13回)
いよいよMMUもONになり、大詰めに近づいてまいりました。
今回読むのは次の部分です。
243行目のmov r0, r0でリードが完了するのを待つ、とコメントにあります。こういうのは慣用句なんでしょうかね。
進みましょう。
ついに、rpi_start.Sを読み切りました!
今回読むのは次の部分です。
239 /*
240 * Ensure that the coprocessor has finished turning on the MMU.
241 */
242 mrc p15, 0, r0, c0, c0, 0 /* Read an arbitrary value. */
243 mov r0, r0 /* Stall until read completes. */
244
245 /*
246 * Jump to start in locore.S, which in turn will call initarm and main.
247 */
248 mov pc, lr
249 nop
250 nop
251 nop
252 nop
さっそく進めましょう。
239 /*
240 * Ensure that the coprocessor has finished turning on the MMU.
241 */
242 mrc p15, 0, r0, c0, c0, 0 /* Read an arbitrary value. */
243 mov r0, r0 /* Stall until read completes. */
MMUがONになったことをmrcで値を読み込んで確認します。マニュアルによると、このmrc操作はRead Main ID Registerと書いてあります。プロセッサの情報をとる命令のようです。243行目のmov r0, r0でリードが完了するのを待つ、とコメントにあります。こういうのは慣用句なんでしょうかね。
進みましょう。
245 /*
246 * Jump to start in locore.S, which in turn will call initarm and main.
247 */
248 mov pc, lr
いよいよ、このスタートアップルーチンとはお別れです。つまり、リンクレジスタに格納していた、飛び先つまりLstartにあったルーチンのアドレスをプログラムカウンタ(pc)に格納し、そちらに制御を移します。ついに、rpi_start.Sを読み切りました!
コメント(0件)
- TB-URL http://www.tokuda.net/diary/0815/tb/