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/