source: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc.tf

Last change on this file was 95, checked in by nmir-saito, 9 years ago

ファイルの mime-type 変更

  • Property svn:mime-type set to text/plain; charset=shift_jis
File size: 3.0 KB
Line 
1$
2$ パス2のアーキテクチャ依存テンプレート(ARM-M用)
3$
4
5$
6$ 有効な割込み番号,割込みハンドラ番号
7$
8$INTNO_VALID = RANGE(15, TMAX_INTNO)$
9$INHNO_VALID = INTNO_VALID$
10
11$
12$ 有効なCPU例外番号
13$
14$EXCNO_VALID = { 2,3,4,5,6,11,12,14 }$
15
16$
17$ ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
18$
19$INTNO_ATTISR_VALID = INTNO_VALID$
20$INHNO_ATTISR_VALID = INHNO_VALID$
21
22$
23$ DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号
24$
25$INHNO_DEFINH_VALID = INHNO_VALID$
26$EXCNO_DEFEXC_VALID = EXCNO_VALID$
27
28$
29$ チェック方法の指定
30$
31$CHECK_STKSZ_ALIGN = 8$
32
33$
34$ CFG_INTで使用できる割込み番号と割込み優先度
35$
36$INTNO_CFGINT_VALID = INTNO_VALID$
37$INTPRI_CFGINT_VALID = RANGE(-(1 << TBITW_IPRI),-1)$
38
39$
40$ 割込み属性中のターゲット依存に用いるビット
41$
42$ TARGET_INTATR = $
43
44$
45$ 標準テンプレートファイルのインクルード
46$
47$INCLUDE "kernel/kernel.tf"$
48
49/*$NL$
50$SPC$* Target-dependent Definitions (ARM-M)$NL$
51$SPC$*/$NL$
52$NL$
53
54$
55$ ベクターテーブル
56$
57
58$FILE "kernel_cfg.c"$
59$NL$
60
61extern void kernel_svc_handler(void);$NL$
62$NL$
63
64__attribute__ ((section(".vector"))) $NL$
65const FP _kernel_vector_table[] = $NL$
66{ $NL$
67$ $TAB$(FP)(TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ)), // 0 The initial stack pointer $NL$
68 $TAB$(FP)(TOPPERS_ISTKPT(TOPPERS_STK, TOPPERS_STKSZ)), // 0 The initial stack pointer $NL$
69 $TAB$(FP)_start, // 1 The reset handler $NL$
70
71$FOREACH excno {2,3,...,14}$
72 $IF excno == 11$
73 $TAB$(FP)(kernel_svc_handler), // 11 SVCall handler
74 $ELSE$
75 $TAB$(FP)(_kernel_exc_entry),
76 $END$
77 $SPC$$FORMAT("/* %d */", +excno)$$NL$
78$END$
79
80$FOREACH inhno INTNO_VALID$
81 $IF LENGTH(INH.INHNO[inhno]) && (INT.INTPRI[inhno] < TIPM_LOCK)$
82 $TAB$(FP)($INH.INTHDR[inhno]$),
83 $ELSE$
84 $TAB$(FP)(_kernel_int_entry),
85 $END$
86 $SPC$$FORMAT("/* %d */", +inhno)$$NL$
87$END$
88
89
90$NL$};$NL$
91$NL$
92
93$NL$
94const FP _kernel_exc_tbl[] = $NL$
95{$NL$
96$FOREACH excno {0,1,...,14}$
97 $IF LENGTH(EXC.EXCNO[excno])$
98 $TAB$(FP)($EXC.EXCHDR[excno]$),
99 $ELSE$
100 $TAB$(FP)(_kernel_default_exc_handler),
101 $END$
102 $SPC$$FORMAT("/* %d */", +excno)$$NL$
103$END$
104
105
106$FOREACH inhno INTNO_VALID$
107 $IF LENGTH(INH.INHNO[inhno])$
108 $TAB$(FP)($INH.INTHDR[inhno]$),
109 $ELSE$
110 $TAB$(FP)(_kernel_default_int_handler),
111 $END$
112 $SPC$$FORMAT("/* %d */", +inhno)$$NL$
113$END$
114
115
116$NL$};$NL$
117$NL$
118
119$
120$ _kernel_bitpat_cfgintの生成
121$
122
123$bitpat_cfgint_num = 0$
124$bitpat_cfgint = 0$
125
126
127const uint32_t _kernel_bitpat_cfgint[
128$IF (TMAX_INTNO & 0x0f) == 0x00 $
129 $bitpat_cfgint_num = (TMAX_INTNO >> 4)$
130$ELSE$
131 $bitpat_cfgint_num = (TMAX_INTNO >> 4) + 1$
132$END$
133 $bitpat_cfgint_num$
134] = {$NL$
135$FOREACH num RANGE(0,(bitpat_cfgint_num-1))$
136 $bitpat_cfgint = 0$
137 $FOREACH inhno RANGE(num*32, (num*32)+31)$
138 $IF LENGTH(INH.INHNO[inhno])$
139 $bitpat_cfgint = bitpat_cfgint | (1 << (inhno & 0x01f))$
140 $END$
141 $END$
142 $TAB$UINT32_C($FORMAT("0x%08x", bitpat_cfgint)$), $NL$
143$END$
144
145$NL$};$NL$
146$NL$
Note: See TracBrowser for help on using the repository browser.