1 | TOPPERS Confidential
|
---|
2 | TOPPERSããã¸ã§ã¯ã ãã£ã¹ã«ãã·ã§ã³ã¡ã¢
|
---|
3 | å¦çåä½ã®å®è¡éå§ï¼ãªã¿ã¼ã³æã®ã·ã¹ãã ç¶æ
|
---|
4 |
|
---|
5 |
|
---|
6 | ä½æè
|
---|
7 | : é«ç°åºç« ï¼åå¤å±å¤§å¦ï¼
|
---|
8 | æçµæ´æ°: 2007å¹´7æ17æ¥
|
---|
9 |
|
---|
10 | âã¡ã¢ã®ä½ç½®ä»ã
|
---|
11 |
|
---|
12 | ãã®ã¡ã¢ã¯ï¼TOPPERSæ°ä¸ä»£ã«ã¼ãã«ã«ãããå¦çåä½ã®å®è¡éå§ï¼ãªã¿ã¼ã³æ
|
---|
13 | ã®ã·ã¹ãã ç¶æ
|
---|
14 | ã«é¢ããä»æ§ã¨ï¼TOPPERS/ASPã«ã¼ãã«ã«ããã¦ãããã©ã®ãã
|
---|
15 | ã«å®ç¾ããã¦ããããè¨è¿°ãããã®ã§ããï¼
|
---|
16 |
|
---|
17 | âå¦çåä½ã®å®è¡éå§ï¼ãªã¿ã¼ã³æã®ã·ã¹ãã ç¶æ
|
---|
18 |
|
---|
19 |
|
---|
20 | TOPPERSæ°ä¸ä»£ã«ã¼ãã«ã«ãããå¦çåä½ã®å®è¡éå§ï¼ãªã¿ã¼ã³æã®ã·ã¹ãã ç¶
|
---|
21 | æ
|
---|
22 | ã«ã¤ãã¦ï¼Î¼ITRON4.0ä»æ§ããå¼·ãè¦å®ããï¼è¦å®ã®å
|
---|
23 | 容ã«ã¤ãã¦ã¯ï¼
|
---|
24 | TOPPERSæ°ä¸ä»£ã«ã¼ãã«ä»æ§æ¸ã2.5.12 å¦çåä½ã¨ã·ã¹ãã ç¶æ
|
---|
25 | ããåç
|
---|
26 | §ãã
|
---|
27 | ãã¨ï¼
|
---|
28 |
|
---|
29 | âåèï¼Î¼ITRON4.0/PXä»æ§
|
---|
30 |
|
---|
31 | CPUããã¯ï¼ å²è¾¼ã¿åªå
|
---|
32 | 度 ãã£ã¹ããã ã¿ã¹ã¯ä¾å¤
|
---|
33 | ããã¯è§£é¤ç¶æ
|
---|
34 | ãã¹ã¯ ç¦æ¢ï¼è¨±å¯ç¶æ
|
---|
35 | ç¦æ¢ï¼è¨±å¯ç¶æ
|
---|
36 |
|
---|
37 | ------------------------------------------------------------------------------
|
---|
38 | ãã¿ã¹ã¯ã
|
---|
39 | å®è¡éå§æ¡ä»¶ è§£é¤ ï¼ è¨±å¯ ï¼
|
---|
40 | å®è¡éå§æå¦ç ãã®ã¾ã¾ ï¼ ãã®ã¾ã¾ ç¦æ¢ãã
|
---|
41 | çµäºå è§£é¤ ï¼ è¨±å¯ ä»»æ
|
---|
42 | çµäºæå¦ç æªè¦å®(*1) ï¼ æªè¦å®(*1)ãããï¼
|
---|
43 | ------------------------------------------------------------------------------
|
---|
44 | ãã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã
|
---|
45 | å®è¡éå§æ¡ä»¶ è§£é¤ ï¼ ä»»æ 許å¯
|
---|
46 | å®è¡éå§æå¦ç ãã®ã¾ã¾ ï¼ ãã®ã¾ã¾ ç¦æ¢ãã
|
---|
47 | ãªã¿ã¼ã³å è§£é¤ ï¼ ä»»æ(*3) ä»»æ
|
---|
48 | ãªã¿ã¼ã³æå¦ç æªè¦å®(*1) ï¼ ãã®ã¾ã¾ 許å¯ãã
|
---|
49 | ------------------------------------------------------------------------------
|
---|
50 | ãå²è¾¼ã¿ãã³ãã©ã
|
---|
51 | å®è¡éå§æ¡ä»¶ è§£é¤ ï¼ ä»»æ ä»»æ
|
---|
52 | å®è¡éå§æå¦ç å®è£
|
---|
53 | ä¾å ï¼ ãã®ã¾ã¾ ãã®ã¾ã¾
|
---|
54 | ãªã¿ã¼ã³å å®è£
|
---|
55 | å®ç¾©(*2) ï¼ å
|
---|
56 | ã«æ»ã(*4) å¤æ´ä¸å¯
|
---|
57 | ãªã¿ã¼ã³æå¦ç æªè¦å®(*2) ï¼ æªè¦å®(*1) ãã®ã¾ã¾
|
---|
58 | ------------------------------------------------------------------------------
|
---|
59 | ãISRï¼ã¿ã¤ã ã¤ãã³ããã³ãã©ã
|
---|
60 | å®è¡éå§æ¡ä»¶ è§£é¤ ï¼ ä»»æ ä»»æ
|
---|
61 | å®è¡éå§æå¦ç ãã®ã¾ã¾ ï¼ ãã®ã¾ã¾ ãã®ã¾ã¾
|
---|
62 | ãªã¿ã¼ã³å è§£é¤ ï¼ å
|
---|
63 | ã«æ»ã(*4) å¤æ´ä¸å¯
|
---|
64 | ãªã¿ã¼ã³æå¦ç æªè¦å®(*1) ï¼ æªè¦å®(*1) ãã®ã¾ã¾
|
---|
65 | ------------------------------------------------------------------------------
|
---|
66 | ãCPUä¾å¤ãã³ãã©ã
|
---|
67 | å®è¡éå§æ¡ä»¶ ä»»æ ï¼ ä»»æ ä»»æ
|
---|
68 | å®è¡éå§æå¦ç ãã®ã¾ã¾ ï¼ ãã®ã¾ã¾ ãã®ã¾ã¾
|
---|
69 | ãªã¿ã¼ã³å å
|
---|
70 | ã«æ»ã ï¼ å
|
---|
71 | ã«æ»ã(*4) å¤æ´ä¸å¯
|
---|
72 | ãªã¿ã¼ã³æå¦ç æªè¦å®(*1) ï¼ æªè¦å®(*1) ãã®ã¾ã¾
|
---|
73 | ------------------------------------------------------------------------------
|
---|
74 | ãæ¡å¼µãµã¼ãã¹ã³ã¼ã«ã«ã¼ãã³ã
|
---|
75 | å®è¡éå§æ¡ä»¶ ä»»æ ï¼ ä»»æ ä»»æ
|
---|
76 | å®è¡éå§æå¦ç ãã®ã¾ã¾ ï¼ ãã®ã¾ã¾ ãã®ã¾ã¾
|
---|
77 | ãªã¿ã¼ã³å ä»»æ ï¼ ä»»æ ä»»æ
|
---|
78 | ãªã¿ã¼ã³æå¦ç ãã®ã¾ã¾ ï¼ ãã®ã¾ã¾ ãã®ã¾ã¾
|
---|
79 | ------------------------------------------------------------------------------
|
---|
80 |
|
---|
81 | (*1) ãªã¿ã¼ã³åã®æ¡ä»¶ã«å¾ããã«ãªã¿ã¼ã³ããå ´åã®æ¯èãã¯æªå®ç¾©ï¼ãªã¿
|
---|
82 | ã¼ã³åã®æ¡ä»¶ã«å¾ãã°ï¼ãªã¿ã¼ã³ç´å¾ã¯ãã®ã¾ã¾ã¨ãªãï¼
|
---|
83 |
|
---|
84 | (*2) å®è£
|
---|
85 | å®ç¾©ã®æ¹æ³ã«å¾ãããªã¿ã¼ã³ããå ´åã®æ¯èãã¯æªå®ç¾©ï¼å®è£
|
---|
86 | å®ç¾©
|
---|
87 | ã®æ¹æ³ã«å¾ãã°ï¼ãªã¿ã¼ã³ç´å¾ã¯CPUããã¯è§£é¤ç¶æ
|
---|
88 | ã¨ãªãï¼
|
---|
89 |
|
---|
90 | (*3)ãä»»æãã¯æ¬¡ã®çç±ã§ä¸é½åã§ããï¼dis_dspã¨ena_dspã®å¯¾ããã¹ããã
|
---|
91 | ããå ´åã®å¯¾å¦æ³ã¨ãã¦ï¼Î¼ITRON4.0ä»æ§ã§ã¯ï¼sns_dspãç¨ããæ¹æ³ãæ示ã
|
---|
92 | ã¦ããï¼ã¨ãããï¼éåæã«å®è¡ãããã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ä¸ã§ãã£ã¹ãã
|
---|
93 | ãç¦æ¢ï¼è¨±å¯ç¶æ
|
---|
94 | ãå¤æ´ãããã¨ï¼ãã®æ¹æ³ã§ã¯å¯¾å¿ã§ããªãï¼ã¾ãï¼ããã«
|
---|
95 | 代ããè¯ãæ¹æ³ãç¨æããã¦ããªãï¼Î¼ITRON4.0ä»æ§çå®æã®èæ
|
---|
96 | ®ä¸è¶³ã¨èã
|
---|
97 | ãããï¼
|
---|
98 |
|
---|
99 | (*4) å¤æ´ããããã®APIã¯æ¨æºã§ã¯è¦å®ããã¦ããªãããï¼ãå¤æ´ä¸å¯ãã¨è¦
|
---|
100 | ããã¨ãã§ããï¼
|
---|
101 |
|
---|
102 | âTOPPERS/ASPã«ã¼ãã«ã«ãããå®ç¾ï¼æ¬ä¼¼ã³ã¼ããã¼ã¹ï¼
|
---|
103 |
|
---|
104 | âã¿ã¹ã¯ã®å®è¡éå§æå¦ç
|
---|
105 |
|
---|
106 | ã¿ã¹ã¯ã®å®è¡éå§æã¯ï¼CPUããã¯è§£é¤ç¶æ
|
---|
107 | ã»å²è¾¼ã¿åªå
|
---|
108 | 度ãã¹ã¯å
|
---|
109 | ¨è§£é¤ç¶æ
|
---|
110 | ã»
|
---|
111 | ãã£ã¹ããã許å¯ç¶æ
|
---|
112 | ã»ã¿ã¹ã¯ä¾å¤ç¦æ¢ç¶æ
|
---|
113 | ã¨ããªããã°ãªããªãï¼ä»¥ä¸ï¼ã
|
---|
114 | ããå®ç¾ããã¦ãããã¨ã確èªããï¼
|
---|
115 |
|
---|
116 | ã¿ã¹ã¯ã®å®è¡éå§æã¯ï¼ãã£ã¹ãããã£æ¬ä½ï¼dispatcherï¼ããï¼ã¿ã¹ã¯ãå®
|
---|
117 | è¡éå§ããå¦çï¼start_rï¼ã«åå²ãï¼ããããã¿ã¹ã¯ã®èµ·åçªå°ãå¼ã³åºãã
|
---|
118 | ãï¼
|
---|
119 |
|
---|
120 | CPUããã¯è§£é¤ç¶æ
|
---|
121 | ã«ã¤ãã¦ã¯ï¼start_rã«ããã¦ï¼CPUããã¯è§£é¤ç¶æ
|
---|
122 | ã«ããå¦
|
---|
123 | çãè¡ãããï¼
|
---|
124 |
|
---|
125 | dispatcherã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãã»CPUããã¯ç¶æ
|
---|
126 | ã»å²è¾¼ã¿åªå
|
---|
127 | 度ãã¹ã¯å
|
---|
128 | ¨è§£
|
---|
129 | é¤ç¶æ
|
---|
130 | ã»ãã£ã¹ããã許å¯ç¶æ
|
---|
131 | ã§å¼ã³åºããï¼åãç¶æ
|
---|
132 | ã§start_rã¸åå²ããï¼
|
---|
133 | start_rã§ã¯ï¼å²è¾¼ã¿åªå
|
---|
134 | 度ãã¹ã¯ã¨ãã£ã¹ãããç¦æ¢ãã©ã°ãå¤æ´ããªãããï¼
|
---|
135 | ã¿ã¹ã¯ã®å®è¡éå§æã«ã¯ï¼å²è¾¼ã¿åªå
|
---|
136 | 度ãã¹ã¯å
|
---|
137 | ¨è§£é¤ç¶æ
|
---|
138 | ã»ãã£ã¹ããã許å¯
|
---|
139 | ç¶æ
|
---|
140 | ã¨ãªã£ã¦ããï¼
|
---|
141 |
|
---|
142 | â
|
---|
143 | dispatcherãä¸è¨æ¡ä»¶ã§å¼ã³åºããããã¨ã®ç¢ºèªãå¿
|
---|
144 | è¦ï¼
|
---|
145 |
|
---|
146 | ã¿ã¹ã¯ä¾å¤ç¦æ¢ç¶æ
|
---|
147 | ã«ã¤ãã¦ã¯ï¼make_dormantã«ããã¦ï¼TCBã®enatexãã£ã¼ã«
|
---|
148 | ããFALSEã«ãã¦ããï¼ã¿ã¹ã¯ãä¼æ¢ç¶æ
|
---|
149 | ã®éã¯ãããä¿ãããï¼ãã®ããï¼ã¿
|
---|
150 | ã¹ã¯ã®å®è¡éå§æã«ã¯ï¼ç¹å¥ãªå¦çã¯å¿
|
---|
151 | è¦ãªãï¼
|
---|
152 |
|
---|
153 | âã¿ã¹ã¯ã®çµäºæå¦ç
|
---|
154 |
|
---|
155 | ã¿ã¹ã¯ã®çµäºæã«ã¯ï¼CPUããã¯è§£é¤ç¶æ
|
---|
156 | ã»å²è¾¼ã¿åªå
|
---|
157 | 度ãã¹ã¯å
|
---|
158 | ¨è§£é¤ç¶æ
|
---|
159 | ã»ãã£
|
---|
160 | ã¹ããã許å¯ç¶æ
|
---|
161 | ã¨ããªããã°ãªããªãï¼ä»¥ä¸ï¼ãããå®ç¾ããã¦ãããã¨ã
|
---|
162 | 確èªããï¼
|
---|
163 |
|
---|
164 | ã¿ã¹ã¯ã®çµäºæã«ã¯ext_tskãå¼ã³åºããããï¼ãã®ä¸ã§ï¼CPUããã¯ç¶æ
|
---|
165 | ã§å¼
|
---|
166 | ã°ããå ´åã«ã¯ãã®è§£é¤ï¼ã³ã¼ãä¸ã¯ï¼ext_tskä¸ã§CPUããã¯ç¶æ
|
---|
167 | ã«ç§»è¡ãã
|
---|
168 | éã«ï¼CPUããã¯ç¶æ
|
---|
169 | ã§å¼ã°ããå ´åã«ã¯ï¼ç§»è¡å¦çãçç¥ãã¦ããã ãï¼ï¼å²
|
---|
170 | è¾¼ã¿åªå
|
---|
171 | 度ãã¹ã¯å
|
---|
172 | ¨è§£é¤ä»¥å¤ã§å¼ã°ããå ´åã«ã¯ãã®å
|
---|
173 | ¨è§£é¤ï¼ãã£ã¹ãããç¦
|
---|
174 | æ¢ç¶æ
|
---|
175 | ã§å¼ã°ããå ´åã«ã¯ãã£ã¹ãããã®è¨±å¯ãè¡ã£ã¦ããï¼
|
---|
176 |
|
---|
177 | ï¼æªå®æï¼
|
---|
178 |
|
---|
179 | âTOPPERS/ASPã«ã¼ãã«ã«ãããå®ç¾ï¼M68040ä¾åï¼
|
---|
180 |
|
---|
181 | âã¿ã¹ã¯ã®å®è¡éå§
|
---|
182 |
|
---|
183 | ãã£ã¹ãããã£ï¼dispatcherï¼ã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãï¼CPUããã¯ç¶æ
|
---|
184 | ï¼ãã£
|
---|
185 | ã¹ããã許å¯ç¶æ
|
---|
186 | ï¼å²è¾¼ã¿åªå
|
---|
187 | 度ãã¹ã¯å
|
---|
188 | ¨è§£é¤ç¶æ
|
---|
189 | ã§å¼ã³åºãããï¼
|
---|
190 |
|
---|
191 | M68040ã«ããã¦ã¯ï¼â
|
---|
192 | ä¸ã®æ¡ä»¶ãæºãããã¦ãããã¨ã確èªããå¿
|
---|
193 | è¦ãããâ
|
---|
194 | ï¼
|
---|
195 |
|
---|
196 | ã¿ã¹ã¯å®è¡éå§æã¯ï¼CPUããã¯è§£é¤ç¶æ
|
---|
197 | ï¼ãã£ã¹ããã許å¯ç¶æ
|
---|
198 | ï¼å²è¾¼ã¿åªå
|
---|
199 |
|
---|
200 | 度ãã¹ã¯å
|
---|
201 | ¨è§£é¤ç¶æ
|
---|
202 | ã¨ããªããã°ãªããªãããï¼ãã£ã¹ãããã£ããã¿ã¹ã¯å®
|
---|
203 | è¡éå§ããå¦çï¼start_rï¼ã«ããã¦ï¼CPUããã¯ã解é¤ããï¼
|
---|
204 |
|
---|
205 | M68040ã«ããã¦ã¯ï¼start_rä¸ã®æ¬¡ã®å¦çã§ãããå®ç¾ãã¦ããï¼
|
---|
206 |
|
---|
207 | ----------------------------------------
|
---|
208 | clr.l lock_flag /* CPUããã¯è§£é¤ç¶æ
|
---|
209 | ã« */
|
---|
210 | and.w #~0x0700, %sr
|
---|
211 | ----------------------------------------
|
---|
212 |
|
---|
213 | start_rãå®è¡ãããæã«ã¯ï¼ï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå
|
---|
214 | 度ãã¹ã¯å
|
---|
215 | ¨è§£é¤ç¶æ
|
---|
216 | ã¨
|
---|
217 | ãªã£ã¦ããããï¼ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼SRï¼ä¸ã®IPMã0ã¨ãã¦ããï¼saved_iipm
|
---|
218 | ã«ä¿åããå¤ã«æ»ãå¿
|
---|
219 | è¦ã¯ãªãï¼ï¼
|
---|
220 |
|
---|
221 | make_dormantã«ããã¦ï¼TCBã®enatexãã£ã¼ã«ããfalseã«ãã¦ããï¼ã¿ã¹ã¯ã
|
---|
222 | ä¼æ¢ç¶æ
|
---|
223 | ã®éã¯ãããä¿ãããï¼ãã®ããï¼ã¿ã¹ã¯ã®å®è¡éå§æã«ã¿ã¹ã¯ä¾å¤
|
---|
224 | ç¦æ¢ç¶æ
|
---|
225 | ã¨ããããã«ï¼ç¹å¥ãªå¦çã¯å¿
|
---|
226 | è¦ãªãï¼
|
---|
227 |
|
---|
228 | âã¿ã¹ã¯ã®çµäº
|
---|
229 |
|
---|
230 | ext_tskã«ããã¦ï¼CPUããã¯ç¶æ
|
---|
231 | ã§å¼ã°ããå ´åã«ã¯ãã®è§£é¤ï¼ã³ã¼ãä¸ã¯ï¼
|
---|
232 | ext_tskä¸ã§CPUããã¯ç¶æ
|
---|
233 | ã«ç§»è¡ããéã«ï¼CPUããã¯ç¶æ
|
---|
234 | ã§å¼ã°ããå ´åã«ã¯ï¼
|
---|
235 | 移è¡å¦çãçç¥ãã¦ããã ãï¼ï¼ãã£ã¹ãããç¦æ¢ç¶æ
|
---|
236 | ã§å¼ã°ããå ´åã«ã¯ãã£
|
---|
237 | ã¹ãããã®è¨±å¯ï¼å²è¾¼ã¿åªå
|
---|
238 | 度ãã¹ã¯å
|
---|
239 | ¨è§£é¤ä»¥å¤ã§å¼ã°ããå ´åã«ã¯ãã®å
|
---|
240 | ¨è§£
|
---|
241 | é¤ãè¡ã£ã¦ããï¼
|
---|
242 |
|
---|
243 | âã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®å®è¡éå§
|
---|
244 |
|
---|
245 | ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®å¼åºãå¦çï¼call_texrtnï¼ã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãï¼
|
---|
246 | CPUããã¯ç¶æ
|
---|
247 | ï¼ã¿ã¹ã¯ä¾å¤è¨±å¯ç¶æ
|
---|
248 | ã§å¼ã³åºãããï¼ã¿ã¼ã²ããéä¾åé¨ã«ã
|
---|
249 | ãã¦ã¯ï¼ras_texã¨ena_texããcall_texrtnãå¼ã³åºãã¦ãããï¼ãããããã®
|
---|
250 | æ¡ä»¶ãæºããã¦ããï¼
|
---|
251 |
|
---|
252 | M68040ã«ããã¦ã¯ï¼dispatch_rã¨ret_int_rã®2ç®æããcall_texrtnãå¼ã³åºã
|
---|
253 | ã¦ããï¼dispatch_rãå®è¡ãããæã«ã¯ï¼CPUããã¯ç¶æ
|
---|
254 | ã¨ãªã£ã¦ããï¼ã¿ã¹ã¯
|
---|
255 | ä¾å¤è¨±å¯ç¶æ
|
---|
256 | ã®å ´åã®ã¿call_texrtnãå¼ã³åºãããã«ãã¦ããï¼ret_int_rã«
|
---|
257 | ã¤ãã¦ãï¼å®è¡ãããæã«ã¯CPUããã¯ç¶æ
|
---|
258 | ã¨ãªã£ã¦ããï¼ã¿ã¹ã¯ä¾å¤è¨±å¯ç¶æ
|
---|
259 |
|
---|
260 | ã®å ´åã®ã¿call_texrtnãå¼ã³åºãããã«ãã¦ããï¼call_texrtnãç´æ¥å¼ã¶ä»£
|
---|
261 | ããã«calltexãå¼ã¹ã°ï¼calltexã«ããã¦ï¼ã¿ã¹ã¯ä¾å¤è¨±å¯ç¶æ
|
---|
262 | ã®å ´åã®ã¿
|
---|
263 | call_texrtnãå¼ã³åºãããã«ãªã£ã¦ããï¼ï¼
|
---|
264 |
|
---|
265 | ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³å®è¡éå§æã¯ï¼CPUããã¯è§£é¤ç¶æ
|
---|
266 | ï¼ã¿ã¹ã¯ä¾å¤ç¦æ¢ç¶
|
---|
267 | æ
|
---|
268 | ã¨ããªããã°ãªããªãããï¼call_texrtnã«ããã¦ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã
|
---|
269 | å¼ã³åºãåã«ï¼CPUããã¯ã解é¤ãï¼ã¿ã¹ã¯ä¾å¤ç¦æ¢ç¶æ
|
---|
270 | ã¨ãã¦ããï¼ã¾ãï¼ãã£
|
---|
271 | ã¹ãããç¦æ¢ï¼è¨±å¯ç¶æ
|
---|
272 | ã¨å²è¾¼ã¿åªå
|
---|
273 | 度ãã¹ã¯ã¯ï¼å¼ã³åºãåã®ç¶æ
|
---|
274 | ãä¿åã
|
---|
275 | ãã®ã¿ã§ï¼ç¶æ
|
---|
276 | ã®å¤æ´ã¯è¡ããªãï¼
|
---|
277 |
|
---|
278 | âã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ããã®ãªã¿ã¼ã³
|
---|
279 |
|
---|
280 | call_texrtnã«ããã¦ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ããæ»ã£ãå¾ã«ï¼CPUããã¯ç¶æ
|
---|
281 |
|
---|
282 | ã¸ã®ç§»è¡ï¼CPUããã¯ç¶æ
|
---|
283 | ã§æ»ã£ã¦ããå ´åã«ã¯çç¥ï¼ã¨ï¼ãã£ã¹ãããç¦æ¢ï¼
|
---|
284 | 許å¯ç¶æ
|
---|
285 | ã¨å²è¾¼ã¿åªå
|
---|
286 | 度ãã¹ã¯ãå¼ã³åºãåã®ç¶æ
|
---|
287 | ã«æ»ãå¦çãè¡ãï¼ã¾ãï¼
|
---|
288 | ã¿ã¹ã¯ä¾å¤è¨±å¯ç¶æ
|
---|
289 | ã¨ããï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãç¶ãã¦å¼ã³åºãå ´åã«
|
---|
290 | ã¯ï¼ã¿ã¹ã¯ä¾å¤è¨±å¯ç¶æ
|
---|
291 | ã«ã¯ããªãï¼ï¼CPUããã¯ç¶æ
|
---|
292 | ã®è§£é¤ã¯ï¼call_texrtn
|
---|
293 | ãããªã¿ã¼ã³ããå¾ã«è¡ãï¼
|
---|
294 |
|
---|
295 | ã¿ã¼ã²ããéä¾åé¨ã«ããã¦ï¼ras_texã¨ena_texããcall_texrtnãå¼ã³åºãã
|
---|
296 | ãå ´åã«ã¯ï¼call_texrtnããã®ãªã¿ã¼ã³ã«ãããµã¼ãã¹ã³ã¼ã«å¦çé¢æ°ã«æ»ãï¼
|
---|
297 | ãµã¼ãã¹ã³ã¼ã«å¦çé¢æ°ã§ã¯ï¼call_texrtnããæ»ã£ãå¾ã«ï¼t_unlock_cpuãå¼
|
---|
298 | ã³åºãã¦CPUããã¯ç¶æ
|
---|
299 | ã解é¤ããï¼
|
---|
300 |
|
---|
301 | M68040ã«ããã¦ï¼dispatch_rããcall_texrtnãå¼ã³åºãããå ´åã«ã¯ï¼
|
---|
302 | call_texrtnããã®ãªã¿ã¼ã³ã«ããï¼ç´æ¥ãµã¼ãã¹ã³ã¼ã«å¦çé¢æ°ã«æ»ã
|
---|
303 | ï¼dispatchã®å¼åºãããæ»ãï¼ï¼ãµã¼ãã¹ã³ã¼ã«å¦çé¢æ°ã§ã¯ï¼dispatchãã
|
---|
304 | æ»ã£ãå¾ã«ï¼t_unlock_cpuãå¼ã³åºãã¦CPUããã¯ç¶æ
|
---|
305 | ã解é¤ããï¼
|
---|
306 |
|
---|
307 | ret_int_rããcall_texrtnãå¼ã³åºãããå ´åã«ã¯ï¼call_texrtnããã®ãªã¿ã¼
|
---|
308 | ã³å¾ã«ï¼lock_flagãã¯ãªã¢ãï¼rteå½ä»¤ã«ããIPMãå²è¾¼ã¿çºçåã®å¤ã«æ»ãã¦ï¼
|
---|
309 | CPUããã¯ç¶æ
|
---|
310 | ã解é¤ããï¼ãã®ã±ã¼ã¹ã¯ããã«ï¼ret_intã«ããã¦ã¿ã¹ã¯åæ
|
---|
311 | ããè¡ã£ãå ´åã¨ï¼è¡ããªãã£ãå ´åï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãå®è¡ããã
|
---|
312 | ãã«reqflgãã»ããããå ´åï¼ã«åé¡ã§ãããï¼ãããã®å ´åãï¼rteå½ä»¤ã«ã
|
---|
313 | ãï¼IPMã¯ã¿ã¹ã¯ãå²è¾¼ã¿ãåãä»ããæã®ç¶æ
|
---|
314 | ã«æ»ãï¼ä»æ§ã«åè´ããæ¯èã
|
---|
315 | ã¨ãªã£ã¦ããï¼
|
---|
316 |
|
---|
317 | âå²è¾¼ã¿ãã³ãã©ã®å®è¡éå§
|
---|
318 |
|
---|
319 | å²è¾¼ã¿ãã³ãã©ã®å®è¡éå§æã«ã¯ï¼ã¿ã¼ã²ããä¾åé¨ã«ããã¦ï¼å²è¾¼ã¿åªå
|
---|
320 | 度
|
---|
321 | ãã¹ã¯ãï¼å®è¡éå§ããå²è¾¼ã¿ãã³ãã©ã®å²è¾¼ã¿åªå
|
---|
322 | 度ã«è¨å®ããï¼
|
---|
323 |
|
---|
324 | M68040ã«ããã¦ã¯ï¼å²è¾¼ã¿åªå
|
---|
325 | 度ãã¹ã¯ã®å¤æ´ã¯ï¼ãã¼ãã¦ã§ã¢ã§è¡ãããã
|
---|
326 | ãï¼ã½ããã¦ã§ã¢ã§ã¯ç¹å¥ã®å¦çãè¡ãå¿
|
---|
327 | è¦ããªãï¼
|
---|
328 |
|
---|
329 | âå²è¾¼ã¿ãã³ãã©ããã®ãªã¿ã¼ã³
|
---|
330 |
|
---|
331 | å²è¾¼ã¿ãã³ãã©ããã®ãªã¿ã¼ã³æã«ã¯ï¼ã¿ã¼ã²ããä¾åé¨ã«ããã¦ï¼CPUããã¯
|
---|
332 | 解é¤ç¶æ
|
---|
333 | ã«æ»ãï¼å²è¾¼ã¿åªå
|
---|
334 | 度ãã¹ã¯ãå²è¾¼ã¿ãã³ãã©å®è¡éå§åã®å¤ã«æ»ãï¼
|
---|
335 |
|
---|
336 | M68040ã«ããã¦ã¯ï¼å²è¾¼ã¿ãã³ãã©ããã®åºå£å¦çï¼ret_intï¼ã®å¦çãï¼ãã
|
---|
337 | ã¤ãã®å®è¡çµè·¯ã«åãã¦ç¢ºèªããå¿
|
---|
338 | è¦ãããï¼
|
---|
339 |
|
---|
340 | (1) æ»ãå
|
---|
341 | ãéã¿ã¹ã¯ã³ã³ããã¹ããï¼reqflgãfalseã®å ´åã«ã¯ï¼ret_int_1
|
---|
342 | ã«ããã¦ï¼lock_flagãã¯ãªã¢ãï¼rteå½ä»¤ã«ããIPMãå²è¾¼ã¿çºçåã®å¤ã«æ»ã
|
---|
343 | ã¦ï¼CPUããã¯ç¶æ
|
---|
344 | ã解é¤ãï¼å²è¾¼ã¿åªå
|
---|
345 | 度ãã¹ã¯ãå
|
---|
346 | ã®å¤ã«æ»ãï¼
|
---|
347 |
|
---|
348 | (2) ã¿ã¹ã¯åæããå¿
|
---|
349 | è¦ãªå ´åã«ã¯ï¼CPUããã¯ç¶æ
|
---|
350 | ã«ç§»è¡ãã¦ï¼ãã£ã¹ãããã£
|
---|
351 | ï¼dispatcherï¼ã¸åå²ããï¼ãã®éã«ï¼å²è¾¼ã¿çºçåã®IPMï¼ãã£ã¹ãããä¿ç
|
---|
352 | ç¶æ
|
---|
353 | ã§ãªããã¨ããï¼TIPM_ENAALLã«ãªã£ã¦ããã¯ãï¼ãï¼saved_iipmã«ä¿åã
|
---|
354 | ãï¼ããã«ããï¼æ¬¡ã«å®è¡ãã¹ãã¿ã¹ã¯ã¸ã¨æ»ãåã«CPUããã¯ç¶æ
|
---|
355 | ã解é¤ãã
|
---|
356 | ã¿ã¤ãã³ã°ã§ï¼CPUããã¯ç¶æ
|
---|
357 | ã解é¤ãï¼å²è¾¼ã¿åªå
|
---|
358 | 度ãã¹ã¯ãå²è¾¼ã¿çºçåã®
|
---|
359 | å¤ã«è¨å®ããããã¨ã«ãªãï¼
|
---|
360 |
|
---|
361 | (3) ã¿ã¹ã¯åæããå¿
|
---|
362 | è¦ãªãï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®å®è¡ãå¿
|
---|
363 | è¦ãªå ´åã«
|
---|
364 | ã¯ï¼CPUããã¯ç¶æ
|
---|
365 | ã«ç§»è¡ãã¦ï¼call_rettexãå¼ã³åºãï¼ãã®éã«ï¼å²è¾¼ã¿çº
|
---|
366 | çåã®IPMï¼TIPM_ENAALLã§ããã¨ã¯éããªãï¼ãï¼saved_iipmã«ä¿åããï¼ã
|
---|
367 | ãã«ããï¼call_rettexã®ä¸ã§ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãå¼ã³åºãåã«CPUãã
|
---|
368 | ã¯ç¶æ
|
---|
369 | ã解é¤ããã¿ã¤ãã³ã°ã§ï¼CPUããã¯ç¶æ
|
---|
370 | ã解é¤ãï¼å²è¾¼ã¿åªå
|
---|
371 | 度ãã¹ã¯
|
---|
372 | ãå²è¾¼ã¿çºçåã®å¤ã«è¨å®ããããã¨ã«ãªãï¼
|
---|
373 |
|
---|
374 | âå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼ã®å®è¡éå§
|
---|
375 |
|
---|
376 | å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãçæããå²è¾¼ã¿ãã³
|
---|
377 | ãã©ããå¼ã³åºãï¼ISRã®å¼åºãã¯ï¼å²è¾¼ã¿ãã³ãã©ã®å®è¡éå§å¾ã«ãã®ã¾ã¾ã®
|
---|
378 | ç¶æ
|
---|
379 | ã§è¡ããï¼ä»ã®ISRãããªã¿ã¼ã³ããå¾ã«å
|
---|
380 | ã®ç¶æ
|
---|
381 | ã«æ»ããå¾ã«è¡ãï¼ãã
|
---|
382 | ãã®å ´åãï¼ISRã®å®è¡éå§æã®æ¡ä»¶ãæºããã¦ããï¼
|
---|
383 |
|
---|
384 | âå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼ããã®ãªã¿ã¼ã³
|
---|
385 |
|
---|
386 | å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼ããã®ãªã¿ã¼ã³å¾ã®å¦çã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼
|
---|
387 | ã¿ãçæããå²è¾¼ã¿ãã³ãã©ã«å«ã¾ããï¼ããã§ã¯ï¼CPUããã¯ç¶æ
|
---|
388 | ã§ããã°ã
|
---|
389 | ãã解é¤ãï¼å²è¾¼ã¿åªå
|
---|
390 | 度ãã¹ã¯ãISRå¼åºãåã®å¤ã«æ»ãï¼
|
---|
391 |
|
---|
392 | âã¿ã¤ã ã¤ãã³ããã³ãã©ã®å®è¡éå§
|
---|
393 |
|
---|
394 | å¨æãã³ãã©ã¯ã¿ã¼ã²ããéä¾åé¨ã®call_cychdrããï¼ã¢ã©ã¼ã ãã³ãã©ã¯ã¿ã¼
|
---|
395 | ã²ããéä¾åé¨ã®call_almhdrããå¼ã³åºãï¼ããããï¼å¼åºãåã«CPUããã¯
|
---|
396 | ç¶æ
|
---|
397 | ã解é¤ããï¼ããã§ï¼CPUããã¯ç¶æ
|
---|
398 | ã«ç§»è¡ããã®ã¯signal_timeã®ä¸ã®ã¯
|
---|
399 | ããªã®ã§ï¼å²è¾¼ã¿åªå
|
---|
400 | 度ãã¹ã¯ã¯ï¼signal_timeãå¼ã°ããæã®å¤ã«è¨å®ãããï¼
|
---|
401 |
|
---|
402 | âã¿ã¤ã ã¤ãã³ããã³ãã©ããã®ãªã¿ã¼ã³
|
---|
403 |
|
---|
404 | ã¿ã¤ã ã¤ãã³ããã³ãã©ããã®ãªã¿ã¼ã³å¾ã®å¦çã¯ï¼å¨æãã³ãã©ã«ã¤ãã¦ã¯
|
---|
405 | ã¿ã¼ã²ããéä¾åé¨ã®call_cychdrã«ï¼ã¢ã©ã¼ã ãã³ãã©ã«ã¤ãã¦ã¯ã¿ã¼ã²ãã
|
---|
406 | éä¾åé¨ã®call_almhdrã«å«ã¾ããï¼ããã§ã¯ï¼CPUããã¯ç¶æ
|
---|
407 | ã§ãªããã°CPUãã
|
---|
408 | ã¯ç¶æ
|
---|
409 | ã«æ»ãï¼CPUããã¯ç¶æ
|
---|
410 | ã®è§£é¤ã¯ï¼signal_timeã§è¡ãããï¼ï¼å²è¾¼ã¿åª
|
---|
411 | å
|
---|
412 | 度ãã¹ã¯ãã¿ã¤ã ã¤ãã³ããã³ãã©å¼åºãåã®å¤ã«æ»ãï¼
|
---|
413 |
|
---|
414 | âCPUä¾å¤ãã³ãã©ã®å®è¡éå§
|
---|
415 |
|
---|
416 | CPUä¾å¤ãã³ãã©ã®å®è¡éå§æã«ã¯ï¼å®è¡éå§åã®ã·ã¹ãã ç¶æ
|
---|
417 | ãä¿åããã®ã¿
|
---|
418 | ã§ï¼ã·ã¹ãã ç¶æ
|
---|
419 | ããã®ã¾ã¾å¼ãç¶ãï¼
|
---|
420 |
|
---|
421 | M68040ã«ããã¦ã¯ï¼ä¾å¤å¦çå®è¡éå§ç´å¾ã®ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼SRï¼ã¨
|
---|
422 | lock_flagãã¹ã¿ãã¯ã«ä¿åããå¾ï¼ã·ã¹ãã ç¶æ
|
---|
423 | ãå¤æ´ããã«ï¼CPUä¾å¤å¦ç
|
---|
424 | ã«ã¼ãã³ãå¼ã³åºãï¼
|
---|
425 |
|
---|
426 | âCPUä¾å¤ãã³ãã©ããã®ãªã¿ã¼ã³
|
---|
427 |
|
---|
428 | CPUä¾å¤ãã³ãã©ããã®ãªã¿ã¼ã³æã«ã¯ï¼ã¿ã¼ã²ããä¾åé¨ã«ããã¦ï¼CPUãã
|
---|
429 | ã¯ï¼ããã¯è§£é¤ç¶æ
|
---|
430 | ã¨å²è¾¼ã¿åªå
|
---|
431 | 度ãã¹ã¯ãï¼CPUä¾å¤ãã³ãã©å®è¡éå§åã®ç¶
|
---|
432 | æ
|
---|
433 | ã«æ»ãï¼
|
---|
434 |
|
---|
435 | M68040ã«ããã¦ã¯ï¼CPUä¾å¤ãã³ãã©ããã®åºå£å¦çï¼ret_excï¼ã«ããã¦ï¼ã¾
|
---|
436 | ãï¼lock_flagãå
|
---|
437 | ã®å¤ã«æ»ãã¦ããï¼å²è¾¼ã¿åªå
|
---|
438 | 度ãã¹ã¯ã«ã¤ãã¦ã¯ï¼ããã¤
|
---|
439 | ãã®å®è¡çµè·¯ã«åãã¦ç¢ºèªããå¿
|
---|
440 | è¦ãããï¼
|
---|
441 |
|
---|
442 | (1) æ»ãå
|
---|
443 | ãéã¿ã¹ã¯ã³ã³ããã¹ããï¼reqflgãfalseã®å ´åã«ã¯ï¼ret_exc_2
|
---|
444 | ã«ããã¦ï¼rteå½ä»¤ã«ããIPMãå²è¾¼ã¿çºçåã®å¤ã«æ»ãã¦ï¼å²è¾¼ã¿åªå
|
---|
445 | 度ãã¹
|
---|
446 | ã¯ãå
|
---|
447 | ã®å¤ã«æ»ãï¼CPUããã¯ç¶æ
|
---|
448 | ã§CPUä¾å¤ãçºçããå ´åã«ã¯ï¼reqflgã
|
---|
449 | trueã«ãªããã¨ã¯ãªãã®ã§ï¼ãã®çµè·¯ã§å®è¡ãããï¼
|
---|
450 |
|
---|
451 | (2,3) ãã®ä»ã®å ´åã¯ï¼CPUããã¯è§£é¤ç¶æ
|
---|
452 | ã§CPUä¾å¤ãçºçããå ´åã§ããï¼
|
---|
453 | å²è¾¼ã¿ãã³ãã©ããã®åºå£å¦çã¨åæ§ã§ããï¼
|
---|
454 |
|
---|
455 | 以ä¸
|
---|