source: EcnlProtoTool/trunk/asp3_dcre/kernel/exception.trb@ 429

Last change on this file since 429 was 429, checked in by coas-nagasima, 4 years ago

ASP3, TINET, mbed を更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby;charset=UTF-8
File size: 4.8 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# TOPPERS/ASP Kernel
4# Toyohashi Open Platform for Embedded Real-Time Systems/
5# Advanced Standard Profile Kernel
6#
7# Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
8# Copyright (C) 2015-2019 by Embedded and Real-Time Systems Laboratory
9# Graduate School of Information Science, Nagoya Univ., JAPAN
10#
11# 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
12# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
14# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16# スコード中に含まれていること.
17# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20# の無保証規定を掲載すること.
21# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23# と.
24# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25# 作権表示,この利用条件および下記の無保証規定を掲載すること.
26# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27# 報告すること.
28# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
31# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
32# 免責すること.
33#
34# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
36# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
37# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
38# の責任を負わない.
39#
40# $Id$
41#
42
43#
44# CPU例外管理機能の生成スクリプト
45#
46
47#
48# kernel_cfg.cの生成
49#
50$kernelCfgC.comment_header("CPU Exception Management Functions")
51
52#
53# DEF_EXCで使用できるCPU例外ハンドラ番号のデフォルト定義
54#
55if !defined?($EXCNO_DEFEXC_VALID)
56 $EXCNO_DEFEXC_VALID = $EXCNO_VALID
57end
58
59#
60# CPU例外ハンドラに関するエラーチェック
61#
62$cfgData[:DEF_EXC].each do |_, params|
63 # excnoが有効範囲外の場合(E_PAR)[NGKI3134]
64 if !$EXCNO_DEFEXC_VALID.include?(params[:excno])
65 error_illegal("E_PAR", params, :excno)
66 end
67
68 # excatrが無効の場合(E_RSATR)[NGKI3131][NGKI5178][NGKI3123]
69 #(TARGET_EXCATR以外のビットがセットされている場合)
70 if (params[:excatr] & ~($TARGET_EXCATR)) != 0
71 error_illegal_sym("E_RSATR", params, :excatr, :excno)
72 end
73
74 # ターゲット依存のエラーチェック
75 if defined? TargetCheckDefExc()
76 TargetCheckDefExc(params)
77 end
78end
79
80#
81# CPU例外ハンドラのための標準的な初期化情報の生成
82#
83if !$OMIT_INITIALIZE_EXCEPTION
84 #
85 # 定義するCPU例外ハンドラの数
86 #
87 $kernelCfgC.add(<<EOS)
88#define TNUM_DEF_EXCNO #{$cfgData[:DEF_EXC].size}
89const uint_t _kernel_tnum_def_excno = TNUM_DEF_EXCNO;
90EOS
91
92 if $cfgData[:DEF_EXC].size != 0
93 #
94 # CPU例外ハンドラのエントリ
95 #
96 $cfgData[:DEF_EXC].each do |_, params|
97 $kernelCfgC.add("EXCHDR_ENTRY(#{params[:excno]}, " \
98 "#{params[:excno].val}, #{params[:exchdr]})")
99 end
100 $kernelCfgC.add("")
101
102 #
103 # CPU例外ハンドラ初期化ブロック
104 #
105 $kernelCfgC.add("const EXCINIB _kernel_excinib_table[TNUM_DEF_EXCNO] = {")
106 $cfgData[:DEF_EXC].each_with_index do |(_, params), index|
107 $kernelCfgC.add(",") if index > 0
108 $kernelCfgC.append("\t{ (#{params[:excno]}), (#{params[:excatr]}), " \
109 "(FP)(EXC_ENTRY(#{params[:excno]}, #{params[:exchdr]})) }")
110 end
111 $kernelCfgC.add
112 $kernelCfgC.add2("};")
113 else
114 $kernelCfgC.add2("TOPPERS_EMPTY_LABEL(const EXCINIB, " \
115 "_kernel_excinib_table);")
116 end
117end
118
119#
120# CPU例外管理機能初期化関数の追加
121#
122$initializeFunctions.push("_kernel_initialize_exception();")
Note: See TracBrowser for help on using the repository browser.