source: atk1_sh2/trunk/config/sh2-gnu/cpu.tf@ 6

Last change on this file since 6 was 6, checked in by msugi, 14 years ago

ファイルの追加忘れ分があったため追加.
intmaskの初期化がidle_loopの出口になかったため,追加.

File size: 4.2 KB
Line 
1$
2$ TOPPERS Automotive Kernel
3$ Toyohashi Open Platform for Embedded Real-Time Systems
4$ Automotive Kernel
5$
6$ Copyright (C) 2010 by asuka
7$
8$ 上記著作権者は,以下の (1)(4) の条件か,Free Software Foundation
9$ によって公表されている GNU General Public License Version 2 に記
10$ 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
11$ を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
12$ 利用と呼ぶ)することを無償で許諾する.
13$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
14$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
15$ スコード中に含まれていること.
16$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
17$ 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
18$ 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
19$ の無保証規定を掲載すること.
20$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
21$ 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
22$ と.
23$ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
24$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
25$ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
26$ 報告すること.
27$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
28$ 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
29$
30$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
31$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
32$ 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
33$ 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
34$
35
36$
37$ SH2-GNU環境依存部テンプレートファイル
38$
39
40$FILE "kernel_cfg.c"$
41
42$
43$ ISRの外部参照宣言出力
44$
45$ その後の処理に必要な変数も作っておく.
46$
47
48$ISR1_EXTERNAL_STRING = ""$
49$ISR2_EXTERNAL_STRING = ""$
50$ISR1_ENTRY_STRING = ""$
51$ISR2_ENTRY_STRING = ""$
52$USED_INTNO = {}$
53$INTNO_TO_HDRSYMBOL = {}$
54$COUNT = 0$
55
56$FOREACH isrid ISR.ID_LIST$
57 $IF EQ(ISR.CATEGORY[isrid] , "1")$
58 $ISR1_EXTERNAL_STRING =
59 CONCAT(ISR1_EXTERNAL_STRING , FORMAT("ISR1_EXTERNAL(%1%);\n" , isrid))$
60 $ISR1_ENTRY_STRING =
61 CONCAT(ISR1_ENTRY_STRING , FORMAT("ISR1_ENTRY(%1%);\n" , isrid))$
62 $INTNO_TO_HDRSYMBOL[+ISR.ENTRY[isrid]] = FORMAT("ISR1_SYMBOL(%1%)" , isrid)$
63 $ELSE$
64 $ISR2_EXTERNAL_STRING =
65 CONCAT(ISR2_EXTERNAL_STRING , FORMAT("ISR2_EXTERNAL(%1%);\n" , isrid))$
66 $ISR2_ENTRY_STRING =
67 CONCAT(ISR2_ENTRY_STRING , FORMAT("ISR2_ENTRY(%1% , (%2%));\n" , isrid , COUNT))$
68 $INTNO_TO_HDRSYMBOL[+ISR.ENTRY[isrid]] = FORMAT("ISR2_SYMBOL(%1%)" , isrid)$
69 $COUNT = COUNT + 1$
70 $END$
71$ 使用している割込み番号と対応するシンボルをリスト化
72 $USED_INTNO = APPEND(USED_INTNO , +ISR.ENTRY[isrid])$
73$END$
74
75/* 割込み入り口処理関数の外部参照定義 */$NL$
76$ISR1_EXTERNAL_STRING$
77$ISR2_EXTERNAL_STRING$
78
79$NL$
80
81/* 割込み入り口処理関数 */$NL$
82$ISR1_ENTRY_STRING$
83$ISR2_ENTRY_STRING$
84
85$NL$
86
87$ 割込みベクタに登録されるその他の割込みハンドラの外部参照
88/* スタートアップ関数の外部参照定義 */$NL$
89extern void start(void);$NL$
90$NL$
91/* 未使用割込みの外部参照定義 */$NL$
92UNUSED_INT_EXTERNAL();$NL$
93$NL$
94
95/* 割込みベクタテーブル */$NL$
96typedef void (*inthandler)(void);$NL$
97
98$NL$
99$NL$
100
101const inthandler inthandler_table[256] __attribute((section (".vector"))) =$NL$
102{$NL$
103$ 固定部分の出力
104 $TAB$start /* $INT_VECTOR_INFO[0]$ */ ,$NL$
105 $TAB$(inthandler)STACK_TOP /* $INT_VECTOR_INFO[1]$ */ ,$NL$
106 $TAB$start /* $INT_VECTOR_INFO[2]$ */ ,$NL$
107 $TAB$(inthandler)STACK_TOP /* $INT_VECTOR_INFO[3]$ */ ,$NL$
108
109$JOINEACH intno ISR_ENTRY_LIST " , \n"$
110 $TAB$
111 $IF LENGTH(FIND(USED_INTNO , intno))$
112 $INTNO_TO_HDRSYMBOL[+intno]$ /* $INT_VECTOR_INFO[intno]$ */
113 $ELSE$
114 $IF intno == 8$
115 (inthandler)(0xC91F0606)
116 $ELSE$
117 UNUSED_INT_SYMBOL() /* $INT_VECTOR_INFO[intno]$ */
118 $END$
119 $END$
120$END$
121$NL$
122};$NL$
123
124$NL$
125
126$ フックルーチンが未定義の場合のNULL定義
127/* フックルーチンが未定義の場合のNULL定義 */$NL$
128$IF EQ(OS.STARTUPHOOK[0] , "FALSE")$
129 NULL_STARTUPHOOK$NL$
130$END$
131
132$IF EQ(OS.SHUTDOWNHOOK[0] , "FALSE")$
133 NULL_SHUTDOWNHOOK$NL$
134$END$
135
136$IF EQ(OS.ERRORHOOK[0] , "FALSE")$
137 NULL_ERRORHOOK$NL$
138$END$
139
140$IF EQ(OS.PRETASKHOOK[0] , "FALSE")$
141 NULL_PRETASKHOOK$NL$
142$END$
143
144$IF EQ(OS.POSTTASKHOOK[0] , "FALSE")$
145 NULL_POSTTASKHOOK$NL$
146$END$
147
148$NL$
149
150
Note: See TracBrowser for help on using the repository browser.