source: atk2-sc3_fl850f1l/arch/v850_gcc/prc.tf@ 117

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

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

File size: 19.6 KB
Line 
1$
2$ TOPPERS ATK2
3$ Toyohashi Open Platform for Embedded Real-Time Systems
4$ Automotive Kernel Version 2
5$
6$ Copyright (C) 2012-2013 by Center for Embedded Computing Systems
7$ Graduate School of Information Science, Nagoya Univ., JAPAN
8$ Copyright (C) 2012-2013 by FUJISOFT INCORPORATED, JAPAN
9$ Copyright (C) 2012-2013 by FUJITSU VLSI LIMITED, JAPAN
10$ Copyright (C) 2012-2013 by NEC Communication Systems, Ltd., JAPAN
11$ Copyright (C) 2012-2013 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
12$ Copyright (C) 2012-2013 by Renesas Electronics Corporation, JAPAN
13$ Copyright (C) 2012-2013 by Sunny Giken Inc., JAPAN
14$ Copyright (C) 2012-2013 by TOSHIBA CORPORATION, JAPAN
15$ Copyright (C) 2012-2013 by Witz Corporation, JAPAN
16$ Copyright (C) 2013 by Embedded and Real-Time Systems Laboratory
17$ Graduate School of Information Science, Nagoya Univ., JAPAN
18$
19$ 上記著作権者は,以下の(1)(4)の条件を満たす場合に限り,本ソフトウェ
20$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
21$ 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
22$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
23$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
24$ スコード中に含まれていること.
25$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
26$ 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
27$ 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
28$ の無保証規定を掲載すること.
29$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30$ 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
31$ と.
32$ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
33$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
34$ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
35$ 報告すること.
36$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
37$ 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
38$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
39$ 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
40$ 免責すること.
41$
42$ 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
43$ 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
44$ はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
45$ 用する者に対して,AUTOSARパートナーになることを求めている.
46$
47$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
48$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
49$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
50$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
51$ の責任を負わない.
52$
53$ $Id: prc.tf 189 2015-06-26 01:54:57Z t_ishikawa $
54$
55
56$
57$ パス2のアーキテクチャ依存テンプレート(V850用)
58$
59
60$
61$ kernel/kernel.tf のターゲット依存部
62$
63
64$
65$ ユーザスタック領域を確保するコードを出力する
66$ ARGV[1]:タスクID
67$ ARGV[2]:スタックサイズ
68$
69$FUNCTION ALLOC_USTACK$
70 StackType _kernel_ustack_$ARGV[1]$[COUNT_STK_T($ARGV[2]$)]
71 $SPC$__attribute__((section($FORMAT("\".user_stack.%s\"", ARGV[1])$)));$NL$
72
73 $TSK.TINIB_USTKSZ[ARGV[1]] = VALUE(FORMAT("ROUND_STK_T(%s)", ARGV[2]), +ARGV[2])$
74 $TSK.TINIB_USTK[ARGV[1]] = FORMAT("_kernel_ustack_%s", ARGV[1])$
75$END$
76
77$
78$ ユーザスタック領域のセクション名を返す
79$ ARGV[1]:タスクID
80$
81$FUNCTION SECTION_USTACK$
82 $RESULT = FORMAT(".user_stack.%s", ARGV[1])$
83$END$
84
85$
86$ ユーザスタックのアライメント制約に合わせたサイズを返す
87$ ARGV[1]:スタックサイズ(アライン前)
88$ kernel.tfから呼ばれる
89$
90$FUNCTION USTACK_ALIGN_SIZE$
91 $RESULT = (ARGV[1] + CHECK_USTKSZ_ALIGN - 1) & ~(CHECK_USTKSZ_ALIGN - 1)$
92$END$
93
94$
95$ 基本タスクの共有スタックの確保
96$ ARGV[1]:共有スタック名
97$ ARGV[2]:共有スタックID(タスク優先度)
98$ ARGV[3]:スタックサイズ(アライメント調整済み)
99$ kernel.tfから呼ばれる
100$
101$FUNCTION ALLOC_SHARED_USTACK$
102 StackType $ARGV[1]$[COUNT_STK_T(ROUND_STK_T($ARGV[3]$))]
103 $SPC$__attribute__((section($FORMAT("\".shared_user_stack.%s\"", ARGV[2])$)));$NL$
104$END$
105
106$
107$ 基本タスクの共有スタックのセクション名
108$ ARGV[1]:共有スタックID(タスク優先度)
109$ kernel.tfから呼ばれる
110$
111$FUNCTION SECTION_SHARED_USTACK$
112 $RESULT = FORMAT(".shared_user_stack.%s", ARGV[1])$
113$END$
114
115$
116$ 非信頼フックスタックの確保
117$ ARGV[1]:スタック名
118$ ARGV[2]:スタックサイズ
119$ kernel.tfから呼ばれる
120$
121$FUNCTION ALLOC_HSTACK$
122 $name = ARGV[1]$
123 $size = ARGV[2]$
124 StackType $name$[COUNT_STK_T(ROUND_STK_T($HSTACK_SIZE_STR(size)$))] __attribute__((section(".prsv_kernel")));$NL$
125$END$
126
127$
128$ 非信頼フックスタックサイズのアライメント制約を満たすように拡張したサイズの文字列
129$ ARGV[1]:スタックサイズ
130$ kernel.tfから呼ばれる
131$
132$FUNCTION HSTACK_SIZE_STR$
133 TOPPERS_ROUND_SZ($ARGV[1]$, CHECK_USTKSZ_ALIGN)
134$END$
135
136$
137$ OsMemoryArea はサポートしない
138$
139$FUNCTION HOOK_ERRORCHECK_MEM$
140 $ERROR$
141 OsMemoryArea is not supported.$NL$
142 $END$
143$END$
144
145$
146$ 標準のセクションのメモリオブジェクト属性の定義
147$
148$MEMATR_TEXT = (TA_NOWRITE|TA_EXEC)$
149$MEMATR_RODATA = (TA_NOWRITE|TA_EXEC)$
150$MEMATR_DATA = TA_MEMINI$
151$MEMATR_BSS = TA_NULL$
152$MEMATR_PRSV = TA_MEMPRSV$
153$MEMATR_ROSDATA = (TA_SDATA|TA_MEMINI|TA_NOWRITE|TA_EXEC)$
154$MEMATR_SDATA = (TA_SDATA|TA_MEMINI)$
155$MEMATR_SBSS = TA_SDATA$
156
157$TARGET_MEMATR_USTACK = TA_NULL$
158
159$
160$ 標準のセクションに関する定義
161$ DSEC.ORDER_LIST:IDのリスト
162$ DESC.SECTION:セクション名
163$ DESC.MEMREG:セクションを配置するメモリリージョン
164$ DESC.MEMATR:セクションのメモリオブジェクト属性
165$
166$DSEC.ORDER_LIST = RANGE(0,7)$
167
168$DSEC.SECTION[0] = ".text"$
169$DSEC.MEMREG[0] = 1$
170$DSEC.MEMATR[0] = MEMATR_TEXT$
171
172$DSEC.SECTION[1] = ".rodata"$
173$DSEC.MEMREG[1] = 1$
174$DSEC.MEMATR[1] = MEMATR_RODATA$
175
176$DSEC.SECTION[2] = ".data"$
177$DSEC.MEMREG[2] = 0$
178$DSEC.MEMATR[2] = MEMATR_DATA$
179
180$DSEC.SECTION[3] = ".bss"$
181$DSEC.MEMREG[3] = 0$
182$DSEC.MEMATR[3] = MEMATR_BSS$
183
184$DSEC.SECTION[4] = ".prsv"$
185$DSEC.MEMREG[4] = 0$
186$DSEC.MEMATR[4] = MEMATR_PRSV$
187
188$DSEC.SECTION[5] = ".rosdata"$
189$DSEC.MEMREG[5] = 0$
190$DSEC.MEMATR[5] = MEMATR_ROSDATA$
191
192$DSEC.SECTION[6] = ".sdata"$
193$DSEC.MEMREG[6] = 0$
194$DSEC.MEMATR[6] = MEMATR_SDATA$
195
196$DSEC.SECTION[7] = ".sbss"$
197$DSEC.MEMREG[7] = 0$
198$DSEC.MEMATR[7] = MEMATR_SBSS$
199
200$
201$ OSAP初期化コンテキストブロックのための宣言
202$
203$FUNCTION PREPARE_OSAPINICTXB$
204 $IF LENGTH(TSK.ID_LIST)$
205 $FOREACH tskid TSK.ID_LIST$
206 $IF !OSAP.TRUSTED[TSK.OSAPID[tskid]]$
207 extern uint8 $FORMAT("__start_user_stack%s", tskid)$;$NL$
208 extern uint8 $FORMAT("__limit_user_stack%s", tskid)$;$NL$
209 $END$
210 $END$
211 $END$
212 $FOREACH tskpri RANGE(TMIN_TPRI, TMAX_TPRI)$
213 $IF LENGTH(shared_ustack_size[tskpri])$
214 extern uint8 $FORMAT("__start_shared_user_stack%s", tskpri)$;$NL$
215 extern uint8 $FORMAT("__limit_shared_user_stack%s", tskpri)$;$NL$
216 $END$
217 $END$
218
219
220 $IF LENGTH(OSAP.ID_LIST)$
221 $FOREACH domid OSAP.ID_LIST$
222 $IF !OSAP.TRUSTED[domid]$
223$ RX領域(専用)
224 extern uint8 __start_text_$OSAP.LABEL[domid]$;$NL$
225 extern uint8 __limit_text_$OSAP.LABEL[domid]$;$NL$
226$ R領域(専用)
227 extern uint8 __start_sram_$OSAP.LABEL[domid]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$;$NL$
228 extern uint8 __limit_sram_$OSAP.LABEL[domid]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$;$NL$
229$ RWX領域(専用)
230 extern uint8 __start_ram_$OSAP.LABEL[domid]$;$NL$
231 extern uint8 __limit_ram_$OSAP.LABEL[domid]$;$NL$
232 extern uint8 __start_sram_$OSAP.LABEL[domid]$;$NL$
233 extern uint8 __limit_sram_$OSAP.LABEL[domid]$;$NL$
234$ 共有リード専用ライト
235 extern uint8 $FORMAT("__start_ram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$;$NL$
236 extern uint8 $FORMAT("__limit_ram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$;$NL$
237 extern uint8 $FORMAT("__start_sram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$;$NL$
238 extern uint8 $FORMAT("__limit_sram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$;$NL$
239 $END$
240 $END$
241 $NL$
242 $END$$NL$
243
244$ 共有領域
245 extern uint8 __start_text_$OSAP.LABEL[TDOM_NONE]$;$NL$
246 extern uint8 __limit_text_$OSAP.LABEL[TDOM_NONE]$;$NL$
247 extern uint8 __start_sram_$OSAP.LABEL[TDOM_NONE]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$;$NL$
248 extern uint8 __limit_sram_$OSAP.LABEL[TDOM_NONE]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$;$NL$
249 extern uint8 __start_ram_$OSAP.LABEL[TDOM_NONE]$;$NL$
250 extern uint8 __limit_ram_$OSAP.LABEL[TDOM_NONE]$;$NL$
251 extern uint8 __start_sram_$OSAP.LABEL[TDOM_NONE]$;$NL$
252 extern uint8 __limit_sram_$OSAP.LABEL[TDOM_NONE]$;$NL$
253$ 共有リード専用ライト領域全体
254 extern uint8 __start_srpw_all;$NL$
255 extern uint8 __limit_srpw_all;$NL$
256 extern uint8 __start_ssrpw_all;$NL$
257 extern uint8 __limit_ssrpw_all;$NL$
258 $NL$
259$END$
260
261
262$FUNCTION GENERATE_TARGET_MPUINFOB$
263$
264$ 保護ドメイン初期化ブロックの変更部を生成
265$
266 $FILE "Os_Lcfg.h"$
267 extern const uint32 tnum_shared_mem;$NL$
268 extern uint8 * const shared_meminib_table[];$NL$
269 $NL$
270
271 $FILE "kernel_mem2.c"$
272
273 $PREPARE_OSAPINICTXB()$
274
275$END$
276
277$
278$ TSKINICTXBの初期化情報を生成
279$
280$DOMINICTXB_KERNEL = "{ NULL }"$
281
282$FUNCTION GENERATE_OSAPINIB_MPUINFOB$
283
284 $TAB$$TAB${
285 $IF __v850e2v3__$
286$ // v850
287 $IF !OSAP.TRUSTED[ARGV[1]]$
288$ RX領域(専用)
289 $TAB$$TAB$$TAB$( (uint8 *)&__start_text_$OSAP.LABEL[ARGV[1]]$ ),/* iregion 0 */$NL$
290 $TAB$$TAB$$TAB$( (uint8 *)&__limit_text_$OSAP.LABEL[ARGV[1]]$ ),/* iregion 0 */$NL$
291$ RX領域(専用ショートデータ)
292 $TAB$$TAB$$TAB$( (uint8 *)&__start_sram_$OSAP.LABEL[ARGV[1]]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ ),/* iregion 1 */$NL$
293 $TAB$$TAB$$TAB$( (uint8 *)&__limit_sram_$OSAP.LABEL[ARGV[1]]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ ),/* iregion 1 */$NL$
294$ RWX領域(専用)
295 $TAB$$TAB$$TAB$( (uint8 *)&__start_ram_$OSAP.LABEL[ARGV[1]]$ ),/* dregion 1 */$NL$
296 $TAB$$TAB$$TAB$( (uint8 *)&__limit_ram_$OSAP.LABEL[ARGV[1]]$ ),/* dregion 1 */$NL$
297$ RWX領域(専用ショートデータ)
298 $TAB$$TAB$$TAB$( (uint8 *)&__start_sram_$OSAP.LABEL[ARGV[1]]$ ),/* dregion 2 */$NL$
299 $TAB$$TAB$$TAB$( (uint8 *)&__limit_sram_$OSAP.LABEL[ARGV[1]]$ ),/* dregion 2 */$NL$
300$ 共有リード専用ライト
301 $TAB$$TAB$$TAB$$FORMAT("( (uint8 *)&__start_ram_%s_%x_%x )", OSAP.LABEL[ARGV[1]], +DEFAULT_ACPTN[ARGV[1]], +TACP_SHARED)$,/* dregion 3 */$NL$
302 $TAB$$TAB$$TAB$$FORMAT("( (uint8 *)&__limit_ram_%s_%x_%x )", OSAP.LABEL[ARGV[1]], +DEFAULT_ACPTN[ARGV[1]], +TACP_SHARED)$,/* dregion 3 */$NL$
303$ 共有リード専用ライト(ショートデータ)
304 $TAB$$TAB$$TAB$$FORMAT("( (uint8 *)&__start_sram_%s_%x_%x )", OSAP.LABEL[ARGV[1]], +DEFAULT_ACPTN[ARGV[1]], +TACP_SHARED)$,/* dregion 3 */$NL$
305 $TAB$$TAB$$TAB$$FORMAT("( (uint8 *)&__limit_sram_%s_%x_%x )", OSAP.LABEL[ARGV[1]], +DEFAULT_ACPTN[ARGV[1]], +TACP_SHARED)$,/* dregion 3 */$NL$
306 $ELSE$
307 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* iregion 0 */$NL$
308 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* iregion 0 */$NL$
309 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* iregion 1 */$NL$
310 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* iregion 1 */$NL$
311 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* dregion 1 */$NL$
312 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* dregion 1 */$NL$
313 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* dregion 2 */$NL$
314 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* dregion 2 */$NL$
315 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* dregion 3 */$NL$
316 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* dregion 3 */$NL$
317 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* dregion 4 */$NL$
318 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* dregion 4 */$NL$
319 $END$
320 $ELIF __v850e3v5__$
321$ // rh850
322 $IF !OSAP.TRUSTED[ARGV[1]]$
323$ 共有リード専用ライト
324 $TAB$$TAB$$TAB$$FORMAT("( (uint8 *)&__start_ram_%s_%x_%x )", OSAP.LABEL[ARGV[1]], +DEFAULT_ACPTN[ARGV[1]], +TACP_SHARED)$,/* MPLA 1 */$NL$
325 $TAB$$TAB$$TAB$$FORMAT("( (uint8 *)&__limit_ram_%s_%x_%x )", OSAP.LABEL[ARGV[1]], +DEFAULT_ACPTN[ARGV[1]], +TACP_SHARED)$,/* MPUA 1 */$NL$
326$ 共有リード専用ライト(ショートデータ)
327 $TAB$$TAB$$TAB$$FORMAT("( (uint8 *)&__start_sram_%s_%x_%x )", OSAP.LABEL[ARGV[1]], +DEFAULT_ACPTN[ARGV[1]], +TACP_SHARED)$,/* MPLA 2 */$NL$
328 $TAB$$TAB$$TAB$$FORMAT("( (uint8 *)&__limit_sram_%s_%x_%x )", OSAP.LABEL[ARGV[1]], +DEFAULT_ACPTN[ARGV[1]], +TACP_SHARED)$,/* MPUA 2 */$NL$
329 $TAB$$TAB$$TAB$( (uint32)0 ),/* MPRC */$NL$
330 $ELSE$
331 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* MPLA 1 */$NL$
332 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* MPUA 1 */$NL$
333 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* MPLA 2 */$NL$
334 $TAB$$TAB$$TAB$( (uint8 *)NULL ),/* MPUA 2 */$NL$
335 $TAB$$TAB$$TAB$( (uint32)0 ),/* MPRC */$NL$
336 $END$
337 $END$
338 $TAB$$TAB$}$NL$
339 $NL$
340$END$
341
342$FUNCTION GENERATE_TSKINICTXB$
343 $TAB$$TAB${$NL$
344 $TAB$$TAB$$TAB$$TSK.TINIB_SSTKSZ[ARGV[1]]$,$NL$
345 $TAB$$TAB$$TAB$((void *)((uint8 *)($TSK.TINIB_SSTK[ARGV[1]]$)
346 $SPC$+ ($TSK.TINIB_SSTKSZ[ARGV[1]]$))),$NL$
347 $IF OSAP.TRUSTED[TSK.OSAPID[ARGV[1]]]$
348 $TAB$$TAB$$TAB$0,$NL$
349 $TAB$$TAB$$TAB$0,$NL$
350 $ELSE$
351 $TAB$$TAB$$TAB$$TSK.TINIB_USTKSZ[ARGV[1]]$,$NL$
352 $TAB$$TAB$$TAB$((void *)((uint8 *)($TSK.TINIB_USTK[ARGV[1]]$)
353 $SPC$+ ($TSK.TINIB_USTKSZ[ARGV[1]]$))),$NL$
354 $END$
355 $TAB$$TAB$},$NL$
356$END$
357
358$FUNCTION GENERATE_STKMPUINFOB$
359 $TAB$$TAB${$NL$
360 $IF OSAP.TRUSTED[TSK.OSAPID[ARGV[1]]]$
361 $TAB$$TAB$$TAB$0,$NL$
362 $TAB$$TAB$$TAB$0,$NL$
363 $ELSE$
364 $IF EQ(TSK.STK[ARGV[1]],"NULL")$
365$ // stkがNULLの場合の処理
366 $IF LENGTH(TSK.SHARED_USTK_ID[ARGV[1]])$
367$ // 共有スタック
368 $TAB$$TAB$$TAB$$FORMAT("&__start_shared_user_stack%s", TSK.PRIORITY[ARGV[1]])$,$NL$
369 $TAB$$TAB$$TAB$$FORMAT("&__limit_shared_user_stack%s", TSK.PRIORITY[ARGV[1]])$,$NL$
370 $ELSE$
371$ // 固有スタック
372 $TAB$$TAB$$TAB$$FORMAT("&__start_user_stack%s", ARGV[1])$,$NL$
373 $TAB$$TAB$$TAB$$FORMAT("&__limit_user_stack%s", ARGV[1])$,$NL$
374 $END$
375 $ELSE$
376$ // stkがNULLでない場合の処理
377 $TAB$$TAB$$TAB$$FORMAT("(uint8 *)%s", TSK.TINIB_USTK[ARGV[1]])$,$NL$
378 $TAB$$TAB$$TAB$$FORMAT("(uint8 *)((uint32)%s + %d)", TSK.TINIB_USTK[ARGV[1]], TSK.TINIB_USTKSZ[ARGV[1]])$,$NL$
379 $END$
380 $END$
381 $TAB$$TAB$},$NL$
382$END$
383
384$INCLUDE "arch/v850_gcc/prc_common.tf"$
385
386$IF __v850e2v3__$
387
388$ 割込みベクタと各割込み入口処理(V850E2V3のみ)
389
390$FILE "Os_Lcfg_asm.S"$
391
392
393$
394$ アセンブラ出力用の関数群
395$
396
397$FUNCTION EXCEPTION_VECTOR_SECTION$
398$TAB$.section .vector,"ax"$NL$
399$END$
400
401$FUNCTION ASM_GLOBAL$
402 $TAB$.global $ARGV[1]$
403$END$
404
405$FUNCTION ASM_LABEL$
406 FLABEL($ARGV[1]$)
407$END$
408
409$FUNCTION ASM_COMMENT$
410 //
411$END$
412
413
414#include <v850asm.inc>$NL$$NL$
415
416$VECTOR_ASMOUT()$
417
418$END$
419$ =end IF __v850e2v3__
420
421
422$IF __v850e3v5__$
423
424$
425$ テーブル参照方式用ベクタテーブル(v850e3v5)
426$
427
428extern void interrupt(void);$NL$
429const uint32 __attribute__((aligned(512))) intbp_tbl[TNUM_INT] = {$NL$
430$JOINEACH intno INTNO_VALID "\n"$
431 $isrid = INT.ISRID[intno]$
432 $IF LENGTH(isrid) && EQ(ISR.CATEGORY[isrid], "CATEGORY_1")$
433 $TAB$(uint32)&$ISR.INT_ENTRY[isrid]$
434 $ELSE$
435 $TAB$(uint32)&interrupt
436 $END$
437$ //カンマの出力(最後の要素の後ろに出力しない)
438 $IF intno != AT(INTNO_VALID,LENGTH(INTNO_VALID) - 1)$
439 ,
440 $END$
441 $TAB$$FORMAT("/* %d */", intno)$
442$END$
443$NL$};$NL$
444
445$END$
446
447$
448$ arch/gcc/ldscript.tfのターゲット依存部
449$
450
451$FUNCTION GENERATE_MEMORY$
452 $NOOP()$
453$END$
454
455$FUNCTION GENERATE_OUTPUT$
456 OUTPUT_FORMAT("elf32-v850-rh850","elf32-v850-rh850","elf32-v850-rh850")$NL$
457 OUTPUT_ARCH(v850-rh850)$NL$
458 $NL$
459$END$
460
461$FUNCTION GENERATE_PROVIDE$
462 PROVIDE(_hardware_init_hook = 0);$NL$
463 PROVIDE(_software_init_hook = 0);$NL$
464 PROVIDE(_software_term_hook = 0);$NL$
465 PROVIDE(_bsssecinib_table = 0);$NL$
466 PROVIDE(_tnum_bsssec = 0);$NL$
467 PROVIDE(_datasecinib_table = 0);$NL$
468 PROVIDE(_tnum_datasec = 0);$NL$
469 $NL$
470
471 $IF LENGTH(OSAP.ID_LIST)$
472 $FOREACH domid OSAP.ID_LIST$
473 $IF !OSAP.TRUSTED[domid]$
474$ RX領域(専用)
475 PROVIDE(___start_text_$OSAP.LABEL[domid]$ = 0xfffffff0);$NL$
476 PROVIDE(___limit_text_$OSAP.LABEL[domid]$ = 0xfffffff0);$NL$
477$ R領域(専用)
478 PROVIDE(___start_sram_$OSAP.LABEL[domid]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ = 0xfffffff0);$NL$
479 PROVIDE(___limit_sram_$OSAP.LABEL[domid]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ = 0xfffffff0);$NL$
480$ RWX領域(専用)
481 PROVIDE(___start_ram_$OSAP.LABEL[domid]$ = 0xfffffff0);$NL$
482 PROVIDE(___limit_ram_$OSAP.LABEL[domid]$ = 0xfffffff0);$NL$
483 PROVIDE(___start_sram_$OSAP.LABEL[domid]$ = 0xfffffff0);$NL$
484 PROVIDE(___limit_sram_$OSAP.LABEL[domid]$ = 0xfffffff0);$NL$
485$ 共有リード専用ライト
486 PROVIDE($FORMAT("___start_ram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$ = 0xfffffff0);$NL$
487 PROVIDE($FORMAT("___limit_ram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$ = 0xfffffff0);$NL$
488 PROVIDE($FORMAT("___start_sram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$ = 0xfffffff0);$NL$
489 PROVIDE($FORMAT("___limit_sram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$ = 0xfffffff0);$NL$
490 $END$
491 $END$
492 $NL$
493 $END$$NL$
494
495$ 共有領域
496 PROVIDE(___start_text_$OSAP.LABEL[TDOM_NONE]$ = 0xfffffff0);$NL$
497 PROVIDE(___limit_text_$OSAP.LABEL[TDOM_NONE]$ = 0xfffffff0);$NL$
498 PROVIDE(___start_sram_$OSAP.LABEL[TDOM_NONE]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ = 0xfffffff0);$NL$
499 PROVIDE(___limit_sram_$OSAP.LABEL[TDOM_NONE]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ = 0xfffffff0);$NL$
500 PROVIDE(___start_ram_$OSAP.LABEL[TDOM_NONE]$ = 0xfffffff0);$NL$
501 PROVIDE(___limit_ram_$OSAP.LABEL[TDOM_NONE]$ = 0xfffffff0);$NL$
502 PROVIDE(___start_sram_$OSAP.LABEL[TDOM_NONE]$ = 0xfffffff0);$NL$
503 PROVIDE(___limit_sram_$OSAP.LABEL[TDOM_NONE]$ = 0xfffffff0);$NL$
504$ 共有リード専用ライト領域全体
505 PROVIDE(___start_srpw_all = 0xfffffff0);$NL$
506 PROVIDE(___limit_srpw_all = 0xfffffff0);$NL$
507 PROVIDE(___start_ssrpw_all = 0xfffffff0);$NL$
508 PROVIDE(___limit_ssrpw_all = 0xfffffff0);$NL$
509 STARTUP(start.o);$NL$
510 ENTRY(__reset);$NL$
511 $NL$
512$END$
513
514$FUNCTION GENERATE_GP_LABEL$
515 $TAB$$TAB$__gp = . + 32K;$NL$
516 $TAB$$TAB$__tp = . + 32K;$NL$
517$END$
518
519$FILE "kernel_mem2.c"$
520
521$IF __v850e2v3__$
522$ // v850
523$TNUM_SHARED_REGION = 3$
524const uint32 tnum_shared_mem = $TNUM_SHARED_REGION * 2$;$NL$
525uint8 * const shared_meminib_table[$TNUM_SHARED_REGION * 2$] = {$NL$
526$TAB$((uint8 *)&__start_text_$OSAP.LABEL[TDOM_NONE]$),$TAB$/* iregion 2 */$NL$
527$TAB$((uint8 *)&__limit_text_$OSAP.LABEL[TDOM_NONE]$),$TAB$/* iregion 2 */$NL$
528
529$TAB$((uint8 *)NULL),$TAB$/* iregion 3 */$NL$
530$TAB$((uint8 *)NULL),$TAB$/* iregion 3 */$NL$
531
532$TAB$((uint8 *)NULL),$TAB$/* dregion 5 */$NL$
533$TAB$((uint8 *)NULL),$TAB$/* dregion 5 */$NL$
534};$NL$
535$NL$
536$ELIF __v850e3v5__$
537$ // rh850
538$TNUM_SHARED_REGION = 1$
539const uint32 tnum_shared_mem = $TNUM_SHARED_REGION * 2$;$NL$
540uint8 * const shared_meminib_table[$TNUM_SHARED_REGION * 2$] = {$NL$
541$TAB$((uint8 *)NULL),$TAB$/* MPLA 3 */$NL$
542$TAB$((uint8 *)NULL),$TAB$/* MPUA 3 */$NL$
543};$NL$
544$NL$
545$ const uint32 mpu_region_control = 0x01; /* MPRC */$NL$
546$ $NL$
547$END$
548
549$
550$ GCC依存部のテンプレートファイルのインクルード
551$
552$INCLUDE "gcc/ldscript.tf"$
553
554$FILE "cfg2_out.tf"$
555$ LNKSEC.*の出力
556$$numls = $numls$$$$NL$
557$NL$
558$FOREACH lsid RANGE(1, numls)$
559 $$LNKSEC.MEMREG[$lsid$] = $LNKSEC.MEMREG[lsid]$$$$NL$
560 $$LNKSEC.SECTION[$lsid$] = $ESCSTR(LNKSEC.SECTION[lsid])$$$$NL$
561 $NL$
562$END$
563
564$JOINEACH tskid TSK.ID_LIST "\n"$
565 $$TSK.ID[$+tskid$] = $TSK.ID[tskid]$$$
566$END$
567$NL$
568
Note: See TracBrowser for help on using the repository browser.