go_to_protected_modeでプロテクトモードに移行します。
その前に、ここで一度main関数をまとめておきましょう。
arch/x86/boot/main.c
======
void main(void)
{
/* ブートパラメータのヘッダ情報を取得する */
copy_boot_params();
/* ヒープの末尾位置をセット */
init_heap();
/* CPU情報を取得してチェック */
if (validate_cpu()) {
~省略~
}
~省略~
/* メモリマップとメモリサイズを取得 */
detect_memory();
/* キーボードのリピートレートをMAXに設定 */
keyboard_set_repeat();
/* ROMテーブルを取得 */
query_mca();
~省略~
/* IST(Intel Speed step Technology)情報を取得 */
query_ist();
/* APM(Advanced Power Management)情報を取得 */
query_apm_bios();
/* EDD(Enhanced Disk Drive)情報を取得 */
query_edd();
/* ビデオカード情報、ディスプレイ情報を取得 */
set_video();
~省略~
/* プロテクトモードへ移行する */
go_to_protected_mode();
}
======
と、ハード関係の情報をブートパラメータ構造体に格納してからプロテクトモードに移行しています。
0 件のコメント:
コメントを投稿