1 | $
|
---|
2 | $ ãã¹2ã®ã¿ã¼ã²ããä¾åãã³ãã¬ã¼ãï¼Mac OS Xç¨ï¼
|
---|
3 | $
|
---|
4 | $ $Id: target.tf 405 2015-08-02 21:56:53Z ertl-hiro $
|
---|
5 | $
|
---|
6 |
|
---|
7 | $
|
---|
8 | $ 使ç¨ã§ããå²è¾¼ã¿çªå·ã¨ããã«å¯¾å¿ããå²è¾¼ã¿ãã³ãã©çªå·
|
---|
9 | $
|
---|
10 | $ å²è¾¼ã¿çªå·ã¨å²è¾¼ã¿ãã³ãã©çªå·ã¯ï¼ã·ã°ãã«çªå·ã«ä¸è´ãããï¼1ã31ã®
|
---|
11 | $ ã·ã°ãã«çªå·ã®å
|
---|
12 | ï¼SIGKILLï¼ï¼9ï¼ï¼SIGSTOPï¼ï¼17ï¼ï¼SIGUSR2ï¼ï¼31ï¼ä»¥
|
---|
13 | $ å¤ã使ç¨ã§ããï¼
|
---|
14 | $
|
---|
15 | $INTNO_VALID = { 1, 2, ..., 8; 10, 11, ..., 16; 18, 19, ..., 30 }$
|
---|
16 | $INHNO_VALID = INTNO_VALID$
|
---|
17 | $EXCNO_VALID = INTNO_VALID$
|
---|
18 |
|
---|
19 | $
|
---|
20 | $ CFG_INTã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨å²è¾¼ã¿åªå
|
---|
21 | 度
|
---|
22 | $
|
---|
23 | $ å²è¾¼ã¿åªå
|
---|
24 | 度ã¯ï¼-1ã-7ã使ç¨ã§ããï¼-7ã¯NMIã¨æ±ãï¼
|
---|
25 | $
|
---|
26 | $INTPRI_CFGINT_VALID = { -1, -2, ..., -7 }$
|
---|
27 |
|
---|
28 | $
|
---|
29 | $ ã¹ã¿ãã¯é åã®ç¢ºä¿é¢æ°
|
---|
30 | $
|
---|
31 | $ Intelããã»ããµã§ã¯ï¼ã¹ã¿ãã¯ãã¤ã³ã¿ã16ãã¤ãå¢çã«ã¢ã©ã¤ã³ããã
|
---|
32 | $ å¿
|
---|
33 | è¦ãããï¼
|
---|
34 | $
|
---|
35 | $FUNCTION ALLOC_STACK$
|
---|
36 | static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)]
|
---|
37 | $SPC$__attribute__((aligned(16)));$NL$
|
---|
38 | $RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
|
---|
39 | $END$
|
---|
40 |
|
---|
41 | $
|
---|
42 | $ æ¨æºãã³ãã¬ã¼ããã¡ã¤ã«ã®ã¤ã³ã¯ã«ã¼ã
|
---|
43 | $
|
---|
44 | $INCLUDE "kernel/kernel.tf"$
|
---|
45 |
|
---|
46 | $
|
---|
47 | $ ã¿ã¼ã²ããä¾åã®å®ç¾©ã®çæ
|
---|
48 | $
|
---|
49 | $FILE "kernel_cfg.c"$
|
---|
50 |
|
---|
51 | /*$NL$
|
---|
52 | $SPC$* Target-dependent Definitions (Mac OS X)$NL$
|
---|
53 | $SPC$*/$NL$
|
---|
54 | $NL$
|
---|
55 |
|
---|
56 | $
|
---|
57 | $ ãã¹ã¯ã§ããªãã·ã°ãã«ã¨ã«ã¼ãã«ã使ãã·ã°ãã«ã«é¢ããè¨å®
|
---|
58 | $
|
---|
59 | $ SIGKILLï¼ãã¹ã¯ä¸å¯ï¼
|
---|
60 | $ SIGSTOPï¼ãã¹ã¯ä¸å¯ï¼
|
---|
61 | $ SIGUSR2ï¼ã«ã¼ãã«ãå©ç¨ï¼
|
---|
62 | $
|
---|
63 | $INT.INTPRI[SIGKILL] = -7$
|
---|
64 | $INT.INTPRI[SIGSTOP] = -7$
|
---|
65 | $INT.INTPRI[SIGUSR2] = -7$
|
---|
66 |
|
---|
67 | $
|
---|
68 | $ CFG_INTã®ã¿ã¼ã²ããä¾åã®ã¨ã©ã¼ãã§ãã¯
|
---|
69 | $
|
---|
70 | $FOREACH intno INT.ORDER_LIST$
|
---|
71 | $IF (INT.INTATR[intno] & TA_EDGE) == 0$
|
---|
72 | $ERROR INT.TEXT_LINE[intno]$E_RSATR:$SPC$
|
---|
73 | $FORMAT("Level trigger is not supported for %1% `%2%\' in %3%",
|
---|
74 | "intno", INT.INTNO[intno], "CFG_INT")$
|
---|
75 | $END$
|
---|
76 | $END$
|
---|
77 | $END$
|
---|
78 |
|
---|
79 | $
|
---|
80 | $ CPUä¾å¤ãã³ãã©ã«é¢ããå¦ç
|
---|
81 | $
|
---|
82 | $FOREACH excno EXC.ORDER_LIST$
|
---|
83 | $ // å²è¾¼ã¿ãã³ãã©ã¨ã®éè¤ãã§ãã¯
|
---|
84 | $IF LENGTH(INH.INHNO[excno])$
|
---|
85 | $ERROR EXC.TEXT_LINE[excno]$E_OBJ:$SPC$
|
---|
86 | $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"),
|
---|
87 | "excno", EXC.EXCNO[excno], "DEF_EXC",
|
---|
88 | "inhno", INH.INHNO[excno])$
|
---|
89 | $END$
|
---|
90 | $END$
|
---|
91 |
|
---|
92 | $ // CPUä¾å¤ãã³ãã©ãç»é²ããã·ã°ãã«ã«é¢ããè¨å®
|
---|
93 | $IF LENGTH(INTNO[excno])$
|
---|
94 | $INT.INTPRI[INTNO[excno]] = -7$
|
---|
95 | $END$
|
---|
96 | $END$
|
---|
97 |
|
---|
98 | $
|
---|
99 | $ ãããã°ç¨ã«ãã¹ã¯ããªãã·ã°ãã«ã«é¢ããè¨å®
|
---|
100 | $
|
---|
101 | $ SIGINTï¼ãããã°ç¨ï¼
|
---|
102 | $ SIGBUSï¼ãããã°ç¨ï¼
|
---|
103 | $ SIGSEGVï¼ãããã°ç¨ï¼
|
---|
104 | $
|
---|
105 | $IF !LENGTH(INT.INTPRI[SIGINT])$
|
---|
106 | $INT.INTPRI[SIGINT] = -7$
|
---|
107 | $END$
|
---|
108 | $IF !LENGTH(INT.INTPRI[SIGBUS])$
|
---|
109 | $INT.INTPRI[SIGBUS] = -7$
|
---|
110 | $END$
|
---|
111 | $IF !LENGTH(INT.INTPRI[SIGSEGV])$
|
---|
112 | $INT.INTPRI[SIGSEGV] = -7$
|
---|
113 | $END$
|
---|
114 |
|
---|
115 | $
|
---|
116 | $ å²è¾¼ã¿ãã³ãã©ã®åæåã«å¿
|
---|
117 | è¦ãªæ
|
---|
118 | å ±
|
---|
119 | $
|
---|
120 |
|
---|
121 | $
|
---|
122 | $ å®ç¾©ããå²è¾¼ã¿ãã³ãã©ã®æ°
|
---|
123 | $
|
---|
124 | #define TNUM_DEF_INHNO $LENGTH(INH.ORDER_LIST)$$NL$
|
---|
125 | const uint_t _kernel_tnum_def_inhno = TNUM_DEF_INHNO;$NL$
|
---|
126 | $NL$
|
---|
127 | $FOREACH inhno INH.ORDER_LIST$
|
---|
128 | $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
|
---|
129 | INTHDR_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$,$SPC$
|
---|
130 | $INT.INTPRI[INTNO[inhno]]$)$NL$
|
---|
131 | $END$
|
---|
132 | $END$
|
---|
133 | $NL$
|
---|
134 |
|
---|
135 | $
|
---|
136 | $ å²è¾¼ã¿ãã³ãã©åæåãã¼ãã«
|
---|
137 | $
|
---|
138 | $IF LENGTH(INH.ORDER_LIST)$
|
---|
139 | const INHINIB _kernel_inhinib_table[TNUM_DEF_INHNO] = {$NL$
|
---|
140 | $JOINEACH inhno INH.ORDER_LIST ",\n"$
|
---|
141 | $TAB${$SPC$
|
---|
142 | $ // å²è¾¼ã¿ãã³ãã©çªå·ï¼å²è¾¼ã¿ãã³ãã©å±æ§
|
---|
143 | ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$),$SPC$
|
---|
144 |
|
---|
145 | $ // å²è¾¼ã¿ãã³ãã©ã®åºå
|
---|
146 | ¥å£å¦çã®çªå°
|
---|
147 | $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
|
---|
148 | (FP)(INT_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$))
|
---|
149 | $ELSE$
|
---|
150 | (FP)($INH.INTHDR[inhno]$)
|
---|
151 | $END$,$SPC$
|
---|
152 |
|
---|
153 | $ // å²è¾¼ã¿åªå
|
---|
154 | 度
|
---|
155 | ($INT.INTPRI[INTNO[INH.INHNO[inhno]]]$)$SPC$
|
---|
156 | }$END$$NL$
|
---|
157 | };$NL$
|
---|
158 | $ELSE$
|
---|
159 | TOPPERS_EMPTY_LABEL(const INHINIB, _kernel_inhinib_table);$NL$
|
---|
160 | $END$
|
---|
161 | $NL$
|
---|
162 |
|
---|
163 | $
|
---|
164 | $ å²è¾¼ã¿åªå
|
---|
165 | 度æ¯ã®ãã以ä¸ã®å²è¾¼ã¿è¦æ±ããã¹ã¯ããããã®æ
|
---|
166 | å ±ã®ãã¼ãã«
|
---|
167 | $
|
---|
168 | const sigset_t _kernel_sigmask_table[8] = {$NL$
|
---|
169 | $FOREACH intpri { 0, -1, ..., -6 }$
|
---|
170 | $intmask = 0$
|
---|
171 | $FOREACH intno { 1, 2, ..., 31 }$
|
---|
172 | $IF ALT(INT.INTPRI[intno], 0) >= intpri$
|
---|
173 | $intmask = intmask | (1 << (intno - 1))$
|
---|
174 | $END$
|
---|
175 | $END$
|
---|
176 | $TAB$UINT32_C($FORMAT("0x%08x", intmask)$),$NL$
|
---|
177 | $END$
|
---|
178 | $TAB$UINT32_C($FORMAT("0x%08x", intmask)$)$NL$
|
---|
179 | };$NL$
|
---|
180 |
|
---|
181 | $
|
---|
182 | $ å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°å®ç¾ã®ããã®å¤æ°ã®åæå¤
|
---|
183 | $
|
---|
184 | $sigmask_disint_init = 0$
|
---|
185 | $FOREACH intno INT.ORDER_LIST$
|
---|
186 | $IF (INT.INTATR[intno] & TA_ENAINT) == 0$
|
---|
187 | $sigmask_disint_init = sigmask_disint_init
|
---|
188 | | (1 << (INT.INTNO[intno] - 1))$
|
---|
189 | $END$
|
---|
190 | $END$
|
---|
191 | $NL$
|
---|
192 | const sigset_t _kernel_sigmask_disint_init =
|
---|
193 | UINT32_C($FORMAT("0x%08x", sigmask_disint_init)$);$NL$
|
---|