Skip to content
This repository was archived by the owner on Jan 14, 2026. It is now read-only.

Commit fd178cd

Browse files
committed
add vmem docs
1 parent f1c6348 commit fd178cd

3 files changed

Lines changed: 37 additions & 7 deletions

File tree

docs/mem/vmem.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
この章では、メモリの仮想/物理変換(vmemレイヤ)に関する実装について記述します
2+
3+
## 概要
4+
このモジュールはカーネル内部で仮想アドレスと物理アドレスの相互変換を抽象化します。
5+
実装は`mem/vmem.c`です
6+
7+
## 機能
8+
9+
## API
10+
### 定義されている型/定数
11+
- `vmem_mode_t`: 動作モード(`VMEM_MODE_IDENTITY`, `VMEM_MODE_OFFSET`, `VMEM_MODE_WALK`
12+
13+
### 関数
14+
- **`vmem_virt_to_phys`** -> uint32_t
15+
- **引数**: (uint32_t) `virt` - 変換する仮想アドレス
16+
- 仮想アドレスを物理アドレスへ変換します。現在のモードに従って動作します。
17+
- 失敗時は `0` を返します(注: 物理アドレス `0` を有効に使う場合は注意が必要です)
18+
19+
- **`vmem_phys_to_virt`** -> uint32_t
20+
- **引数**: (uint32_t) `phys` - 変換する物理アドレス
21+
- 物理アドレスを仮想アドレスへ変換します。WALK モードの際にはページテーブルを参照するためにこの関数が使われます。
22+
23+
- **`vmem_set_offset`** / **`vmem_reset`**
24+
- OFFSET モード用のオフセットを設定 / リセットします。
25+
26+
- **`vmem_set_mode`**
27+
- 動作モードを設定します(IDENTITY / OFFSET / WALK)。
28+
29+
- **`vmem_set_phys2virt`**
30+
- 物理→仮想変換関数を登録します(ページテーブル読み取り時に使用)。NULL を渡すとデフォルトの offset 翻訳が使われます。

src/boot/config.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
KERNEL_OFFSET EQU 0x10000 ; カーネルをロードするアドレス
2-
SECTOR_COUNT EQU 43 ; 読み込むセクタの数
2+
SECTOR_COUNT EQU 38 ; 読み込むセクタの数
33
START_SECTOR EQU 2 ; 開始するセクタ番号
44
CYLINDER_NUM EQU 0 ; シリンダ番号
55
HEAD_NUM EQU 0 ; ヘッド番号

src/include/tests/define.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66

77
#ifdef TEST_TRUE
88
// メモリマップとメモリのテスト
9-
#define MEM_TEST
9+
//#define MEM_TEST
1010
// 割り込みのテスト
11-
#define INTERRUPT_TEST
11+
//#define INTERRUPT_TEST
1212
// 割り込みベクタのテスト
13-
#define INTERRUPT_VECTOR_TEST
13+
//#define INTERRUPT_VECTOR_TEST
1414
// 割り込みハンドラでメモリのテスト
15-
#define ALLOC_IRQ_TEST
15+
//#define ALLOC_IRQ_TEST
1616
// GDT(セグメント)再構築テスト
17-
#define GDT_TEST
17+
//#define GDT_TEST
1818
// ページングのテスト
19-
#define PAGING_TEST
19+
//#define PAGING_TEST
2020
// 仮想メモリのテスト
2121
#define VMEM_TEST
2222

0 commit comments

Comments
 (0)