[283] | 1 | # -*- coding: utf-8 -*-
|
---|
| 2 | #
|
---|
| 3 | # パス3の生成スクリプトのコア依存部(ARM用)
|
---|
| 4 | #
|
---|
| 5 | # $Id: core_check.trb 730 2016-04-03 02:04:52Z ertl-hiro $
|
---|
| 6 | #
|
---|
| 7 |
|
---|
| 8 | #
|
---|
| 9 | # ターゲット非依存部のインクルード
|
---|
| 10 | #
|
---|
| 11 | IncludeTrb("kernel/kernel_check.trb")
|
---|
| 12 |
|
---|
| 13 | #
|
---|
| 14 | # 割込みハンドラテーブルに関するチェック
|
---|
| 15 | #
|
---|
| 16 | # DEF_INHで登録した割込みハンドラのみチェックする.逆に言うと,コンフィ
|
---|
| 17 | # ギュレータで生成した割込みハンドラや,default_int_handlerのチェックは
|
---|
| 18 | # 行わない.
|
---|
| 19 | #
|
---|
| 20 | inhinib_entry = SYMBOL("_kernel_inhinib_entry")
|
---|
| 21 | $cfgData[:DEF_INH].each do |key, params|
|
---|
| 22 | inthdr = PEEK(inhinib_entry, $sizeof_FP)
|
---|
| 23 |
|
---|
| 24 | # 割込みハンドラの先頭番地のチェック
|
---|
| 25 | if (inthdr & ($CHECK_FUNC_ALIGN - 1)) != 0
|
---|
| 26 | error_wrong_id("E_PAR", params, :inthdr, :inhno, "not aligned")
|
---|
| 27 | end
|
---|
| 28 | if $CHECK_FUNC_NONNULL && inthdr == 0
|
---|
| 29 | error_wrong_id("E_PAR", params, :inthdr, :inhno, "null")
|
---|
| 30 | end
|
---|
| 31 |
|
---|
| 32 | inhinib_entry += $sizeof_FP
|
---|
| 33 | end
|
---|
| 34 |
|
---|
| 35 | #
|
---|
| 36 | # CPU例外ハンドラテーブルに関するチェック
|
---|
| 37 | #
|
---|
| 38 | # DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと,
|
---|
| 39 | # default_exc_handlerのチェックは行わない.
|
---|
| 40 | #
|
---|
| 41 | excinib_entry = SYMBOL("_kernel_excinib_entry")
|
---|
| 42 | $cfgData[:DEF_EXC].each do |key, params|
|
---|
| 43 | exchdr = PEEK(excinib_entry, $sizeof_FP)
|
---|
| 44 |
|
---|
| 45 | # CPU例外ハンドラの先頭番地のチェック
|
---|
| 46 | if (exchdr & ($CHECK_FUNC_ALIGN - 1)) != 0
|
---|
| 47 | error_wrong_id("E_PAR", params, :exchdr, :excno, "not aligned")
|
---|
| 48 | end
|
---|
| 49 | if $CHECK_FUNC_NONNULL && exchdr == 0
|
---|
| 50 | error_wrong_id("E_PAR", params, :exchdr, :excno, "null")
|
---|
| 51 | end
|
---|
| 52 |
|
---|
| 53 | excinib_entry += $sizeof_FP
|
---|
| 54 | end
|
---|