Kernelの初期化について

x86_64のカーネル初期化ルーチンを追ってみた
マルチコアは最初に起動するコアをBSPと呼び、それ以外をAPと呼ぶ
BSPはBIOSブートローダを経て、カーネルの入り口であるstartup_64にたどり着き、
その後INITプロセスを実行するまでハードウェアの初期化を中心とした初期化処理を行う

概略

BSP: startup_64-->start_kernel-->rest_init-->kernel_init-->INITプロセス
AP : trampoline_data-->secondary_startup_64-->start_secondary-->アイドル状態

APの起動
BSPはkernel_initの中でsmp_initを呼び、APを起動する
APの起動はIPIにより行われ、APはtrampoline_dataの先頭から実行を開始する
trampoline_dataはsecondary_startup_64を呼び出し、次にinitial_code(関数ポインタ)が指す関数を実行する
initial_codeはsecondary_startが代入されている

以上