source: atk2-sc3-1.4.0-ntisr/arch/v850_ghs/prc.tf@ 172

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

ATK2-SC3 1.4.0 RH850依存部 非信頼C2ISR対応を追加

File size: 16.0 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-2014 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$ 上記著作権者
20は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
21$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
22$ 変・再é…
23å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
24$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
25$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
26$ スコード中に含まれていること.
27$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
28$ 用できる形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
30å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
31$ 者
32マニュアルなど)に,上記の著作権表示,この利用条件および下記
33$ の無保証規定を掲載すること.
34$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
35$ 用できない形で再é…
36å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
37$ と.
38$ (a) 再é…
39å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
40マニュアルなど)に,上記の著
41$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
42$ (b) 再é…
43å¸ƒã®å½¢æ…
44‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
45$ 報告すること.
46$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
47$ 害からも,上記著作権者
48およびTOPPERSプロジェクトをå…
49è²¬ã™ã‚‹ã“と.
50$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
51$ 由に基づく請求からも,上記著作権者
52およびTOPPERSプロジェクトを
53$ å…
54è²¬ã™ã‚‹ã“と.
55$
56$ 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
57$ 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
58$ はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
59$ 用する者
60に対して,AUTOSARパートナーになることを求めている.
61$
62$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者
63お
64$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
65$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
66$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
67$ の責任を負わない.
68$
69$ $Id: prc.tf 189 2015-06-26 01:54:57Z t_ishikawa $
70$
71
72$
73$ パス2のアーキテクチャ依存テンプレート(V850用)
74$
75
76$
77$ kernel/kernel.tf のターゲット依存部
78$
79
80$
81$ 標準のセクションに関する定義
82$ DSEC.ORDER_LIST:IDのリスト
83$
84$DSEC.ORDER_LIST = RANGE(0,7)$
85
86$
87$ ユーザスタック領域を確保するコードを出力する
88$ ARGV[1]:タスクID
89$ ARGV[2]:スタックサイズ
90$
91$FUNCTION ALLOC_USTACK$
92 StackType _kernel_ustack_$ARGV[1]$[COUNT_STK_T($ARGV[2]$)]
93 $SPC$__attribute__((section($FORMAT("\".user_stack.%s\"", ARGV[1])$)));$NL$
94
95 $TSK.TINIB_USTKSZ[ARGV[1]] = VALUE(FORMAT("ROUND_STK_T(%s)", ARGV[2]), +ARGV[2])$
96 $TSK.TINIB_USTK[ARGV[1]] = FORMAT("_kernel_ustack_%s", ARGV[1])$
97$END$
98
99$FUNCTION ALLOC_USTACK_ISR$
100 StackType _kernel_ustack_$ARGV[1]$[COUNT_STK_T($ARGV[2]$)]
101 $SPC$__attribute__((section($FORMAT("\".user_stack.%s\"", ARGV[1])$)));$NL$
102
103 $ISR.TINIB_USTKSZ[ARGV[1]] = VALUE(FORMAT("ROUND_STK_T(%s)", ARGV[2]), +ARGV[2])$
104 $ISR.TINIB_USTK[ARGV[1]] = FORMAT("_kernel_ustack_%s", ARGV[1])$
105$END$
106
107$
108$ ユーザスタック領域のセクション名を返す
109$ ARGV[1]:タスクID
110$
111$FUNCTION SECTION_USTACK$
112 $RESULT = FORMAT(".user_stack.%s", ARGV[1])$
113$END$
114
115$
116$ ユーザスタックのアライメント制約に合わせたサイズを返す
117$ ARGV[1]:スタックサイズ(アライン前)
118$ kernel.tfから呼ばれる
119$
120$FUNCTION USTACK_ALIGN_SIZE$
121 $RESULT = (ARGV[1] + CHECK_USTKSZ_ALIGN - 1) & ~(CHECK_USTKSZ_ALIGN - 1)$
122$END$
123
124$
125$ 基本タスクのå…
126±æœ‰ã‚¹ã‚¿ãƒƒã‚¯ã®ç¢ºä¿
127$ ARGV[1]:å…
128±æœ‰ã‚¹ã‚¿ãƒƒã‚¯å
129$ ARGV[2]:å…
130±æœ‰ã‚¹ã‚¿ãƒƒã‚¯ID(タスク優å…
131ˆåº¦)
132$ ARGV[3]:スタックサイズ(アライメント調整済み)
133$ kernel.tfから呼ばれる
134$
135$FUNCTION ALLOC_SHARED_USTACK$
136 StackType $ARGV[1]$[COUNT_STK_T(ROUND_STK_T($ARGV[3]$))]
137 $SPC$__attribute__((section($FORMAT("\".shared_user_stack.%s\"", ARGV[2])$)));$NL$
138$END$
139
140$
141$ 基本タスクのå…
142±æœ‰ã‚¹ã‚¿ãƒƒã‚¯ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³å
143$ ARGV[1]:å…
144±æœ‰ã‚¹ã‚¿ãƒƒã‚¯ID(タスク優å…
145ˆåº¦)
146$ kernel.tfから呼ばれる
147$
148$FUNCTION SECTION_SHARED_USTACK$
149 $RESULT = FORMAT(".shared_user_stack.%s", ARGV[1])$
150$END$
151
152$
153$ 定数領域をROMに置くための定数宣言
154$ データセクションの初期化をする前に参ç…
155§ã•ã‚Œã‚‹å®šæ•°ã¯
156$ すべてROMにé…
157ç½®ã™ã‚‹å¿…
158要がある
159$ ARGV[1]:定数の型
160$ ARGV[2]:定数のラベル名
161$ kernel.tfから呼ばれる
162$
163$FUNCTION DEFINE_CONST_VAR$
164 $ARGV[1]$$SPC$__attribute__((section(".rodata_kernel"), aligned(4)))$SPC$$ARGV[2]$$SPC$
165$END$
166
167$
168$ ユーザモードで実行される割込みハンドラ領域を
169$ ユーザ空間に置くための宣言
170$ ARGV[1]:ISR ID
171$ kernel.tfから呼ばれる
172$
173$FUNCTION GENERATE_USER_INTHDR$
174 extern void $ISR.INT_ENTRY[ARGV[1]]$(void)$SPC$
175 __attribute__((section(".text_shared")));$NL$
176 void$NL$
177 $ISR.INT_ENTRY[ARGV[1]]$(void)$NL$
178 {$NL$
179 $TAB$i_begin_int($+ISR.INTNO[ARGV[1]]$U);$NL$
180 $TAB$LOG_ISR_ENTER($ARGV[1]$);$NL$
181 $TAB$ISRNAME($ARGV[1]$)();$NL$
182 $TAB$LOG_ISR_LEAVE($ARGV[1]$);$NL$
183 $TAB$i_end_int($+ISR.INTNO[ARGV[1]]$U);$NL$
184 }$NL$
185$END$
186
187$
188$ OSAP初期化コンテキストブロックのための宣言
189$
190$FUNCTION PREPARE_OSAPINICTXB$
191$ データセクション初期化テーブルをROMにé…
192ç½®ã™ã‚‹
193$ rosdata領域はRAMにé…
194ç½®ã•ã‚Œã‚‹ãŸã‚ï¼Œãƒ‡ãƒ¼ã‚¿ã‚»ã‚¯ã‚·ãƒ§ãƒ³åˆæœŸåŒ–テーブルをsdata化すると
195$ データセクションの初期化に失敗する
196 extern const uint32 __attribute__((section(".rodata_kernel"), aligned(4))) tnum_datasec;$NL$
197 extern const DATASECINIB __attribute__((section(".rodata_kernel"), aligned(4))) datasecinib_table[];$NL$
198 extern const uint32 __attribute__((section(".rodata_kernel"), aligned(4))) tnum_bsssec;$NL$
199 extern const BSSSECINIB __attribute__((section(".rodata_kernel"), aligned(4))) bsssecinib_table[];$NL$
200$END$
201
202$FUNCTION ASM_MACRO$
203 .macro $ARGV[1]$ $ARGV[2]$
204$END$
205
206$INCLUDE "arch/v850_gcc/prc_common.tf"$
207
208$IF __v850e2v3__$
209
210$
211$ 割込みベクタと各割込みå…
212¥å£å‡¦ç†
213$
214
215$FILE "Os_Lcfg.c"$
216
217$
218$ ベクタテーブル(例外要因å…
219¨ã¦ã‚’作成))
220$
221$E_OS_PROTECTION_MEMORY = 14$
222$E_OS_PROTECTION_EXCEPTION = 22$
223
224extern void _reset(void) __attribute__((section (".vector")));$NL$
225void$NL$
226_reset(void)$NL$
227{$NL$
228$
229$ ベクタテーブル(リセット)
230$
231 $TAB$Asm(".extern ___start");$NL$
232 $TAB$Asm("jr __start");
233 $FORMAT(" /* Exception 0x%x */", 0)$$NL$
234 $TAB$Asm("nop");$NL$
235 $TAB$Asm("nop");$NL$
236 $TAB$Asm("nop");$NL$
237 $TAB$Asm("nop");$NL$
238 $TAB$Asm("nop");$NL$
239 $TAB$Asm("nop");$NL$
240$
241$ ベクタテーブル(例外 No1-7)
242$
243$ 例外 No1
244 $TAB$Asm("ldsr r2, eiwr /* 0x00: eiwr */");$NL$
245 $TAB$Asm("movea $E_OS_PROTECTION_EXCEPTION$, r0, r2");$NL$
246 $TAB$Asm("jr _fe_exception_entry");
247 $FORMAT(" /* Exception 0x%x */", 1)$$NL$
248 $TAB$Asm("nop");$NL$
249 $TAB$Asm("nop");$NL$
250$ 例外 No2
251 $TAB$Asm("ldsr r2, eiwr /* 0x00: eiwr */");$NL$
252 $TAB$Asm("movea $E_OS_PROTECTION_EXCEPTION$, r0, r2");$NL$
253 $TAB$Asm("jr _fe_exception_entry");
254 $FORMAT(" /* Exception 0x%x */", 2)$$NL$
255 $TAB$Asm("nop");$NL$
256 $TAB$Asm("nop");$NL$
257$ 例外 No3
258 $TAB$Asm("ldsr r2, eiwr /* 0x00: eiwr */");$NL$
259 $TAB$Asm("movea $E_OS_PROTECTION_MEMORY$, r0, r2");$NL$
260 $TAB$Asm("jr _fe_exception_entry");
261 $FORMAT(" /* Exception 0x%x */", 3)$$NL$
262 $TAB$Asm("nop");$NL$
263 $TAB$Asm("nop");$NL$
264$ 例外 No4
265 $TAB$Asm("ldsr r2, eiwr /* 0x00: eiwr */");$NL$
266 $TAB$Asm("movea $E_OS_PROTECTION_EXCEPTION$, r0, r2");$NL$
267 $TAB$Asm("jr _ei_exception_entry");
268 $FORMAT(" /* Exception 0x%x */", 4)$$NL$
269 $TAB$Asm("nop");$NL$
270 $TAB$Asm("nop");$NL$
271$ 例外 No5
272 $TAB$Asm("ldsr r2, eiwr /* 0x00: eiwr */");$NL$
273 $TAB$Asm("movea $E_OS_PROTECTION_EXCEPTION$, r0, r2");$NL$
274 $TAB$Asm("jr _fe_exception_entry");
275 $FORMAT(" /* Exception 0x%x */", 5)$$NL$
276 $TAB$Asm("nop");$NL$
277 $TAB$Asm("nop");$NL$
278$ 例外 No6
279 $TAB$Asm("nop");
280 $FORMAT(" /* Exception 0x%x */", 6)$$NL$
281 $TAB$Asm("nop");$NL$
282 $TAB$Asm("nop");$NL$
283 $TAB$Asm("nop");$NL$
284 $TAB$Asm("nop");$NL$
285 $TAB$Asm("nop");$NL$
286 $TAB$Asm("nop");$NL$
287 $TAB$Asm("nop");$NL$
288$ 例外 No7
289 $TAB$Asm("ldsr r2, eiwr /* 0x00: eiwr */");$NL$
290 $TAB$Asm("movea $E_OS_PROTECTION_EXCEPTION$, r0, r2");$NL$
291 $TAB$Asm("jr _fe_exception_entry");
292 $FORMAT(" /* Exception 0x%x */", 7)$$NL$
293 $TAB$Asm("nop");$NL$
294 $TAB$Asm("nop");$NL$
295
296
297
298$
299$ ベクタテーブル(EIレベル マスカブル割込み用(8-255)
300$
301$FOREACH intno INTNO_VALID$
302$TAB$/* $FORMAT("0x%x",intno*16 + 0x80)$ */ $NL$
303 $isrid = INT.ISRID[intno]$
304 $IF LENGTH(isrid)$
305 $IF EQ(ISR.CATEGORY[isrid], "CATEGORY_2")$
306 $TAB$Asm("ldsr r2, eiwr /* 0x00: eiwr */");$NL$
307 $TAB$Asm("movea $intno$, r0, r2 /* 0x06: r2 = intno */");$NL$
308 $TAB$Asm("jr _interrupt /* 0x0A */");$NL$
309 $TAB$Asm("nop /* 0x0E */");$NL$
310 $TAB$Asm("nop /* 0x0E */");$NL$
311 $ELSE$
312 $TAB$Asm("jr _$ISR.INT_ENTRY[isrid]$");$NL$
313 $TAB$Asm("nop");$NL$
314 $TAB$Asm("nop");$NL$
315 $TAB$Asm("nop");$NL$
316 $TAB$Asm("nop");$NL$
317 $TAB$Asm("nop");$NL$
318 $TAB$Asm("nop");$NL$
319 $END$
320 $ELSE$
321$ // 割込みハンドラの登録がない場合
322 $TAB$Asm("jr _default_int_handler");$NL$
323 $TAB$Asm("nop");$NL$
324 $TAB$Asm("nop");$NL$
325 $TAB$Asm("nop");$NL$
326 $TAB$Asm("nop");$NL$
327 $TAB$Asm("nop");$NL$
328 $TAB$Asm("nop");$NL$
329 $END$
330$END$
331}$NL$
332$END$
333$ =end IF __v850e2v3__
334
335$IF __v850e3v5__$
336
337$
338$ テーブル参ç…
339§æ–¹å¼ç”¨ãƒ™ã‚¯ã‚¿ãƒ†ãƒ¼ãƒ–ル(v850e3v5)
340$
341
342extern void interrupt(void);$NL$
343const uint32 __attribute__((aligned(512))) intbp_tbl[TNUM_INT] = {$NL$
344$JOINEACH intno INTNO_VALID "\n"$
345 $isrid = INT.ISRID[intno]$
346 $IF LENGTH(isrid) && EQ(ISR.CATEGORY[isrid], "CATEGORY_1")$
347 $TAB$(uint32)&$ISR.INT_ENTRY[isrid]$
348 $ELSE$
349 $TAB$(uint32)&interrupt
350 $END$
351$ //カンマの出力(最後の要素の後ろに出力しない)
352 $IF intno != AT(INTNO_VALID,LENGTH(INTNO_VALID) - 1)$
353 ,
354 $END$
355 $TAB$$FORMAT("/* %d */", intno)$
356$END$
357$NL$};$NL$
358
359$END$
360
361$
362$ arch/gcc/ldscript.tfのターゲット依存部
363$
364
365$FUNCTION GENERATE_MEMORY$
366 $NOOP()$
367$END$
368
369$FUNCTION GENERATE_OUTPUT$
370 $NL$
371$END$
372
373$FUNCTION GENERATE_PROVIDE$
374 provide(_hardware_init_hook = 0);$NL$
375 provide(_software_init_hook = 0);$NL$
376 provide(software_term_hook = 0);$NL$
377 provide(_bsssecinib_table = 0);$NL$
378 provide(_tnum_bsssec = 0);$NL$
379 provide(_datasecinib_table = 0);$NL$
380 provide(_tnum_datasec = 0);$NL$
381 $NL$
382
383 $IF LENGTH(OSAP.ID_LIST)$
384 $FOREACH domid OSAP.ID_LIST$
385 $IF !OSAP.TRUSTED[domid]$
386$ RX領域(専用)
387 provide(___start_text_$OSAP.LABEL[domid]$ = $MPU_PAGE_MASK$);$NL$
388 provide(___limit_text_$OSAP.LABEL[domid]$ = $MPU_PAGE_MASK$);$NL$
389$ R領域(専用)
390 provide(___start_sram_$OSAP.LABEL[domid]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ = $MPU_PAGE_MASK$);$NL$
391 provide(___limit_sram_$OSAP.LABEL[domid]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ = $MPU_PAGE_MASK$);$NL$
392$ RWX領域(専用)
393 provide(___start_ram_$OSAP.LABEL[domid]$ = $MPU_PAGE_MASK$);$NL$
394 provide(___limit_ram_$OSAP.LABEL[domid]$ = $MPU_PAGE_MASK$);$NL$
395 provide(___start_sram_$OSAP.LABEL[domid]$ = $MPU_PAGE_MASK$);$NL$
396 provide(___limit_sram_$OSAP.LABEL[domid]$ = $MPU_PAGE_MASK$);$NL$
397$ å…
398±æœ‰ãƒªãƒ¼ãƒ‰å°‚用ライト
399 provide($FORMAT("___start_ram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$ = $MPU_PAGE_MASK$);$NL$
400 provide($FORMAT("___limit_ram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$ = $MPU_PAGE_MASK$);$NL$
401 provide($FORMAT("___start_sram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$ = $MPU_PAGE_MASK$);$NL$
402 provide($FORMAT("___limit_sram_%s_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +TACP_SHARED)$ = $MPU_PAGE_MASK$);$NL$
403 provide($FORMAT("___start_sram_%s_%x_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +DEFAULT_ACPTN[domid], +MEMATR_ROSDATA)$ = $MPU_PAGE_MASK$);$NL$
404 provide($FORMAT("___limit_sram_%s_%x_%x_%x", OSAP.LABEL[domid], +DEFAULT_ACPTN[domid], +DEFAULT_ACPTN[domid], +MEMATR_ROSDATA)$ = $MPU_PAGE_MASK$);$NL$
405 $END$
406 $END$
407 $NL$
408 $END$$NL$
409
410$ å…
411±æœ‰é ˜åŸŸ
412 provide(___start_text_$OSAP.LABEL[TDOM_NONE]$ = $MPU_PAGE_MASK$);$NL$
413 provide(___limit_text_$OSAP.LABEL[TDOM_NONE]$ = $MPU_PAGE_MASK$);$NL$
414 provide(___start_sram_$OSAP.LABEL[TDOM_NONE]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ = $MPU_PAGE_MASK$);$NL$
415 provide(___limit_sram_$OSAP.LABEL[TDOM_NONE]$_$FORMAT("%x", MEMATR_ROSDATA & ~TA_MEMINI)$ = $MPU_PAGE_MASK$);$NL$
416 provide(___start_ram_$OSAP.LABEL[TDOM_NONE]$ = $MPU_PAGE_MASK$);$NL$
417 provide(___limit_ram_$OSAP.LABEL[TDOM_NONE]$ = $MPU_PAGE_MASK$);$NL$
418 provide(___start_sram_$OSAP.LABEL[TDOM_NONE]$ = $MPU_PAGE_MASK$);$NL$
419 provide(___limit_sram_$OSAP.LABEL[TDOM_NONE]$ = $MPU_PAGE_MASK$);$NL$
420$ å…
421±æœ‰ãƒªãƒ¼ãƒ‰å°‚用ライト領域å…
422¨ä½“
423 provide(___start_srpw_all = $MPU_PAGE_MASK$);$NL$
424 provide(___limit_srpw_all = $MPU_PAGE_MASK$);$NL$
425 provide(___start_ssrpw_all = $MPU_PAGE_MASK$);$NL$
426 provide(___limit_ssrpw_all = $MPU_PAGE_MASK$);$NL$
427 $NL$
428$END$
429
430$FUNCTION GENERATE_GP_LABEL$
431 $TAB$$TAB$__gp = . + 32K;$NL$
432$END$
433
434$FILE "kernel_mem2.c"$
435
436$IF TNUM_MPU_SHARED > 0$
437uint8 * const shared_meminib_table[$TNUM_MPU_SHARED * 3$] = {$NL$
438$FOREACH memid RANGE(0, TNUM_MPU_SHARED - 1)$
439 $TAB$((uint8 *)NULL),$TAB$/* MPUL $TNUM_MPU_REG - memid$ */$NL$
440 $TAB$((uint8 *)NULL),$TAB$/* MPUA $TNUM_MPU_REG - memid$ */$NL$
441 $TAB$((uint8 *)NULL),$TAB$/* MPAT $TNUM_MPU_REG - memid$ */$NL$
442$END$
443};$NL$
444$NL$
445$END$
446
447$
448$ GHS依存部のldscript.tfのインクルード
449$
450$INCLUDE "ghs/ldscript.tf"$
451
452$FILE "cfg2_out.tf"$
453$ LNKSEC.*の出力
454$$numls = $numls$$$$NL$
455$NL$
456$FOREACH lsid RANGE(1, numls)$
457 $$LNKSEC.MEMREG[$lsid$] = $LNKSEC.MEMREG[lsid]$$$$NL$
458 $$LNKSEC.SECTION[$lsid$] = $ESCSTR(LNKSEC.SECTION[lsid])$$$$NL$
459 $NL$
460$END$
461
462$JOINEACH tskid TSK.ID_LIST "\n"$
463 $$TSK.ID[$+tskid$] = $TSK.ID[tskid]$$$
464$END$
465$NL$
466
467$lma = 0$
468$FOREACH moid MO_ORDER$
469 $IF MO.LINKER[moid] && ((MO.SEFLAG[moid] & 0x01) != 0)$
470 $IF !OMIT_IDATA && !EQ(MO.ILABEL[moid], "")$
471 $$LMA.START_IDATA[$lma$] = "$PREFIX_START$$MO.ILABEL[moid]$"$$$NL$
472 $$LMA.START_DATA[$lma$] = "$PREFIX_START$$MO.SLABEL[moid]$"$$$NL$
473 $$LMA.END_DATA[$lma$] = "$PREFIX_END$$MO.SLABEL[moid]$"$$$NL$
474 $lma = lma + 1$
475 $END$
476 $END$
477$END$
478$$LMA.ORDER_LIST = RANGE(0, $lma - 1$)$$$NL$
479$NL$
Note: See TracBrowser for help on using the repository browser.