source: atk2-sc3_fl850f1l/kernel/genoffset.tf@ 165

Last change on this file since 165 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

File size: 4.9 KB
Line 
1$
2$ TOPPERS ATK2
3$ Toyohashi Open Platform for Embedded Real-Time Systems
4$ Automotive Kernel Version 2
5$
6$ Copyright (C) 2011-2015 by Center for Embedded Computing Systems
7$ Graduate School of Information Science, Nagoya Univ., JAPAN
8$ Copyright (C) 2011-2015 by FUJI SOFT INCORPORATED, JAPAN
9$ Copyright (C) 2011-2013 by Spansion LLC, USA
10$ Copyright (C) 2011-2015 by NEC Communication Systems, Ltd., JAPAN
11$ Copyright (C) 2011-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
12$ Copyright (C) 2011-2014 by Renesas Electronics Corporation, JAPAN
13$ Copyright (C) 2011-2015 by Sunny Giken Inc., JAPAN
14$ Copyright (C) 2011-2015 by TOSHIBA CORPORATION, JAPAN
15$ Copyright (C) 2011-2015 by Witz Corporation
16$ Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN
17$ Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN
18$ Copyright (C) 2014-2015 by SCSK Corporation, JAPAN
19$
20$ 上記著作権者は,以下の(1)(4)の条件を満たす場合に限り,本ソフトウェ
21$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
22$ 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
23$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
24$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
25$ スコード中に含まれていること.
26$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
27$ 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
28$ 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
29$ の無保証規定を掲載すること.
30$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
31$ 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
32$ と.
33$ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
34$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
35$ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
36$ 報告すること.
37$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38$ 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
39$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
40$ 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
41$ 免責すること.
42$
43$ 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
44$ 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
45$ はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
46$ 用する者に対して,AUTOSARパートナーになることを求めている.
47$
48$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
49$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52$ の責任を負わない.
53$
54$ $Id: genoffset.tf 187 2015-06-25 03:39:04Z t_ishikawa $
55$
56
57$
58$ #defineディレクティブの生成
59$
60$FUNCTION DEFINE$
61 #define $ARGV[1]$$TAB$$FORMAT("%d", +ARGV[2])$$NL$
62$END$
63
64$
65$ ビットのサーチ
66$
67$FUNCTION SEARCH_BIT$
68 $_val = ARGV[1]$
69 $FOREACH _val_bit RANGE(0,7)$
70 $IF (_val & 1) != 0$
71 $RESULT = _val_bit$
72 $END$
73 $_val = _val >> 1$
74 $END$
75$END$
76
77$
78$ ビットフィールドのオフセットとビット位置の定義の生成
79$
80$FUNCTION DEFINE_BIT$
81 $label = ARGV[1]$
82 $struct_size = ARGV[2]$
83 $output_size = ARGV[3]$
84
85 $top = SYMBOL(label)$
86 $IF !LENGTH(top)$
87 $ERROR$$FORMAT("label %1% not found", label)$$END$
88 $ELSE$
89 $val = 0$
90 $FOREACH i RANGE(0,struct_size-1)$
91 $tmp_val = PEEK(top + i, 1)$
92 $IF val == 0 && tmp_val != 0$
93 $val = tmp_val$
94 $offset = i$
95 $END$
96 $END$
97
98 $IF val == 0$
99 $ERROR$$FORMAT("bit not found in %1%", ARGV[1])$$END$
100 $ELSE$
101 $val_bit = SEARCH_BIT(val)$
102 $RESULT = {}$
103 $IF EQ(output_size, "W")$
104 $IF SIL_ENDIAN_BIG$
105 $val_bit = val_bit + 24 - ((offset & 0x03) << 3)$
106 $ELSE$
107 $val_bit = val_bit + ((offset & 0x03) << 3)$
108 $END$
109 $offset = offset & ~0x03$
110 $ELSE$$IF EQ(output_size, "H")$
111 $IF SIL_ENDIAN_BIG$
112 $val_bit = val_bit + 8 - ((offset & 0x01) << 3)$
113 $ELSE$
114 $val_bit = val_bit + ((offset & 0x01) << 3)$
115 $END$
116 $offset = offset & ~0x01$
117 $END$$END$
118 $END$
119
120 #define $label$$TAB$$FORMAT("%d", +offset)$$NL$
121 #define $label$_bit$TAB$$FORMAT("%d", +val_bit)$$NL$
122 #define $label$_mask$TAB$$FORMAT("0x%x", 1 << val_bit)$$NL$
123 $END$
124$END$
125
126$
127$ バイト配置のチェック
128$
129$FUNCTION MAGIC_CHECK$
130 $size = ARGV[1]$
131 $check = ARGV[2]$
132
133 $label = FORMAT("MAGIC_%d", +size)$
134 $top = SYMBOL(label)$
135 $IF !LENGTH(top)$
136 $ERROR$$FORMAT("label %1% not found", label)$$END$
137 $ELSE$
138 $FOREACH offset RANGE(1,size)$
139 $IF SIL_ENDIAN_BIG$
140 $val = PEEK(top + offset - 1, 1)$
141 $ELSE$
142 $val = PEEK(top + size - offset, 1)$
143 $END$
144 $IF val != AT(check, offset - 1)$
145 $ERROR$$FORMAT("value check of %1% failed", label)$$END$
146 $END$
147 $END$
148 $END$
149$END$
150
151$MAGIC_CHECK(1, { 0x12 })$
152$MAGIC_CHECK(2, { 0x12, 0x34 })$
153$MAGIC_CHECK(4, { 0x12, 0x34, 0x56, 0x78 })$
154
155$
156$ ファイルヘッダの生成
157$
158$FILE "offset.h"$
159$NL$
Note: See TracBrowser for help on using the repository browser.