$ $ パス3のコア依存テンプレート(ARM用) $ $ $Id: core_check.tf 407 2015-08-02 21:57:33Z ertl-hiro $ $ $ $ 標準テンプレートファイルのインクルード $ $INCLUDE "kernel/kernel_check.tf"$ $ $ 割込みハンドラテーブルに関するチェック $ $ DEF_INHで登録した割込みハンドラのみチェックする.逆に言うと,コンフィ $ ギュレータで生成した割込みハンドラや,default_int_handlerのチェックは $ 行わない. $ $inh_table = SYMBOL("_kernel_inh_table")$ $FOREACH inhno INH.ORDER_LIST$ $ // 割込みハンドラの先頭番地のチェック[NGKI3056] $inthdr = PEEK(inh_table + inhno * sizeof_FP, sizeof_FP)$ $IF CHECK_FUNC_ALIGN && (inthdr & (CHECK_FUNC_ALIGN - 1)) != 0$ $ERROR INH.TEXT_LINE[inhno]$E_PAR:$SPC$ $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"), "inthdr", INH.INTHDR[inhno], inhno, "DEF_INH")$ $END$ $END$ $IF CHECK_FUNC_NONNULL && inthdr == 0$ $ERROR INH.TEXT_LINE[inhno]$E_PAR:$SPC$ $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"), "inthdr", INH.INTHDR[inhno], inhno, "DEF_INH")$ $END$ $END$ $END$ $ $ CPU例外ハンドラテーブルに関するチェック $ $ DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと, $ default_exc_handlerのチェックは行わない. $ $exc_table = SYMBOL("_kernel_exc_table")$ $FOREACH excno EXC.ORDER_LIST$ $ // CPU例外ハンドラの先頭番地のチェック[NGKI3135] $exchdr = PEEK(exc_table + excno * sizeof_FP, sizeof_FP)$ $IF CHECK_FUNC_ALIGN && (exchdr & (CHECK_FUNC_ALIGN - 1)) != 0$ $ERROR EXC.TEXT_LINE[excno]$E_PAR:$SPC$ $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"), "exchdr", EXC.EXCHDR[excno], excno, "DEF_EXC")$ $END$ $END$ $IF CHECK_FUNC_NONNULL && exchdr == 0$ $ERROR EXC.TEXT_LINE[excno]$E_PAR:$SPC$ $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"), "exchdr", EXC.EXCHDR[excno], excno, "DEF_EXC")$ $END$ $END$ $END$