source: target/dummy_gcc/target_config.h @ 7

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 8.8 KB
Rev 
[7]1/*
2 *  TOPPERS/ASP Kernel
3 *      Toyohashi Open Platform for Embedded Real-Time Systems/
4 *      Advanced Standard Profile Kernel
5 *
6 *  Copyright (C) 2013-2014 by Embedded and Real-Time Systems Laboratory
7 *              Graduate School of Information Science, Nagoya Univ., JAPAN
8 *
9 *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
10 *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
11 *  ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
12 *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
13 *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
14 *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
15 *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
16 *      Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
17 *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
18 *      €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
19 *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
20 *      Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
21 *      €È¡¥
22 *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
23 *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
24 *    (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
25 *        Êó¹ð€¹€ë€³€È¡¥
26 *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
27 *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
28 *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
29 *      ͳ€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
30 *      ÌÈÀÕ€¹€ë€³€È¡¥
31 *
32 *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
33 *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
34 *  €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
35 *  ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
36 *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
37 *
38 *  $Id$
39 */
40
41/*
42 *              ¥¿¡Œ¥²¥Ã¥È°Íž¥â¥ž¥å¡Œ¥ë¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
43 *
44 *  ¥«¡Œ¥Í¥ë€Î¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë¡¥kernel_impl.h€Î¥¿¡Œ
45 *  ¥²¥Ã¥È°ÍžÉô€Î°ÌÃÖÉÕ€±€È€Ê€ë¡¥
46 */
47
48#ifndef TOPPERS_TARGET_CONFIG_H
49#define TOPPERS_TARGET_CONFIG_H
50
51#ifndef TOPPERS_MACRO_ONLY
52#ifdef TOPPERS_SUPPORT_OVRHDR
53#include "overrun.h"
54#endif /* TOPPERS_SUPPORT_OVRHDR */
55#endif /* TOPPERS_MACRO_ONLY */
56
57/*
58 *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€Î¥Ï¡Œ¥É¥Š¥§¥¢»ñž»€ÎÄêµÁ
59 */
60#include "dummy.h"
61
62/*
63 *  ¥š¥é¡Œ¥Á¥§¥Ã¥¯ÊýË¡€Î»ØÄê
64 */
65#define CHECK_STKSZ_ALIGN       4       /* ¥¹¥¿¥Ã¥¯¥µ¥€¥º€Î¥¢¥é¥€¥óñ°Ì */
66#define CHECK_FUNC_ALIGN        4       /* ŽØ¿ô€Î¥¢¥é¥€¥óñ°Ì */
67#define CHECK_FUNC_NONNULL              /* ŽØ¿ô€ÎÈóNULL¥Á¥§¥Ã¥¯ */
68#define CHECK_STACK_ALIGN       4       /* ¥¹¥¿¥Ã¥¯Îΰè€Î¥¢¥é¥€¥óñ°Ì */
69#define CHECK_STACK_NONNULL             /* ¥¹¥¿¥Ã¥¯Îΰè€ÎÈóNULL¥Á¥§¥Ã¥¯ */
70#define CHECK_MPF_ALIGN         4       /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€Î¥¢¥é¥€¥óñ°Ì */
71#define CHECK_MPF_NONNULL               /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€ÎÈóNULL¥Á¥§¥Ã¥¯ */
72#define CHECK_MB_ALIGN          4       /* ŽÉÍýÎΰè€Î¥¢¥é¥€¥óñ°Ì */
73
74/*
75 *  ¥È¥ì¡Œ¥¹¥í¥°€ËŽØ€¹€ëÀßÄê
76 */
77#ifdef TOPPERS_ENABLE_TRACE
78#include "logtrace/trace_config.h"
79#endif /* TOPPERS_ENABLE_TRACE */
80
81/*
82 *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
83 */
84#ifndef LOG_INH_ENTER
85#define LOG_INH_ENTER(inhno)
86#endif /* LOG_INH_ENTER */
87
88#ifndef LOG_INH_LEAVE
89#define LOG_INH_LEAVE(inhno)
90#endif /* LOG_INH_LEAVE */
91
92#ifndef LOG_EXC_ENTER
93#define LOG_EXC_ENTER(excno)
94#endif /* LOG_EXC_ENTER */
95
96#ifndef LOG_EXC_LEAVE
97#define LOG_EXC_LEAVE(excno)
98#endif /* LOG_EXC_LEAVE */
99
100/*
101 *  È󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¥¹¥¿¥Ã¥¯€Î¥Ç¥Õ¥©¥ë¥È€Î¥µ¥€¥º
102 */
103#define DEFAULT_ISTKSZ                  4096
104
105#ifndef TOPPERS_MACRO_ONLY
106
107/*
108 *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯€ÎÄêµÁ
109 */
110typedef struct task_context_block {
111        void            *sp;                    /* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿ */
112        void            *pc;                    /* ŒÂ¹ÔºÆ³«ÈÖÃÏ */
113} TSKCTXB;
114
115/*
116 *  ¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
117 */
118Inline bool_t
119sense_context(void)
120{
121        return(false);
122}
123
124/*
125 *  CPU¥í¥Ã¥¯ŸõÂր؀ΰܹÔ
126 */
127Inline void
128x_lock_cpu(void)
129{
130}
131
132#define t_lock_cpu()    x_lock_cpu()
133#define i_lock_cpu()    x_lock_cpu()
134
135/*
136 *  CPU¥í¥Ã¥¯ŸõÂրβòœü
137 */
138Inline void
139x_unlock_cpu(void)
140{
141}
142
143#define t_unlock_cpu()  x_unlock_cpu()
144#define i_unlock_cpu()  x_unlock_cpu()
145
146/*
147 *  CPU¥í¥Ã¥¯ŸõÂրλ²ŸÈ
148 */
149Inline bool_t
150x_sense_lock(void)
151{
152        return(false);
153}
154
155#define t_sense_lock()  x_sense_lock()
156#define i_sense_lock()  x_sense_lock()
157
158/*
159 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÎÀßÄê
160 */
161Inline void
162x_set_ipm(PRI intpri)
163{
164}
165
166#define t_set_ipm(intpri)       x_set_ipm(intpri)
167#define i_set_ipm(intpri)       x_set_ipm(intpri)
168
169/*
170 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Î»²ŸÈ
171 */
172Inline PRI
173x_get_ipm(void)
174{
175        return(TIPM_ENAALL);
176}
177
178#define t_get_ipm()     x_get_ipm()
179#define i_get_ipm()     x_get_ipm()
180
181/*
182 *  ³ä¹þ€ßÈÖ¹æ€ÎÈϰπÎÈœÄê
183 */
184#define VALID_INTNO(intno)      (0 <= (intno) && (intno) <= 31)
185#define VALID_INTNO_CREISR(intno)       VALID_INTNO(intno)
186#define VALID_INTNO_DISINT(intno)       VALID_INTNO(intno)
187
188/*
189 *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€Î¥»¥Ã¥È
190 *
191 *  ³ä¹þ€ß°À­€¬ÀßÄꀵ€ì€Æ€€€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂЀ·€Æ³ä¹þ€ßÍ×µá¶Ø»ß
192 *  ¥Õ¥é¥°€ò¥»¥Ã¥È€·€è€Š€È€·€¿Ÿì¹ç€Ë€Ï¡€false€òÊÖ€¹¡¥
193 */
194Inline bool_t
195x_disable_int(INTNO intno)
196{
197        return(true);
198}
199
200#define t_disable_int(intno)    x_disable_int(intno)
201#define i_disable_int(intno)    x_disable_int(intno)
202
203/*
204 *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€Î¥¯¥ê¥¢
205 *
206 *  ³ä¹þ€ß°À­€¬ÀßÄꀵ€ì€Æ€€€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂЀ·€Æ³ä¹þ€ßÍ×µá¶Ø»ß
207 *  ¥Õ¥é¥°€ò¥¯¥ê¥¢€·€è€Š€È€·€¿Ÿì¹ç€Ë€Ï¡€false€òÊÖ€¹¡¥
208 */
209Inline bool_t
210x_enable_int(INTNO intno)
211{
212        return(true);
213}
214
215#define t_enable_int(intno)             x_enable_int(intno)
216#define i_enable_int(intno)             x_enable_int(intno)
217
218/*
219 *  ³ä¹þ€ßÍ×µá€Î¥¯¥ê¥¢
220 */
221Inline void
222x_clear_int(INTNO intno)
223{
224}
225
226#define t_clear_int(intno)              x_clear_int(intno)
227#define i_clear_int(intno)              x_clear_int(intno)
228
229/*
230 *  ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
231 */
232Inline bool_t
233x_probe_int(INTNO intno)
234{
235        return(true);
236}
237
238#define t_probe_int(intno)              x_probe_int(intno)
239#define i_probe_int(intno)              x_probe_int(intno)
240
241/*
242 *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÆþžý€ÇɬÍ×€ÊIRCÁàºî
243 */
244Inline void
245i_begin_int(INTNO intno)
246{
247}
248
249/*
250 *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐžý€ÇɬÍ×€ÊIRCÁàºî
251 */
252Inline void
253i_end_int(INTNO intno)
254{
255}
256
257/*
258 *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á
259 */
260extern void     dispatch(void);
261
262/*
263 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Îưºî³«»Ï
264 */
265extern void start_dispatch(void);
266
267/*
268 *  žœºß€Î¥³¥ó¥Æ¥­¥¹¥È€òŒÎ€Æ€Æ¥Ç¥£¥¹¥Ñ¥Ã¥Á
269 */
270extern void     exit_and_dispatch(void);
271
272/*
273 *  ³ä¹þ€ß¥Ï¥ó¥É¥éœÐžýœèÍý
274 */
275extern void     ret_int(void);
276
277/*
278 *  CPUÎã³°¥Ï¥ó¥É¥éœÐžýœèÍý
279 */
280extern void     ret_exc(void);
281
282/*
283 *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€ÎžÆœÐ€·
284 */
285extern void call_exit_kernel(void) NoReturn;
286
287/*
288 *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÎœéŽü²œ
289 */
290extern void     start_r(void);
291
292#define activate_context(p_tcb)
293
294/*
295 *  ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÈCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€ÎÈϰπÎÈœÄê
296 */
297#define VALID_INHNO_DEFINH(inhno)               VALID_INTNO((INTNO)(inhno))
298#define VALID_EXCNO_DEFEXC(excno)               VALID_INTNO((INTNO)(excno))
299
300/*
301 *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀßÄê
302 *
303 *  ¥Ù¥¯¥È¥ëÈÖ¹æinhno€Î³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ€òint_entry€Ë
304 *  ÀßÄꀹ€ë¡¥
305 */
306Inline void
307x_define_inh(INHNO inhno, FP int_entry)
308{
309}
310
311/*
312 *  ³ä¹þ€ßÍ×µá¥é¥€¥ó°À­€ÎÀßÄê
313 */
314Inline void
315x_config_int(INTNO intno, ATR intatr, PRI intpri)
316{
317}
318
319/*
320 *  CPUÎã³°¥Ï¥ó¥É¥é€ÎÀßÄê
321 *
322 *  ¥Ù¥¯¥È¥ëÈÖ¹æexcno€ÎCPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ€òexc_entry€ËÀß
323 *  Äꀹ€ë¡¥
324 */
325Inline void
326x_define_exc(EXCNO excno, FP exc_entry)
327{
328}
329
330/*
331 *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÄä»ß€Î€¿€á€Î¥Þ¥¯¥í
332 */
333#ifdef TOPPERS_SUPPORT_OVRHDR
334#define OVRTIMER_STOP() {                               \
335                        i_lock_cpu();                           \
336                        _kernel_ovrtimer_stop();        \
337                        i_unlock_cpu();                         \
338                }
339#else /* TOPPERS_SUPPORT_OVRHDR */
340#define OVRTIMER_STOP()
341#endif /* TOPPERS_SUPPORT_OVRHDR */
342
343/*
344 *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÆþžýœèÍý€ÎÀžÀ®¥Þ¥¯¥í
345 */
346#define INT_ENTRY(inhno, inthdr)        inthdr
347#define INTHDR_ENTRY(inhno, inthdr, intpri)
348
349/*
350 *  CPUÎã³°¥Ï¥ó¥É¥é€ÎÆþžýœèÍý€ÎÀžÀ®¥Þ¥¯¥í
351 */
352#define EXC_ENTRY(excno, exchdr)        exchdr
353#define EXCHDR_ENTRY(excno, excno_num, exchdr)
354
355/*
356 *  CPUÎã³°€ÎȯÀž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
357 *
358 *  CPUÎã³°€ÎȯÀž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€¬¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Î»þ€Ëfalse¡€
359 *  €œ€Š€Ç€Ê€€»þ€Ëtrue€òÊÖ€¹¡¥
360 */
361Inline bool_t
362exc_sense_context(void *p_excinf)
363{
364        return(true);
365}
366
367/*
368 *  ¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°€ÎÈœÊÌ
369 *
370 *  ¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°€Î»þ€Ëtrue¡€€œ€Š€Ç€Ê€€»þ€Ëfalse€òÊÖ€¹¡¥
371 */
372Inline bool_t
373exc_sense_nonkernel(void *p_excinf)
374{
375        return(true);
376}
377
378/*
379 *  CPUÎã³°€ÎȯÀž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€È³ä¹þ€ß€Î¥Þ¥¹¥¯ŸõÂրλ²ŸÈ
380 *
381 *  CPUÎã³°€ÎȯÀž€·€¿»þ€Î¥·¥¹¥Æ¥àŸõÂÖ€¬¡€¥«¡Œ¥Í¥ëŒÂ¹ÔÃæ€Ç€Ê€¯¡€¥¿¥¹¥¯¥³
382 *  ¥ó¥Æ¥­¥¹¥È€Ç€¢€ê¡€Á޳ä¹þ€ß¥í¥Ã¥¯ŸõÂրǀʀ¯¡€CPU¥í¥Ã¥¯ŸõÂրǀʀ¯¡€³ä
383 *  ¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Á޲òœüŸõÂրǀ¢€ë»þ€Ëtrue¡€€œ€Š€Ç€Ê€€»þ€Ëfalse€òÊÖ€¹
384 *  ¡ÊCPUÎã³°€¬¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ßœèÍýÃæ€ÇȯÀž€·€¿Ÿì¹ç€Ë€âfalse€òÊÖ
385 *  €¹¡Ë¡¥
386 */
387Inline bool_t
388exc_sense_intmask(void *p_excinf)
389{
390        return(true);
391}
392
393/*
394 *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à°Íž€ÎœéŽü²œ
395 */
396extern void     target_initialize(void);
397
398/*
399 *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€ÎœªÎ»
400 *
401 *  ¥·¥¹¥Æ¥à€òœªÎ»€¹€ë»þ€Ë»È€Š¡¥
402 */
403extern void     target_exit(void) NoReturn;
404
405#endif /* TOPPERS_MACRO_ONLY */
406
407/*
408 *  ¥«¡Œ¥Í¥ë€Î³ä€êÉÕ€±€ë¥á¥â¥êÎΰè€ÎŽÉÍý
409 *
410 *  target_config.c€Ë¡€TLSF¡Ê¥ª¡Œ¥×¥ó¥œ¡Œ¥¹€Î¥á¥â¥êŽÉÍý¥é¥€¥Ö¥é¥ê¡Ë€òÍÑ
411 *  €€€¿¥á¥â¥êŽÉÍý¥ë¡Œ¥Á¥ó€òŽÞ€á€Æ€€€ë¡¥
412 */
413#define OMIT_KMM_ALLOCONLY
414
415#endif /* TOPPERS_TARGET_CONFIG_H */
詳しい使い方は TracBrowser を参照してください。