source: asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc.tf@ 61

Last change on this file since 61 was 61, checked in by ertl-honda, 11 years ago

ASP for EWARM のコミット.

File size: 3.5 KB
Line 
1$
2$ ƒpƒX2‚̃A[ƒLƒeƒNƒ`ƒƒˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiARM-M—pj
3$
4
5$
6$ —LŒø‚ÈŠ„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†
7$
8$INTNO_VALID = RANGE(15, TMAX_INTNO)$
9$INHNO_VALID = INTNO_VALID$
10
11$
12$ —LŒø‚ÈCPU—áŠO”ԍ†
13$
14$EXCNO_VALID = { 2,3,4,5,6,11,12,14 }$
15
16$
17$ ATT_ISR‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚Æ‚»‚ê‚ɑΉž‚·‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†
18$
19$INTNO_ATTISR_VALID = INTNO_VALID$
20$INHNO_ATTISR_VALID = INHNO_VALID$
21
22$
23$ DEF_INT^DEF_EXC‚ÅŽg—p‚Å‚«‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†^CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†
24$
25$INHNO_DEFINH_VALID = INHNO_VALID$
26$EXCNO_DEFEXC_VALID = EXCNO_VALID$
27
28$
29$ ƒ`ƒFƒbƒN•û–@‚ÌŽw’è
30$
31$CHECK_STKSZ_ALIGN = 8$
32
33$
34$ CFG_INT‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚ÆŠ„ž‚Ý—Dæ“x
35$
36$INTNO_CFGINT_VALID = INTNO_VALID$
37$INTPRI_CFGINT_VALID = RANGE(-(1 << TBITW_IPRI),-1)$
38
39$
40$ Š„ž‚Ý‘®«’†‚̃^[ƒQƒbƒgˆË‘¶‚É—p‚¢‚éƒrƒbƒg
41$
42$ TARGET_INTATR = $
43
44$
45$ •W€ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
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$ ƒxƒNƒ^[ƒe[ƒuƒ‹
56$
57$FILE "kernel_cfg.c"$
58$NL$
59#pragma location=".intvec" $NL$
60const FP _kernel_vector_table[] = $NL$
61{ $NL$
62 $TAB$(FP)(TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ)), // 0 The initial stack pointer $NL$
63 $TAB$(FP)_start, // 1 The reset handler $NL$
64
65$FOREACH excno {2,3,...,14}$
66 $IF excno == 11$
67 $TAB$(FP)(_kernel_svc_handler), // 11 SVCall handler
68 $ELSE$
69 $TAB$(FP)(_kernel_core_exc_entry),
70 $END$
71 $SPC$$FORMAT("/* %d */", +excno)$$NL$
72$END$
73
74$FOREACH inhno INTNO_VALID$
75 $IF LENGTH(INH.INHNO[inhno]) && ((INH.INHATR[inhno] & TA_NONKERNEL) != 0)$
76 $TAB$(FP)($INH.INTHDR[inhno]$),
77 $ELSE$
78 $TAB$(FP)(_kernel_core_int_entry),
79 $END$
80 $SPC$$FORMAT("/* %d */", +inhno)$$NL$
81$END$
82
83
84$NL$};$NL$
85$NL$
86
87$NL$
88const FP _kernel_exc_tbl[] = $NL$
89{$NL$
90$FOREACH excno {0,1,...,14}$
91 $IF LENGTH(EXC.EXCNO[excno])$
92 $TAB$(FP)($EXC.EXCHDR[excno]$),
93 $ELSE$
94 $TAB$(FP)(_kernel_default_exc_handler),
95 $END$
96 $SPC$$FORMAT("/* %d */", +excno)$$NL$
97$END$
98
99
100$FOREACH inhno INTNO_VALID$
101 $IF LENGTH(INH.INHNO[inhno])$
102 $TAB$(FP)($INH.INTHDR[inhno]$),
103 $ELSE$
104 $TAB$(FP)(_kernel_default_int_handler),
105 $END$
106 $SPC$$FORMAT("/* %d */", +inhno)$$NL$
107$END$
108
109
110$NL$};$NL$
111$NL$
112
113$
114$ _kernel_bitpat_cfgint‚̐¶¬
115$
116
117$bitpat_cfgint_num = 0$
118$bitpat_cfgint = 0$
119
120
121const uint32_t _kernel_bitpat_cfgint[
122$IF (TMAX_INTNO & 0x0f) == 0x00 $
123 $bitpat_cfgint_num = (TMAX_INTNO >> 4)$
124$ELSE$
125 $bitpat_cfgint_num = (TMAX_INTNO >> 4) + 1$
126$END$
127 $bitpat_cfgint_num$
128] = {$NL$
129$FOREACH num RANGE(0,(bitpat_cfgint_num-1))$
130$ //boost ‚̃o[ƒWƒ‡ƒ“‚É‚æ‚Á‚Ä‹““®‚ª•Ï‚í‚邽‚߂̑΍ô
131$ //http://www.toppers.jp/TOPPERS-USERS/201004/msg00034.html
132 $bitpat_cfgint = 1-1$
133 $FOREACH inhno RANGE(num*32, (num*32)+31)$
134 $IF LENGTH(INH.INHNO[inhno])$
135 $bitpat_cfgint = bitpat_cfgint | (1 << (inhno & 0x01f))$
136 $END$
137 $END$
138 $TAB$UINT32_C($FORMAT("0x%08x", bitpat_cfgint)$), $NL$
139$END$
140
141$NL$};$NL$
142$NL$
143
144
145$
146$ Š„ž‚Ý—Dæ“xƒe[ƒuƒ‹i“à•”•\Œ»j
147$
148const uint32_t _kernel_int_iipm_tbl[] = {$NL$
149$FOREACH excno {0,1,...,14}$
150 $TAB$$FORMAT("UINT32_C(0x%08x), /* 0x%03x */", 0, +excno)$$NL$
151$END$
152
153$FOREACH intno INTNO_VALID$
154 $IF LENGTH(INT.INTNO[intno])$
155 $intpri = (((1 << TBITW_IPRI) + INT.INTPRI[intno]) << (8 - TBITW_IPRI))$
156 $ELSE$
157$ // LSB‚ð1‚É‚µ‚Ä‚¢‚é‚̂́CŠ„ž‚Ý‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ð”»
158$ // •Ê‚·‚邽‚ß‚Å‚ ‚éD
159 $intpri = 0 $
160 $END$
161 $TAB$$FORMAT("UINT32_C(0x%08x), /* 0x%03x */", intpri, +intno)$$NL$
162$END$
163$NL$};$NL$
164$NL$
Note: See TracBrowser for help on using the repository browser.