Mac OS Xのカーネル Xnuのメモ書き

例外処理


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で行なう。


最終更新 2006/03/27 13:05:13 - kztomita
(2006/03/27 13:05:13 作成)
添付ファイル
exception.png - kztomita


最近更新したページ