ARMブート部分

カーネルをメモリに展開した後,(ブートローダなり手動なりで)r1にmachine numberを入れて,エントリポイントへ飛ぶ.
ブート中の最初,CPUタイプの取得の後,arch/arm/kernel/head-common.S中の__lookup_machine_typeでは,この値と,カーネルコンパイル時に生成する__arch_info情報を照し合せて使用するボード情報構造体machine_descを決定する.
ここで,__arch_infoの中にr1に等しい番号を持つエントリが見付からなかった場合,呼出元のhead.Sでは__error_aに飛び,無限ループへ入る.←いまここ
このmachine_descはMACHINE_STARTマクロによって追加されていくが,MACHINE_STARTマクロが記述されているソースは,カーネルのコンフィグで指定されたもののみがmake時にコンパイルされる.
結局,カーネルコンフィグで目的のボードを指定しておかないと,固まってしまう.
MACHIME_STARTマクロの書いてあるソースでは,I/Oマップ等,ボード特有の情報を使用するのでこれはしょうがないと思う.PCとの違いを感じた.
今,Linuxを移植しているボードはPXA255を使ったオリジナルのボードなので,既存のソースをそのまま利用することはできない.
さて,楽しくなってきた.