source: mypx/extension/dcre/kernel/kernel_check.tf @ 7

このファイルの 7 以降における最終更新内容7 で kominami が 2015/09/12 9:22:12 に更新しました

TOPPERS/ASP 1.9.1

ファイルサイズ: 7.8 KB
 
1$ ======================================================================
2$
3$   TOPPERS/ASP Kernel
4$       Toyohashi Open Platform for Embedded Real-Time Systems/
5$       Advanced Standard Profile Kernel
6$
7$   Copyright (C) 2008-2010 by Embedded and Real-Time Systems Laboratory
8$               Graduate School of Information Science, Nagoya Univ., JAPAN
9
10$   Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
11$   ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
12$   ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
13$   (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
14$       ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
15$       ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
16$   (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
17$       Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
18$       ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
19$       €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
20$   (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
21$       Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
22$       €È¡¥
23$     (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
24$         ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
25$     (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
26$         Êó¹ð€¹€ë€³€È¡¥
27$   (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
28$       ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
29$       €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
30$       Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
31$       ÌÈÀÕ€¹€ë€³€È¡¥
32
33$   ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
34$   €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
35$   €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
36$   ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
37$   €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
38$
39$   @(#) $Id$
40
41$ =====================================================================
42
43$
44$  ¥Ç¡Œ¥¿¥»¥¯¥·¥ç¥ó€ÎLMA€«€éVMA€Ø€Î¥³¥Ô¡Œ
45$
46$FOREACH lma LMA.ORDER_LIST$
47        $start_data = SYMBOL(LMA.START_DATA[lma])$
48        $end_data = SYMBOL(LMA.END_DATA[lma])$
49        $start_idata = SYMBOL(LMA.START_IDATA[lma])$
50        $IF !LENGTH(start_data)$
51                $ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_DATA[lma])$$END$
52        $ELIF !LENGTH(end_data)$
53                $ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.END_DATA[lma])$$END$
54        $ELIF !LENGTH(start_idata)$
55                $ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_IDATA[lma])$$END$
56        $ELSE$
57                $BCOPY(start_idata, start_data, end_data - start_data)$
58        $END$
59$END$
60
61$
62$  ŽØ¿ô€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
63$
64$IF CHECK_FUNC_ALIGN || CHECK_FUNC_NONNULL$
65$       // ¥¿¥¹¥¯€È¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
66        $tinib = SYMBOL("_kernel_tinib_table")$
67        $FOREACH tskid TSK.ID_LIST$
68                $task = PEEK(tinib + offsetof_TINIB_task, sizeof_FP)$
69                $IF CHECK_FUNC_ALIGN && (task & (CHECK_FUNC_ALIGN - 1)) != 0$
70                        $ERROR TSK.TEXT_LINE[tskid]$E_PAR:
71                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
72                                "task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
73                $END$
74                $IF CHECK_FUNC_NONNULL && task == 0$
75                        $ERROR TSK.TEXT_LINE[tskid]$E_PAR:
76                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
77                                "task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
78                $END$
79                $texrtn = PEEK(tinib + offsetof_TINIB_texrtn, sizeof_FP)$
80                $IF CHECK_FUNC_ALIGN && (texrtn & (CHECK_FUNC_ALIGN - 1)) != 0$
81                        $ERROR DEF_TEX.TEXT_LINE[tskid]$E_PAR:
82                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
83                                "texrtn", TSK.TEXRTN[tskid], tskid, "DEF_TEX")$$END$
84                $END$
85                $tinib = tinib + sizeof_TINIB$
86        $END$
87
88$       // ŒþŽü¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
89        $cycinib = SYMBOL("_kernel_cycinib_table")$
90        $FOREACH cycid CYC.ID_LIST$
91                $cychdr = PEEK(cycinib + offsetof_CYCINIB_cychdr, sizeof_FP)$
92                $IF CHECK_FUNC_ALIGN && (cychdr & (CHECK_FUNC_ALIGN - 1)) != 0$
93                        $ERROR CYC.TEXT_LINE[cycid]$E_PAR:
94                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
95                                "cychdr", CYC.CYCHDR[cycid], cycid, "CRE_CYC")$$END$
96                $END$
97                $IF CHECK_FUNC_NONNULL && cychdr == 0$
98                        $ERROR CYC.TEXT_LINE[cycid]$E_PAR:
99                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
100                                "cychdr", CYC.CYCHDR[cycid], cycid, "CRE_CYC")$$END$
101                $END$
102                $cycinib = cycinib + sizeof_CYCINIB$
103        $END$
104
105$       // ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
106        $alminib = SYMBOL("_kernel_alminib_table")$
107        $FOREACH almid ALM.ID_LIST$
108                $almhdr = PEEK(alminib + offsetof_ALMINIB_almhdr, sizeof_FP)$
109                $IF CHECK_FUNC_ALIGN && (almhdr & (CHECK_FUNC_ALIGN - 1)) != 0$
110                        $ERROR ALM.TEXT_LINE[almid]$E_PAR:
111                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
112                                "almhdr", ALM.ALMHDR[almid], almid, "CRE_ALM")$$END$
113                $END$
114                $IF CHECK_FUNC_NONNULL && almhdr == 0$
115                        $ERROR ALM.TEXT_LINE[almid]$E_PAR:
116                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
117                                "almhdr", ALM.ALMHDR[almid], almid, "CRE_ALM")$$END$
118                $END$
119                $alminib = alminib + sizeof_ALMINIB$
120        $END$
121
122$       // ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
123        $isrinib = SYMBOL("_kernel_sisrinib_table")$
124        $FOREACH order ISR.ORDER_LIST$
125                $isr = PEEK(isrinib + offsetof_ISRINIB_isr, sizeof_FP)$
126                $IF CHECK_FUNC_ALIGN && (isr & (CHECK_FUNC_ALIGN - 1)) != 0$
127                        $ERROR ISR.TEXT_LINE[order]$E_PAR:
128                                $FORMAT(_("%1% `%2%\' in %4% is not aligned"),
129                                "isr", ISR.ISR[order], "ATT_ISR")$$END$
130                $END$
131                $IF CHECK_FUNC_NONNULL && isr == 0$
132                        $ERROR ISR.TEXT_LINE[order]$E_PAR:
133                                $FORMAT(_("%1% `%2%\' in %4% is null"),
134                                "isr", ISR.ISR[order], "ATT_ISR")$$END$
135                $END$
136                $isrinib = isrinib + sizeof_ISRINIB$
137        $END$
138$END$
139
140$
141$  ¥¹¥¿¥Ã¥¯Îΰè€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
142$
143$IF CHECK_STACK_ALIGN || CHECK_STACK_NONNULL$
144$       // ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯Îΰè€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
145        $tinib = SYMBOL("_kernel_tinib_table")$
146        $FOREACH tskid TSK.ID_LIST$
147                $IF USE_TSKINICTXB$
148                        $stk = GET_STK_TSKINICTXB(tinib)$
149                $ELSE$
150                        $stk = PEEK(tinib + offsetof_TINIB_stk, sizeof_void_ptr)$
151                $END$
152                $IF CHECK_STACK_ALIGN && (stk & (CHECK_STACK_ALIGN - 1)) != 0$
153                        $ERROR TSK.TEXT_LINE[tskid]$E_PAR:
154                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
155                                "stk", TSK.STK[tskid], tskid, "CRE_TSK")$$END$
156                $END$
157                $IF CHECK_STACK_NONNULL && stk == 0$
158                        $ERROR TSK.TEXT_LINE[tskid]$E_PAR:
159                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
160                                "stk", TSK.STK[tskid], tskid, "CRE_TSK")$$END$
161                $END$
162                $tinib = tinib + sizeof_TINIB$
163        $END$
164
165$       // È󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯Îΰè€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
166        $istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
167        $IF CHECK_STACK_ALIGN && (istk & (CHECK_STACK_ALIGN - 1)) != 0$
168                $ERROR ICS.TEXT_LINE[1]$E_PAR:
169                        $FORMAT(_("%1% `%2%\' in %3% is not aligned"),
170                        "istk", ICS.ISTK[1], "DEF_ICS")$$END$
171        $END$
172        $IF CHECK_STACK_NONNULL && istk == 0$
173                $ERROR ICS.TEXT_LINE[1]$E_PAR:
174                        $FORMAT(_("%1% `%2%\' in %3% is null"),
175                        "istk", ICS.ISTK[1], "DEF_ICS")$$END$
176        $END$
177$END$
178
179$
180$  žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
181$
182$IF CHECK_MPF_ALIGN || CHECK_MPF_NONNULL$
183$       // žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
184        $mpfinib = SYMBOL("_kernel_mpfinib_table")$
185        $FOREACH mpfid MPF.ID_LIST$
186                $mpf = PEEK(mpfinib + offsetof_MPFINIB_mpf, sizeof_void_ptr)$
187                $IF CHECK_MPF_ALIGN && (mpf & (CHECK_MPF_ALIGN - 1)) != 0$
188                        $ERROR MPF.TEXT_LINE[mpfid]$E_PAR:
189                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
190                                "mpf", MPF.MPF[mpfid], mpfid, "CRE_MPF")$$END$
191                $END$
192                $IF CHECK_MPF_NONNULL && mpf == 0$
193                        $ERROR MPF.TEXT_LINE[mpfid]$E_PAR:
194                                $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
195                                "mpf", MPF.MPF[mpfid], mpfid, "CRE_MPF")$$END$
196                $END$
197                $mpfinib = mpfinib + sizeof_MPFINIB$
198        $END$
199$END$
200
201$
202$  ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎΰè€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
203$
204$IF CHECK_MB_ALIGN$
205$       // ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎΰè€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯
206        $kmm = PEEK(SYMBOL("_kernel_kmm"), sizeof_void_ptr)$
207        $IF CHECK_MB_ALIGN && (kmm & (CHECK_MB_ALIGN - 1)) != 0$
208                $ERROR KMM.TEXT_LINE[1]$E_PAR:
209                        $FORMAT(_("%1% `%2%\' in %3% is not aligned"),
210                        "kmm", KMM.KMM[1], "DEF_KMM")$$END$
211        $END$
212$END$
詳しい使い方は TracBrowser を参照してください。