12 char expmsg1[] =
"Unhandled exception. Link Register: 0x%x";
59 mask = (0x00000001 << (xnum%32));
122 kprintf(
"exception %d (%s) currpid %d (%s)\n", inum,
132 if (inum == 8 || (inum >= 10 && inum <= 14)) {
133 kprintf(
"error code %08x (%u)\n", *sp, *sp);
138 kprintf(
"eax %08X (%u)\n", *sp, *sp);
140 kprintf(
"ecx %08X (%u)\n", *sp, *sp);
142 kprintf(
"edx %08X (%u)\n", *sp, *sp);
144 kprintf(
"ebx %08X (%u)\n", *sp, *sp);
146 kprintf(
"esp %08X (%u)\n", *sp, *sp);
148 kprintf(
"ebp %08X (%u)\n", *sp, *sp);
151 kprintf(
"esi %08X (%u)\n", *sp, *sp);
153 kprintf(
"edi %08X (%u)\n", *sp, *sp);
160 panic(
"Trap processing complete...\n");
syscall kprintf(char *fmt,...)
ポーリングI/Oを使用して、フォーマットされた文字列をコンソールに出力する。
#define INTC_SYSCONFIG_SOFTRESET
struct intc_bank banks[4]
#define INTC_CONTROL_NEWIRQAGR
status resched_cntl(int32)
再スケジューリングを延期させるか、もしくは許可させるかを制御する。
#define INTC_SYSSTATUS_RESETDONE
#define DEFER_STOP
遅延リスケジューリングの停止
uint32 intmask
保存された割り込みマスク
#define DEFER_START
遅延リスケジューリングの開始
int int32
符号あり32ビット整数(int)
void interrupt
割り込みハンドラ 返り値の型
void panic(char *)
Panic状態に陥った旨のメッセージを表示し、全てのプロセスを停止させる。
struct procent proctab[]
プロセステーブル。
void userret(void)
プロセスが最上位の関数に戻る時に呼ばれる。現在のプロセスを終了させる。
unsigned int uint32
符号なし32ビット整数(unsigned int)
int32 set_evec(uint32 xnum, uint32 handler)
intmask disable(void)
割り込み禁止(intr.Sに定義がある)