source: mypx/target/macosx_gcc/target.tf @ 7

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 4.2 KB
Rev 
[7]1$
2$               ¥Ñ¥¹2€Î¥¿¡Œ¥²¥Ã¥È°Íž¥Æ¥ó¥×¥ì¡Œ¥È¡ÊMac OS XÍÑ¡Ë
3$
4
5$
6$  »ÈÍрǀ­€ë³ä¹þ€ßÈÖ¹æ€È€œ€ì€ËÂбþ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
7$
8$  ³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€Ï¡€¥·¥°¥Ê¥ëÈÖ¹æ€Ë°ìÃ×€µ€»€ë¡¥1¡Á31€Î
9$  ¥·¥°¥Ê¥ëÈÖ¹æ€ÎÆâ¡€SIGKILL¡Ê¡á9¡Ë¡€SIGSTOP¡Ê¡á17¡Ë¡€SIGUSR2¡Ê¡á31¡Ë°Ê
10$  ³°€¬»ÈÍрǀ­€ë¡¥
11$
12$INTNO_VALID = { 1, 2,..., 8; 10, 11,..., 16; 18, 19,..., 30 }$
13$INHNO_VALID = INTNO_VALID$
14
15$
16$  ATT_ISR€Ç»ÈÍрǀ­€ë³ä¹þ€ßÈÖ¹æ€È€œ€ì€ËÂбþ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
17$
18$INTNO_ATTISR_VALID = INTNO_VALID$
19$INHNO_ATTISR_VALID = INHNO_VALID$
20
21$
22$  DEF_INT¡¿DEF_EXC€Ç»ÈÍрǀ­€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈֹ桿CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ
23$
24$INHNO_DEFINH_VALID = INHNO_VALID$
25$EXCNO_DEFEXC_VALID = INHNO_VALID$
26
27$
28$  CFG_INT€Ç»ÈÍрǀ­€ë³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ßÍ¥ÀèÅÙ
29$
30$  ³ä¹þ€ßÍ¥ÀèÅـϡ€-1¡Á-7€¬»ÈÍрǀ­€ë¡¥-7€ÏNMI€È°·€Š¡¥
31$
32$INTNO_CFGINT_VALID = INTNO_VALID$
33$INTPRI_CFGINT_VALID = { -1, -2,..., -7 }$
34
35$
36$  ¥¹¥¿¥Ã¥¯Îΰè€Î³ÎÊÝŽØ¿ô
37$
38$  Intel¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€ò16¥Ð¥€¥È¶­³Š€Ë¥¢¥é¥€¥ó€µ€»€ë
39$  ɬÍ×€¬€¢€ë¡¥
40$
41$FUNCTION ALLOC_STACK$
42        static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)]
43                                                $SPC$__attribute__((aligned(16)));$NL$
44        $RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
45$END$
46
47$
48$  Éžœà¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥€¥ó¥¯¥ë¡Œ¥É
49$
50$INCLUDE "kernel/kernel.tf"$
51
52/*$NL$
53$SPC$*  Target-dependent Definitions (Mac OS X)$NL$
54$SPC$*/$NL$
55$NL$
56
57$
58$  ¥Þ¥¹¥¯€Ç€­€Ê€€¥·¥°¥Ê¥ë€È¥«¡Œ¥Í¥ë€¬»È€Š¥·¥°¥Ê¥ë€ËŽØ€¹€ëÀßÄê
59$
60$  SIGKILL¡Ê¥Þ¥¹¥¯ÉԲġË
61$  SIGSTOP¡Ê¥Þ¥¹¥¯ÉԲġË
62$  SIGUSR2¡Ê¥«¡Œ¥Í¥ë€¬ÍøÍÑ¡Ë
63$
64$INT.INTPRI[SIGKILL] = -7$
65$INT.INTPRI[SIGSTOP] = -7$
66$INT.INTPRI[SIGUSR2] = -7$
67
68$
69$   CFG_INT€Î¥¿¡Œ¥²¥Ã¥È°Íž€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯
70$
71$FOREACH intno INT.ORDER_LIST$
72        $IF (INT.INTATR[intno] & TA_EDGE) == 0$
73                $ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT("Level trigger is not supported for intno `%1%\' in CFG_INT", INT.INTNO[intno])$$END$
74        $END$
75$END$
76
77$
78$  CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ëœèÍý
79$
80$FOREACH excno EXC.ORDER_LIST$
81$       // ³ä¹þ€ß¥Ï¥ó¥É¥é€È€ÎœÅÊ£¥Á¥§¥Ã¥¯
82        $IF LENGTH(INH.INHNO[excno])$
83                $ERROR EXC.TEXT_LINE[excno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "excno", EXC.EXCNO[excno], "DEF_EXC", "inhno", INH.INHNO[excno])$$END$
84        $END$
85
86$       // CPUÎã³°¥Ï¥ó¥É¥é€òÅÐÏ¿€·€¿¥·¥°¥Ê¥ë€ËŽØ€¹€ëÀßÄê
87        $IF LENGTH(INTNO[excno])$
88                $INT.INTPRI[INTNO[excno]] = -7$
89        $END$
90$END$
91
92$
93$  ¥Ç¥Ð¥Ã¥°Íр˥ޥ¹¥¯€·€Ê€€¥·¥°¥Ê¥ë€ËŽØ€¹€ëÀßÄê
94$
95$  SIGINT¡Ê¥Ç¥Ð¥Ã¥°ÍÑ¡Ë
96$  SIGBUS¡Ê¥Ç¥Ð¥Ã¥°ÍÑ¡Ë
97$  SIGSEGV¡Ê¥Ç¥Ð¥Ã¥°ÍÑ¡Ë
98$
99$IF !LENGTH(INT.INTPRI[SIGINT])$
100        $INT.INTPRI[SIGINT] = -7$
101$END$
102$IF !LENGTH(INT.INTPRI[SIGBUS])$
103        $INT.INTPRI[SIGBUS] = -7$
104$END$
105$IF !LENGTH(INT.INTPRI[SIGSEGV])$
106        $INT.INTPRI[SIGSEGV] = -7$
107$END$
108
109$
110$  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œ€ËɬÍ׀ʟðÊó
111$
112
113$ ³ä¹þ€ß¥Ï¥ó¥É¥é¿ô
114#define TNUM_INHNO      $LENGTH(INH.ORDER_LIST)$$NL$
115const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
116$NL$
117$FOREACH inhno INH.ORDER_LIST$
118        $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
119                INTHDR_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$, $INT.INTPRI[INTNO[inhno]]$)$NL$
120        $END$
121$END$
122$NL$
123
124$ ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Æ¡Œ¥Ö¥ë
125$IF LENGTH(INH.ORDER_LIST)$
126        const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {$NL$
127        $JOINEACH inhno INH.ORDER_LIST ",\n"$
128                $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
129                        $TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)(INT_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)), ($INT.INTPRI[INTNO[INH.INHNO[inhno]]]$) }
130                $ELSE$
131                        $TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)($INH.INTHDR[inhno]$), ($INT.INTPRI[INTNO[INH.INHNO[inhno]]]$) }
132                $END$
133        $END$$NL$
134        };$NL$
135$ELSE$
136        TOPPERS_EMPTY_LABEL(const INHINIB, _kernel_inhinib_table);$NL$
137$END$
138$NL$
139
140$
141$  ³ä¹þ€ßÍ¥ÀèÅÙËè€Î€œ€ì°Ê²Œ€Î³ä¹þ€ßÍ×µá€ò¥Þ¥¹¥¯€¹€ë€¿€á€ÎŸðÊó€Î¥Æ¡Œ¥Ö¥ë
142$
143const sigset_t _kernel_sigmask_table[8] = {$NL$
144$FOREACH intpri { 0, -1,..., -6 }$
145        $intmask = 0$
146        $FOREACH intno { 1, 2, ..., 31 }$
147                $IF ALT(INT.INTPRI[intno], 0) >= intpri$
148                        $intmask = intmask | (1 << (intno - 1))$
149                $END$
150        $END$
151        $TAB$UINT32_C($FORMAT("0x%08x", intmask)$),$NL$
152$END$
153$TAB$UINT32_C($FORMAT("0x%08x", intmask)$)$NL$
154};$NL$
155
156$
157$  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô€ÎœéŽüÃÍ
158$
159$sigmask_disint_init = 0$
160$FOREACH intno INT.ORDER_LIST$
161        $IF (INT.INTATR[intno] & TA_ENAINT) == 0$
162                $sigmask_disint_init = sigmask_disint_init | (1 << (INT.INTNO[intno] - 1))$
163        $END$
164$END$
165$NL$
166const sigset_t  _kernel_sigmask_disint_init =
167                UINT32_C($FORMAT("0x%08x", sigmask_disint_init)$);$NL$
詳しい使い方は TracBrowser を参照してください。