x-loaderのソースを眺めて(2)
前回に続いて、
x-loaderのソースを見てみたところを
適当に書いてみる。
ソースは、前回同様に、104SHのやつ。
ENTRYで指定してある
cpu/omap4/start.S の _start から読んでいく。
いきなりのb命令。
アセンブラガイドなるものによると、
分岐命令らしい。
私的には、ジャンプ命令のがわかりやすい。
ってことで、出鼻を挫かれて、
reset:からやり直し。
ldrとstrがリードとライトと見れば、
あとは適当に眺めていく。
r4は、scratchpad ってことなので、
よくわからないので、無視しておく。
OMAPの資料だと、
L4_WKUPのRAMらしいけど、何かのおまじないかな。
次に、r5の比較がたくさん。
r0の近くを読んでるから、
内部ROMから渡された値になるっぽい。
コメントを見る限り、
どのデバイスでブートされたかを
この辺でチェックしてるみたい。
そして、skip_typecheck は、
一部の比較スキップ処理なんだろうな。
その次から、
"bl cpu_init_crit"までの処理が
例外割り込み設定になるのかな。
_startの場所辺りから、
64バイトをコピーしている。
コピー先が
「OMAP4460 ES1.x TRM Revision Q」の
「27.4.2.2 RAM Memory Map」の
RAM Exception Vectors
(0x4030D000)と一緒なので、
なんとなく納得できそうな処理になる。
全部、do_hangに飛ぶらしい。
でも、"add r0,r0,#4"した分だけずれるような
違和感があるが、あってるのかな・・。
そして、"bl cpu_init_crit"は
ジャンプ命令なので、
やっと、概要のひとつ目の関数にたどりついた。
先が長そうだ・・。
リンク:
「Bootloader Project(翻訳)」on 電脳羊(Android Dream)
RealView® Compilation Tools アセンブラガイド(バージョン 4.0)
| 固定リンク | コメント (0) | トラックバック (0)


最近のコメント