例外処理
Rev.1を表示中。最新版はこちら。
例外処理(i386の場合)
[例外のエントリポイント]
locore.s::alltraps
user_trap()もしくはkernel_trap()を呼ぶ
[例外処理]
user_trap() - User Modeで例外が発生した場合
<作成中>
kernel_trap() - Kernel Modeで例外が発生した場合
<作成中>
[例外ベクタテーブルの設定]
ディスクリプタテーブルの作成
idt.s
.data
Entry(idt)
.text
EXCEPTION(0x00,t_zero_div) <== IDTのエントリを作成してalltrapsへの
EXCEP_SPC(0x01,t_debug) ジャンプルーチンを作る
INTERRUPT(0x02) /* NMI */
EXCEP_USR(0x03,t_int3)
EXCEP_USR(0x04,t_into)
EXCEP_USR(0x05,t_bounds)
EXCEPTION(0x06,t_invop)
:
:
IDTRの設定はstart.s::spag_startで行なう。
