要約
RamenOSのカーネル,IDT,GDTの場所を変更します.変更のためにはアセンブリファイルや*.rs
ファイル*1の各所で定義されている定数の値と,GDTのエントリを変更する必要があります.
はじめに
はりぼてOSを基にしているRamenOSにページングを実装するために,カーネルとIDT,GDTの場所を変更します.
はりぼてOSでは,カーネルが0x00280000
,IDTが0x0026f800
,GDTが0x00270000
に配置されています.ページディレクトリ並びにページテーブルを0x00100000
から配置する予定で*2,これらが4MB + 4KBを使用する予定なので,カーネルを0x00501000
,IDTを0x00581000
,GDTを0x00581800
に配置します*3.
コードの変更箇所
GDTのエントリと,定数を変更する必要があります.
それぞれのファイル名ははりぼてOSのものであり,RamenOSのものではありません.
asmhead.nas
BOTPAK
とGDTのエントリを変更します.
BOTPAK EQU 0x00501000
GDT0: TIMES 8 DB 0 DW 0xffff,0x0000,0x9200,0x00cf ; 変更なし DW 0xffff,0x1000,0x9a50,0x0047 ; 変更する
GDTのエントリについては以下で確認してください.
bootpack.h
マクロの値を変更します.
#define ADR_IDT 0x00581000 #define ADR_GDT 0x00581800 #define ADR_BOTPAK 0x00501000