1 |
|
---|
2 | ï¼ TOPPERS/JSPã«ã¼ãã« ã¦ã¼ã¶ãºããã¥ã¢ã« ï¼
|
---|
3 | ï¼MIPS3 ã¿ã¼ã²ããä¾åé¨ï¼
|
---|
4 |
|
---|
5 | ï¼Release 1.4.1 対å¿ï¼æçµæ´æ°: 9-Aug-2004ï¼
|
---|
6 |
|
---|
7 | ------------------------------------------------------------------------
|
---|
8 | TOPPERS/JSP Kernel
|
---|
9 | Toyohashi Open Platform for Embedded Real-Time Systems/
|
---|
10 | Just Standard Profile Kernel
|
---|
11 |
|
---|
12 | Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory
|
---|
13 | Toyohashi Univ. of Technology, JAPAN
|
---|
14 | Copyright (C) 2001-2004 by Industrial Technology Institute,
|
---|
15 | Miyagi Prefectural Government, JAPAN
|
---|
16 |
|
---|
17 | ä¸è¨è使¨©è
|
---|
18 | ã¯ï¼Free Software Foundation ã«ãã£ã¦å
|
---|
19 | ¬è¡¨ããã¦ãã
|
---|
20 | GNU General Public License ã® Version 2 ã«è¨è¿°ããã¦ããæ¡ä»¶ãï¼ä»¥
|
---|
21 | ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§
|
---|
22 | ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé
|
---|
23 | å¸ï¼ä»¥ä¸ï¼
|
---|
24 | å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
|
---|
25 | (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
|
---|
26 | 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
|
---|
27 | ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼
|
---|
28 | (2) æ¬ã½ããã¦ã§ã¢ãåå©ç¨å¯è½ãªãã¤ããªã³ã¼ãï¼ãªãã±ã¼ã¿ãã«ãªã
|
---|
29 | ã¸ã§ã¯ããã¡ã¤ã«ãã©ã¤ãã©ãªãªã©ï¼ã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼å©ç¨
|
---|
30 | ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è
|
---|
31 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼
|
---|
32 | ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
33 | (3) æ¬ã½ããã¦ã§ã¢ãåå©ç¨ä¸å¯è½ãªãã¤ããªã³ã¼ãã®å½¢ã¾ãã¯æ©å¨ã«çµ
|
---|
34 | ã¿è¾¼ãã å½¢ã§å©ç¨ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºãããã¨ï¼
|
---|
35 | (a) å©ç¨ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è
|
---|
36 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½
|
---|
37 | 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
38 | (b) å©ç¨ã®å½¢æ
|
---|
39 | ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼ä¸è¨è使¨©è
|
---|
40 | ã«å ±åãã
|
---|
41 | ãã¨ï¼
|
---|
42 | (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
|
---|
43 | 害ãããï¼ä¸è¨è使¨©è
|
---|
44 | ãå
|
---|
45 | 責ãããã¨ï¼
|
---|
46 |
|
---|
47 | æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è
|
---|
48 | ã¯ï¼
|
---|
49 | æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ã
|
---|
50 | ãªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çããã
|
---|
51 | ããªãæå®³ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼
|
---|
52 | ------------------------------------------------------------------------
|
---|
53 |
|
---|
54 | ï¼ï¼MIPS3 ã¿ã¼ã²ããä¾åé¨ã®æ¦è¦
|
---|
55 |
|
---|
56 | 1.1 ã¿ã¼ã²ããã·ã¹ãã ã¨éçºç°å¢
|
---|
57 |
|
---|
58 | MIPS3ããã»ããµã®ã¿ã¼ã²ããã·ã¹ãã ã¨ãã¦ã¯ã以ä¸ã®ããã»ããµããµãã¼ãã
|
---|
59 | ã¦ããã
|
---|
60 |
|
---|
61 | ã»VR5500 (NEC)
|
---|
62 | ã»VR4131 (NEC)
|
---|
63 |
|
---|
64 | ãµãã¼ããã¦ãããã¼ãã¯ã以ä¸ã®éãã§ããã
|
---|
65 |
|
---|
66 | ã»æ ªå¼ä¼ç¤¾ãã¤ãã¹ã»ã©ã製 RTE-VR5500-CB(64) (CPU:VR5500)
|
---|
67 | ã»äº¬é½ãã¤ã¯ãã³ã³ãã¥ã¼ã¿æ ªå¼ä¼ç¤¾è£½ KZ-Vr4131PCI-01 (CPU:VR4131)
|
---|
68 |
|
---|
69 | éçºç°å¢ã«ã¯ãGCC ãªã©ã® GNUéçºç°å¢ãç¨ãããªãã¸ã§ã¯ããã¡ã¤ã«ãã©ã¼ãã
|
---|
70 | ã㯠ELF ãæ¨æºã¨ããã
|
---|
71 |
|
---|
72 | 以ä¸ãvr5500, vr4131ãã£ã¬ã¯ããªãé¤ããmips3ãã£ã¬ã¯ããªã®ç¯å²ãããã»ããµ
|
---|
73 | ä¾åé¨ã¨å¼ã³ãvr5500, vr4131ãã£ã¬ã¯ããªã«é¢ãããã¨ããã·ã¹ãã ä¾åé¨ã¨å¼
|
---|
74 | ã¶ã
|
---|
75 | MIPS3ã¿ã¼ã²ããä¾åé¨ = ããã»ããµä¾åé¨ + ã·ã¹ãã ä¾åé¨
|
---|
76 |
|
---|
77 | 1.2 ãµãã¼ãããæ©è½ã®æ¦è¦
|
---|
78 |
|
---|
79 | MIPS3ã¿ã¼ã²ããä¾åã®æ©è½ã¨ãã¦ãå²è¾¼ã¿ãã¹ã¯ã®å¤æ´ã»åç
|
---|
80 | §(chg_ipmãget_ipm)
|
---|
81 | ã¨ãæ§è½è©ä¾¡ç¨ã·ã¹ãã æå»åç
|
---|
82 | §æ©è½(vxget_tim)ããµãã¼ããã¦ãããå²è¾¼ã¿ã®
|
---|
83 | ç¦æ¢ã¨è¨±å¯(dis_intãena_int)ã¯ãµãã¼ããã¦ããªãã
|
---|
84 |
|
---|
85 | 1.3 ä»ã®ã¿ã¼ã²ããã¸ã®ãã¼ãã£ã³ã°
|
---|
86 |
|
---|
87 | MIPS ã·ãªã¼ãºã¯ãMIPS 社ããä¾çµ¦ããã¦ãã CPU ã³ã¢ã§ããããã®ã³ã¢ãç¨ãã
|
---|
88 | æ§ã
|
---|
89 | ãªããã»ããµãåã¡ã¼ã«ã¼ããåºè·ããã¦ãããã¾ããMIPS ã«ã¯ãå½ä»¤ã»ãã
|
---|
90 | ã®æ¡å¼µã¬ãã«ã«å¿ã㦠MIPS I ã IV ã¾ã§ãåå¨ããããã®ä¸ã§ãä»å㯠MIPS III
|
---|
91 | ã¬ãã«ï¼ä»¥ä¸ãMIPS3ï¼ã®å½ä»¤ã»ãããç¨ããå®è£
|
---|
92 | ãè¡ã£ãã
|
---|
93 |
|
---|
94 | ããã¯ä»åå®è£
|
---|
95 | ãè¡ã£ãããã»ããµã«é¢ãã¦ãVR5500 ã¯å½ä»¤ã»ããã¨ã㦠MIPS IV
|
---|
96 | ã¾ã§å¯¾å¿ãã¦ããããVR4131 㯠MIPS III ã¾ã§ã®å¯¾å¿ã§ããããã§ããã
|
---|
97 | ï¼ä»åã®å®è£
|
---|
98 | ãç¨ãã¦ãä»ã®MIPSããã»ããµã¸ã®ãã¼ãã£ã³ã°ãè¡ããã¨ãå¯è½ã§
|
---|
99 | ãããï¼
|
---|
100 |
|
---|
101 | 1.4 GDB ã¹ã¿ã
|
---|
102 |
|
---|
103 | ç¾å¨ã® TOPPERS/JSP ã«ã¼ãã« MIPS3 çã¯ROMåããµãã¼ããã¦ããã
|
---|
104 |
|
---|
105 | ã¾ããGDBã¹ã¿ãã¨çµã¿åããã¦ä½¿ç¨ãããã¨ãèæ
|
---|
106 | ®ãã¦ã仿©ç¨®çã®JSPã«ã¼ãã«ã¨
|
---|
107 | åæ§ã«ãã½ã¼ã¹ã³ã¼ãå
|
---|
108 | ã«GDB_STUBãã¯ãã«ããæ¡ä»¶ã³ã³ãã¤ã«ã®è¨å®ãè¡ã£ã¦ããã
|
---|
109 | ãã®ãã¯ãã®è¨å®ã«ããã使ç¨ãããªã³ã«ã¹ã¯ãªãããåãæ¿ãããã¨ã§ã対å¿ã
|
---|
110 | è¡ã£ã¦ããã
|
---|
111 | (/vrxxxx/makefile.config)
|
---|
112 |
|
---|
113 | MIPS3ç¨ã®GDBã¹ã¿ãã¯ãvr4131éå®å¯¾å¿çãã宿ãã¦ãããä»å¾TOPPERSããã¸ã§
|
---|
114 | ã¯ããã¼ã ãã¼ã¸ãããã³ãå®®åçç£æ¥æè¡ç·åã»ã³ã¿ã¼ãã¼ã ãã¼ã¸ãéãã¦
|
---|
115 | å
|
---|
116 | ¬éããäºå®ã§ããã
|
---|
117 |
|
---|
118 | 1.5 ã·ãªã¢ã«ãã¼ã
|
---|
119 |
|
---|
120 | ã«ã¼ãã«ã®ãã°åºåç¨ã«ã·ãªã¢ã«ãã¼ããï¼ã¤ä½¿ç¨ããã
|
---|
121 | ã·ãªã¢ã«ãã¼ãã®è¨å®ã¯
|
---|
122 | ã»8ããã
|
---|
123 | ã»ããªãã£ãªã
|
---|
124 | ã»ã¹ããããããï¼1ããã
|
---|
125 | ã»ãã¼ã¬ã¼ãï¼9600bps
|
---|
126 | ã§ããã
|
---|
127 | (tl16pir552.c, vr4131_dsiu.cï¼siopinib_tableé
|
---|
128 | å)
|
---|
129 |
|
---|
130 | ãªãããã¼ã¬ã¼ãã«ã¤ãã¦ã¯ãDEVIDE_RATIOãã¯ãã«ã¦å®ç¾©ãã¦ããã®ã§å¿
|
---|
131 | è¦ã«
|
---|
132 | å¿ãã¦å¤æ´ãããã¨ãã§ããã
|
---|
133 | (sys_config.h)
|
---|
134 |
|
---|
135 | ï¼ï¼MIPS3ã¿ã¼ã²ããä¾åé¨ã®æ©è½
|
---|
136 |
|
---|
137 | ãã®ç¯ã§ã¯ãã«ã¼ãã«ããã³ã·ã¹ãã ãµã¼ãã¹ã®æ©è½ã®ä¸ã§ãMIPS3ã¿ã¼ã²ããä¾
|
---|
138 | åã®é¨åã«ã¤ãã¦è§£èª¬ããã
|
---|
139 |
|
---|
140 | 2.1 ãã¼ã¿å
|
---|
141 |
|
---|
142 | intåããã³ unsigned intåã®ãµã¤ãºã¯ 32ãããã§ããã
|
---|
143 | ç¾å¨ã¯ãMIPSèªä½ã¯ã64ãããã¢ã¼ããã¯ãã£ã§ããããã64ãããã¸ã®å¯¾å¿ã
|
---|
144 | å¯è½ã§ãããããããç¾æ®µéã§ã®å©ç¨å®ç¸¾ãªã©ãããä»åã¯32ãããã§ã®å®è£
|
---|
145 | ã
|
---|
146 | è¡ã£ãã
|
---|
147 |
|
---|
148 | 2.2 å²è¾¼ã¿ç®¡çæ©è½ã¨CPUä¾å¤
|
---|
149 |
|
---|
150 | MIPS3ã§ã¯ãå²è¾¼ã¿ãCPUä¾å¤ãä¸ç·ã«ãããä¾å¤å¦çãã¨ããå½¢ã§ãå¦çãè¡ã£ã¦
|
---|
151 | ããããã®ãããã¡ã¢ãªç®¡çã»ãªã»ãããªã©ã®ä¸é¨ã®è´å½çãªä¾å¤ãé¤ãããã¯
|
---|
152 | ã¿ã¢ãã¬ã¹ã¯å
|
---|
153 | ±éã¨ãªã£ã¦ããã
|
---|
154 |
|
---|
155 | ï¼ãªããä»åã®å®è£
|
---|
156 | ã§ã¯ãROMåãªã©ã®çç±ã«ãããã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã®BEVãã
|
---|
157 | ããï¼ã¨ãã¦å®è£
|
---|
158 | ãè¡ã£ã¦ããã®ã§ããã¯ã¿ã¢ãã¬ã¹ã¯0xbfc00300ã«ãªã£ã¦ãããï¼
|
---|
159 | (sys_config.h ; INIT_SR)
|
---|
160 |
|
---|
161 | ããã§ããã¯ã¿ã¢ãã¬ã¹ã«é£ãã éä¸ãããå²è¾¼ã¿ã¨CPUä¾å¤(å²è¾¼ã¿ä»¥å¤ã®ãä¾
|
---|
162 | å¤ããã以ä¸ããã®ããã«å¼ã¶ãã¨ã¨ããã)ã¨ã«åå²ããã¦å¦çãè¡ãå¿
|
---|
163 | è¦ã
|
---|
164 | ãããããã§ãåå ã¬ã¸ã¹ã¿(Cause;CP0)ã®ä¾å¤ã³ã¼ã(ExcCode)ãç¨ãã¦å¤æã
|
---|
165 | è¡ã£ã¦åå²ãã¦ããã
|
---|
166 |
|
---|
167 | 夿å¾ã®ãåè¦å ã«å¯¾å¿ãããã³ãã©ãå¼ã³åºãããã«ãæ¬ä¼¼ãã¯ã¿ãã¼ãã«ã
|
---|
168 | è¨ãã¦ããã
|
---|
169 | ã»å²è¾¼ã¿ INT_TABLE int_table[ TMAX_ALL_INTNO ]
|
---|
170 | ICU_IPM icu_intmask_table[ TMAX_ALL_INTNO ]
|
---|
171 | ã»CPUä¾å¤ EXCVE exc_table[ TMAX_CORE_EXCNO ]
|
---|
172 | ããã§ãå²è¾¼ã¿ãã³ãã©æ¬ä¼¼ãã¯ã¿ãã¼ãã«ã«ã¤ãã¦ã¯ãMIPS3ã³ã¢ã¯ãå²è¾¼ã¿ã®
|
---|
173 | åªå
|
---|
174 | 度å¶å¾¡ãè¡ããªãããã«ãå²è¾¼ã¿ãã³ãã©å¼ã³åºãæã®MIPS3ã³ã¢ã«é¢ããå²
|
---|
175 | è¾¼ã¿ãã¹ã¯ã¨ãã¾ã¨ããINT_TABLEåãå®ç¾©ããé
|
---|
176 | åã®åã¨ãããã¾ããå²è¾¼ã¿
|
---|
177 | ã³ã³ããã¼ã©ã«ã¤ãã¦ã¯ãæ§ã
|
---|
178 | ãªå²è¾¼ã¿ã³ã³ããã¼ã©ãåå¨ãããã¨ãèæ
|
---|
179 | ®ãã¦ã
|
---|
180 | ç§»æ¤æ§ã®è¦³ç¹ããããã»ããµä¾åé¨ããåé¢ããã¦ãã·ã¹ãã ä¾åé¨ã«ããã¦å²
|
---|
181 | è¾¼ã¿ã³ã³ããã¼ã©é¢é£ã®å®è£
|
---|
182 | ãè¡ãå¿
|
---|
183 | è¦ããããããå¥ã«icu_intmask_tableé
|
---|
184 |
|
---|
185 | åãå®ç¾©ãããã¨ã§å¯¾å¿ãããã¨ã¨ããã
|
---|
186 | ï¼cpu_config.h, cpu_config.c, pic_icu.h, vr4131_icu.hï¼
|
---|
187 |
|
---|
188 | ãªããããã§ã
|
---|
189 | TMAX_ALL_INTNO : MIPS3ã³ã¢ã¨å²è¾¼ã¿ã³ã³ããã¼ã©ã¨ãå«ãããå²è¾¼ã¿
|
---|
190 | ã®ç·æ¬æ°
|
---|
191 | ï¼MIPS3ã³ã¢ ã®ç·æ¬æ° TMAX_CORE_INTNO (8æ¬åºå®)ã¨ãå²è¾¼ã¿
|
---|
192 | ã³ã³ããã¼ã©ç®¡çä¸ã®ç·æ¬æ° TMAX_ICU_INTNO ã¨ã®åè¨ã)
|
---|
193 | TMAX_CORE_EXCNO : MIPS3ã³ã¢ç®¡çä¸ã®ãCPUä¾å¤ã®ç·æ¬æ°ï¼32æ¬åºå®ï¼
|
---|
194 | ã§ããã
|
---|
195 | (mips3.h, cpu_config.h, pic_icu.h, vr4131_icu.h)
|
---|
196 |
|
---|
197 | ãã³ãã©æ¬ä¼¼ãã¯ã¿ãã¼ãã«ã«ã¯ãåæå¤ã¨ãã¦ããããã¯ç¨ã«cpu_experr颿°
|
---|
198 | ãç»é²ããã¦ãããããã¯ã弿°ã¨ãã¦ãå²è¾¼ã¿ã»CPUä¾å¤ã»TLB, XTLBä¸ä¸è´çº
|
---|
199 | çæã®ã¹ã¿ãã¯ãã¤ã³ã¿ã®å¤ãã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã®å¤ãåå ã¬ã¸ã¹ã¿ã®å¤ãæ
|
---|
200 | ã¤é¢æ°ã§ããããããã®å¤ããã°åºåç¨ã®ãã¼ãã«æ¸ãåºã颿°ã§ããã
|
---|
201 | (cpu_config.c)
|
---|
202 |
|
---|
203 | 以ä¸ã§ã¯ã2.3ã2.4ã§ã¯å²è¾¼ã¿ã«ã¤ãã¦èª¬æãã2.5ã§ã¯CPUä¾å¤ã«ã¤ãã¦èª¬æã
|
---|
204 | ããã
|
---|
205 |
|
---|
206 | ï¼MIPS3ã³ã¢ã¯ãå²è¾¼ã¿ã³ã³ããã¼ã©ãå
|
---|
207 | èµãã¦ããªããããåã¿ã¼ã²ããã«ãã£
|
---|
208 | ã¦å²è¾¼ã¿å¦çãç°ãªããããã§ãä»åå©ç¨ããã¿ã¼ã²ãã以å¤ã«ç§»æ¤ããããã®
|
---|
209 | å²è¾¼ã¿å¦çã«é¢ããã¤ã³ã¿ãã§ã¼ã¹æ
|
---|
210 | å ±ã¯ããã®ææ¸ã®æå¾ã«ã¾ã¨ãã¦è¨è¼ãã¦
|
---|
211 | ããã®ã§ãåç
|
---|
212 | §ã®ãã¨ãï¼
|
---|
213 |
|
---|
214 | 2.3 å²è¾¼ã¿ç®¡çæ©è½
|
---|
215 |
|
---|
216 | 2.3.1 å²è¾¼ã¿ã³ã³ããã¼ã©ICUã¨CPUã¨ã®æ¥ç¶
|
---|
217 |
|
---|
218 | MIPS3ã³ã¢ã¯ãå²è¾¼ã¿ã³ã³ããã¼ã©ãå
|
---|
219 | èµãã¦ããªããããå¥ã«è¨ããå¿
|
---|
220 | è¦ãããã
|
---|
221 | ãã®å²è¾¼ã¿ã³ã³ããã¼ã©ã¨ã®æ¥ç¶ç¶æ³ã¨ãå®ç¾©ããããã«ãINIT_CORE_IPM ãå®
|
---|
222 | 義ããããã®å¤ã¯ãmips3.hã§å®ç¾©ãã¦ããCause_Int(0:4)ãã¯ããå©ç¨ãã¦å®ç¾©
|
---|
223 | ããã
|
---|
224 | (ãªãããã®ãã¯ãã¯ãæçµçã«ã¯CP0ã®åå ã¬ã¸ã¹ã¿ã®ããããç´æ¥å®ç¾©ãã¦ããã)
|
---|
225 | (sys_config.h)
|
---|
226 |
|
---|
227 | (a) VR5500
|
---|
228 | VR5500ã¯ãå²è¾¼ã¿ã³ã³ããã¼ã©ãå
|
---|
229 | èµãã¦ããªãããã«ãã¿ã¼ã²ãããã¼ãä¸ã«
|
---|
230 | å²è¾¼ã¿ã³ã³ããã¼ã©ãè¨ãã¦ããããã®å²è¾¼ã¿ã³ã³ããã¼ã©ã¨ã¯ãå¤é¨å²è¾¼ã¿
|
---|
231 | Int(0:1)ã®ï¼æ¬ã§æ¥ç¶ããã¦ããã
|
---|
232 | INIT_CORE_IPM = ( Cause_Int0 | Cause_Int0 )
|
---|
233 |
|
---|
234 | (b) VR4131
|
---|
235 | VR4131ã¯ãå²è¾¼ã¿ã³ã³ããã¼ã©ãå
|
---|
236 | èµãã¦ããããã®å²è¾¼ã¿ã³ã³ããã¼ã©ã¨ã¯ã
|
---|
237 | å¤é¨å²è¾¼ã¿Int(0:2)ã®ï¼æ¬ã§æ¥ç¶ããã¦ããã
|
---|
238 | ï¼ãã¼ãã¦ã§ã¢ç·¨p196åç
|
---|
239 | §ï¼
|
---|
240 | INIT_CORE_IPM = ( Cause_Int0 | Cause_Int1 | Cause_Int2 )
|
---|
241 |
|
---|
242 | 2.3.2 å²è¾¼ã¿ãã³ãã©
|
---|
243 |
|
---|
244 | å²è¾¼ã¿ãã³ãã©ã¯ãä¸è¨ã®æ¬ä¼¼ãã¯ã¿ãã¼ãã«ã«ç»é²ããã¦å©ç¨ãããã¨ã«ãªãã
|
---|
245 | ãã®ã¨ãã®ããã¼ãã«ãå¼ãããã®å¼æ°ã§ããçªå·ããå²è¾¼ã¿è¦å çªå·ãã¨å¼ã¶ã
|
---|
246 |
|
---|
247 | 0 ã 7ã¯ãMIPS3ã³ã¢ã®åå²è¾¼ã¿è¦å ã«å¯¾å¿ãã¦ãããå
|
---|
248 | ±éé¨ã«ãã㦠INTNO_IP0
|
---|
249 | ã INTNO_IP7 ã¨ãã¦å®ç¾©ãã¦ããã
|
---|
250 | (mips3.h)
|
---|
251 |
|
---|
252 | ã¾ãã8çªä»¥éããã·ã¹ãã ä¾åé¨ã§ä»¥ä¸ã®ããã«å®ç¾©ãã¦ããã
|
---|
253 |
|
---|
254 | (a) VR5500
|
---|
255 | å²è¾¼ã¿è¦å ï½ å²è¾¼ã¿è¦å çªå· ï½ ãã¯ãå
|
---|
256 | ââââââââââââââââââââââââââââ
|
---|
257 | ã¿ã¤ãï¼ ï½ ï¼ ï½ INTNO_TIMER0
|
---|
258 | ââââââââââââââââââââââââââââ
|
---|
259 | ã·ãªã¢ã«ï¼ ï½ ï¼ ï½ INTNO_SERIAL0
|
---|
260 | ââââââââââââââââââââââââââââ
|
---|
261 | GBUS-INT0- ï½ ï¼ï¼ ï½ INTNO_GBUS
|
---|
262 | ââââââââââââââââââââââââââââ
|
---|
263 | BUS ERROR ï½ ï¼ï¼ ï½ INTNO_BUS_ERR
|
---|
264 | ââââââââââââââââââââââââââââ
|
---|
265 | ã¿ã¤ãï¼ ï½ ï¼ï¼ ï½ INTNO_TIMER1
|
---|
266 | ââââââââââââââââââââââââââââ
|
---|
267 | ã·ãªã¢ã«ï¼ ï½ ï¼ï¼ ï½ INTNO_SERIAL1
|
---|
268 | ââââââââââââââââââââââââââââ
|
---|
269 | ãã©ã¬ã« ï½ ï¼ï¼ ï½ INTNO_PARALEL
|
---|
270 | ââââââââââââââââââââââââââââ
|
---|
271 | DMAC INTREQ- ï½ ï¼ï¼ ï½ INTNO_DMAC
|
---|
272 |
|
---|
273 | (pic_icu.h)
|
---|
274 |
|
---|
275 | (b) VR4131
|
---|
276 | å²è¾¼ã¿è¦å ï½ å²è¾¼ã¿è¦å çªå· ï½ ãã¯ãå
|
---|
277 | ââââââââââââââââââââââââââââââ
|
---|
278 | ããããª ï½ ï¼ ï½ INTNO_BAT
|
---|
279 | ââââââââââââââââââââââââââââââ
|
---|
280 | ãã¯ã¼ã¹ã¤ãã ï½ ï¼ ï½ INTNO_POWER
|
---|
281 | ââââââââââââââââââââââââââââââ
|
---|
282 | RTCLï½ï½ï½ï¼ ï½ ï¼ï¼ ï½ INTNO_RTCL1
|
---|
283 | ââââââââââââââââââââââââââââââ
|
---|
284 | ElipsedTime ã¿ã¤ã ï½ ï¼ï¼ ï½ INTNO_ETIME
|
---|
285 | ââââââââââââââââââââââââââââââ
|
---|
286 | GIU ï½ ï¼ï¼ ï½ INTNO_GIU
|
---|
287 | ââââââââââââââââââââââââââââââ
|
---|
288 | SIU ï½ ï¼ï¼ ï½ INTNO_SIU
|
---|
289 | ââââââââââââââââââââââââââââââ
|
---|
290 | ã½ããã¦ã§ã¢ ï½ ï¼ï¼ ï½ INTNO_SOFTINT
|
---|
291 | ââââââââââââââââââââââââââââââ
|
---|
292 | CLKRUN ï½ ï¼ï¼ ï½ INTNO_CLKRUN
|
---|
293 | ââââââââââââââââââââââââââââââ
|
---|
294 | RTCLï½ï½ï½ï¼ ï½ ï¼ï¼ ï½ INTNO_RTCL2
|
---|
295 | ââââââââââââââââââââââââââââââ
|
---|
296 | LED ï½ ï¼ï¼ ï½ INTNO_LED
|
---|
297 | ââââââââââââââââââââââââââââââ
|
---|
298 | TClockã«ã¦ã³ã¿ ï½ ï¼ï¼ ï½ INTNO_TCLK
|
---|
299 | ââââââââââââââââââââââââââââââ
|
---|
300 | FIR ï½ ï¼ï¼ ï½ INTNO_FIR
|
---|
301 | ââââââââââââââââââââââââââââââ
|
---|
302 | DSIU ï½ ï¼ï¼ ï½ INTNO_DSIU
|
---|
303 | ââââââââââââââââââââââââââââââ
|
---|
304 | PCI ï½ ï¼ï¼ ï½ INTNO_PCI
|
---|
305 | ââââââââââââââââââââââââââââââ
|
---|
306 | SCU ï½ ï¼ï¼ ï½ INTNO_SCU
|
---|
307 | ââââââââââââââââââââââââââââââ
|
---|
308 | CSI ï½ ï¼ï¼ ï½ INTNO_CSI
|
---|
309 | ââââââââââââââââââââââââââââââ
|
---|
310 | BCU ï½ ï¼ï¼ ï½ INTNO_BCU
|
---|
311 |
|
---|
312 | (vr4131_icu.h)
|
---|
313 |
|
---|
314 | ä»åã®ã¿ã¼ã²ããã«ããã¦ã¯ãã«ã¼ãã«ã§ã¯ã以ä¸ã®å²è¾¼ã¿è¦å ã®ä¸ããä¸è¨ã
|
---|
315 | å©ç¨ãã¦ããã
|
---|
316 |
|
---|
317 | (a) VR5500
|
---|
318 | ã¿ã¤ãï¼ãã·ãªã¢ã«ï¼ï¼ãã·ãªã¢ã«ï¼ï¼
|
---|
319 |
|
---|
320 | (b) VR4131
|
---|
321 | TClockã«ã¦ã³ã¿ãDSIU
|
---|
322 |
|
---|
323 | 2.3.3 å²è¾¼ã¿ãã¹ã¯ï¼å²è¾¼ã¿åªå
|
---|
324 | 度å¶å¾¡
|
---|
325 |
|
---|
326 | å²è¾¼ã¿ãã¹ã¯ï¼å²è¾¼ã¿åªå
|
---|
327 | 度å¶å¾¡ã®ããã®ãå®ç¾©ã»APIã¯ä»¥ä¸ã®éãã§ããã
|
---|
328 |
|
---|
329 | (1)IPMå
|
---|
330 | CPUã³ã¢ã¨å²è¾¼ã¿ã³ã³ããã¼ã©ã¨ãå
|
---|
331 | ¨ã¦ã¾ã¨ãããå²è¾¼ã¿ãã¹ã¯ãæ±ãããã®åã§
|
---|
332 | ãããCORE_IPMåcoreã¨ICU_IPMåicuã¨ãããªãæ§é ä½ã¨ãã¦å®ç¾©ãã¦ããã
|
---|
333 | (cpu_defs.h)
|
---|
334 |
|
---|
335 | CORE_IPMåã¯ãã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã«æ¸è¾¼ãå¤ãä¿æãããããUINTåã¨ãã¦å®
|
---|
336 | 義ãã¦ãããã¾ããICU_IPMåã¯ãããããã«ã¿ã¼ã²ãããã¼ãã«ã¤ãã¦ä¸è¨ã®
|
---|
337 | ããã«å®ç¾©ãã¦ããã
|
---|
338 |
|
---|
339 | (a) VR5500
|
---|
340 | VR5500ã¯å²è¾¼ã¿ã³ã³ããã¼ã©ãå
|
---|
341 | èµãã¦ããªããããã¿ã¼ã²ãããã¼ãä¸ã«å²
|
---|
342 | è¾¼ã¿ã³ã³ããã¼ã©ãæã£ã¦ããããã®å²è¾¼ã¿ã³ã³ããã¼ã©ã¯ãï¼ãã¤ãÃï¼å
|
---|
343 | ã®å²è¾¼ã¿ãã¹ã¯ãæã£ã¦ããã®ã§ãICU_IPMåã¯
|
---|
344 | { int0m, int1m } = { UBå, UBå }
|
---|
345 | ã¨ãã¦å®ç¾©ãã¦ããã
|
---|
346 |
|
---|
347 | (b) VR4131
|
---|
348 | VR4131ã¯å²è¾¼ã¿ã³ã³ããã¼ã©ãå
|
---|
349 | èµãã¦ããããã®å
|
---|
350 | èµå²è¾¼ã¿ã³ã³ããã¼ã©ã¯ã
|
---|
351 | ï¼ãã¤ãÃï¼åã®å²è¾¼ã¿ãã¹ã¯(MSYSINT1REG, MSYSINTREG2REGã¬ã¸ã¹ã¿)ãæã£
|
---|
352 | ã¦ããã®ã§ãICU_IPMåã¯
|
---|
353 | { msysint1, msysint2 } = { UHå, UHå }
|
---|
354 | ã¨ãã¦å®ç¾©ãã¦ããã
|
---|
355 |
|
---|
356 | (cpu_defs.h, sys_defs.h)
|
---|
357 |
|
---|
358 | ä»åã®å®è£
|
---|
359 | ã§ã¯ãICU_IPM åã®åæå¤ã¨ãã¦ä¸è¨ã®ããã«ãã¦ããã
|
---|
360 |
|
---|
361 | (a) VR5500
|
---|
362 | ã¿ã¤ãï¼ã®ã¿ã許å¯ãã¦ããã
|
---|
363 |
|
---|
364 | (b) VR4131
|
---|
365 | ããããªã®ã¿ã許å¯ãã¦ããã
|
---|
366 |
|
---|
367 | (sys_config.h)
|
---|
368 |
|
---|
369 | ï¼coreã®å¤ã¯ãã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã«æ¸è¾¼ããIM(0:7)ã®é¨åã®ã¿ãä¿æãã
|
---|
370 | ãã¨ãä»ã®ããããæä½ããå ´åã®åä½ã¯ãä¿è¨¼ããªããï¼
|
---|
371 |
|
---|
372 | (2)all_set_ilv å²è¾¼ã¿ã¬ãã«ã®è¨å®
|
---|
373 |
|
---|
374 | ãCè¨èªAPIã
|
---|
375 | all_set_ilv(INTNO intno, IPM *ipm)
|
---|
376 |
|
---|
377 | ããã©ã¡ã¼ã¿ã
|
---|
378 | INTNO intno å²è¾¼ã¿è¦å çªå·
|
---|
379 | IPM ipm å²è¾¼ã¿ãã¹ã¯
|
---|
380 |
|
---|
381 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
382 | ãªã
|
---|
383 |
|
---|
384 | ãæ©è½ã
|
---|
385 | MIPS3ã³ã¢ããã³å²ãè¾¼ã¿ã³ã³ããã¼ã©ã«é¢ãããå²è¾¼ã¿ãã³ãã©æ¬ä¼¼ãã¯ã¿ãã¼
|
---|
386 | ãã«ï¼int_tableãªãã³ã«ãicu_intmask_tableï¼ã«ãå²è¾¼ã¿ãã¹ã¯ãè¨å®ããã
|
---|
387 | (cpu_config.h)
|
---|
388 |
|
---|
389 | ãªããã¿ã¼ã²ãããã¼ãä¸ã®å²è¾¼ã¿ã³ã³ããã¼ã©ã«ãããããä»åå®è£
|
---|
390 | ãè¡ã£ã
|
---|
391 | ã¿ã¼ã²ãããã¼ãã®å²è¾¼ã¿ã³ã³ããã¼ã©ã§ã¯ä¸¡æ¹ã¨ãå²è¾¼ã¿åªå
|
---|
392 | 度å¶å¾¡ãè¡ã£ã¦
|
---|
393 | ããªãããã®ããã«ãå²è¾¼ã¿åªå
|
---|
394 | 度å¦çãå²è¾¼ã¿ãã¹ã¯ã®è¨å®ã§è¡ãå¿
|
---|
395 | è¦ãããã
|
---|
396 |
|
---|
397 | ãã®æãå²è¾¼ã¿ãã¹ã¯ãè¨å®ããã¨ãã¯ãIPMåæ§é ä½ã®è¦ç´ ã§ããCORE_IPMå
|
---|
398 | coreã¯ããã®ã¿ã¼ã²ãããã¼ãã®ãã¼ãã¦ã§ã¢æ§æãåæ ãã¦ãããã®ã§ããã®
|
---|
399 | ã§ãååã¨ãã¦å¤æ´ããªããã¨ã¨ãããå²è¾¼ã¿ã¬ãã«ã®è¨å®ã¯ãæ¥ç¶ããã¦ãã
|
---|
400 | å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ã夿´ãããã¨ã§å¯¾å¿ãããã¨ã¨ããã
|
---|
401 |
|
---|
402 | ä»åã®å®è£
|
---|
403 | ã«ããããåªå
|
---|
404 | 度ã¯ä»¥ä¸ã®éãã§ããã
|
---|
405 | (a) VR5500
|
---|
406 | åªå
|
---|
407 | 度 : (ä½) ã·ãªã¢ã«ï¼ -> ã·ãªã¢ã«ï¼ -> ã¿ã¤ãï¼ (é«)
|
---|
408 | (rte-vr5500-cb.h)
|
---|
409 | (b) VR4131
|
---|
410 | åªå
|
---|
411 | 度 : (ä½) DSIU -> TClockã«ã¦ã³ã¿ -> ããããªæ®éä¸è¶³æ¤ç¥ (é«)
|
---|
412 | (kz-vr4131pci-01.h)
|
---|
413 |
|
---|
414 | 2.4 chg_ipmã®ãµãã¼ãã«ã¤ãã¦
|
---|
415 |
|
---|
416 | chg_ipm ããµãã¼ãããããã«ãå²è¾¼ã¿ãã³ãã©ã®åºå
|
---|
417 | ¥å£å¦çãªã©ã«ãªã¼ããã
|
---|
418 | ããçãã¦ãããããã§ãSUPPORT_CHG_IPM ã¨ãããã¯ãã«ããããããã®ãµã¼
|
---|
419 | ãã¹ã³ã¼ã«ããµãã¼ããããã©ãããåãæ¿ããããããã«ãã¦ããã
|
---|
420 | (SUPPORT_CHG_IPM ã¯ãcpu_config.h ã®ä¸ã§ #define ããã¦ããã)
|
---|
421 |
|
---|
422 | MIPS3ã¿ã¼ã²ããä¾åã®å²è¾¼ã¿ãã¹ã¯ã®å¤æ´ã»åç
|
---|
423 | §ã®ããã®ãµã¼ãã¹ã³ã¼ã«ã®ä»æ§
|
---|
424 | ã¯æ¬¡ã®éãã
|
---|
425 |
|
---|
426 | (1) chg_ipm å²è¾¼ã¿ãã¹ã¯ã®å¤æ´
|
---|
427 |
|
---|
428 | ãCè¨èªAPIã
|
---|
429 | ER ercd = chg_ipm(IPM ipm);
|
---|
430 |
|
---|
431 | ããã©ã¡ã¼ã¿ã
|
---|
432 | IPM ipm è¨å®ãã¹ã IPM ã®å¤
|
---|
433 |
|
---|
434 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
435 | ER ercd ã¨ã©ã¼ã³ã¼ã
|
---|
436 |
|
---|
437 | ãã¨ã©ã¼ã³ã¼ãã
|
---|
438 | E_CTX ã³ã³ããã¹ãã¨ã©ã¼
|
---|
439 | E_PAR ãã©ã¡ã¼ã¿ã¨ã©ã¼(ipm ã䏿£)
|
---|
440 |
|
---|
441 | ãæ©è½ã
|
---|
442 |
|
---|
443 | å²è¾¼ã¿ãã¹ã¯ã ipm ã§æå®ãããå¤ã«è¨å®ãããæå®ããå¤ããMIPS3ã³ã¢é¨å
|
---|
444 | ã«ã¤ãã¦ã¯0ãMAX_IPMã®ç¯å²å
|
---|
445 | ã«ãå²è¾¼ã¿ã³ã³ããã¼ã©é¨åã«ã¤ãã¦ã¯å²è¾¼ã¿
|
---|
446 | ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ã®ç¯å²å
|
---|
447 | ã«å
|
---|
448 | ¥ã£ã¦ããªãå ´åã«ãE_PARã¨ã©ã¼ãè¿
|
---|
449 | ããã¾ããè¨å®ããIPMã®å¤ã¯ããã£ã¹ãããå¾ãå¼ãç¶ãããã
|
---|
450 | ããã§ãMAX_IPMã¯ãMIPS3ã³ã¢ã«è¨å®ã§ããå²è¾¼ã¿ãã¹ã¯ã®æå¤§ã®ããããã¿ã¼
|
---|
451 | ã³ã§ããã
|
---|
452 |
|
---|
453 | ãã®ãµã¼ãã¹ã³ã¼ã«ã¯ãã¿ã¹ã¯ã³ã³ããã¹ãã§ CPUããã¯è§£é¤ç¶æ
|
---|
454 | ã®æã®ã¿å¼
|
---|
455 | ã³åºããã¨ãã§ãããéã¿ã¹ã¯ã³ã³ããã¹ãã CPUããã¯ç¶æ
|
---|
456 | ã§å¼ã³åºããå ´
|
---|
457 | åã«ã¯ãE_CTXã¨ã©ã¼ã¨ãªãã
|
---|
458 |
|
---|
459 | (2) get_ipm å²è¾¼ã¿ãã¹ã¯ã®åç
|
---|
460 | §
|
---|
461 |
|
---|
462 | ãCè¨èªAPIã
|
---|
463 | ER ercd = get_ipm(IPM *p_ipm);
|
---|
464 |
|
---|
465 | ããã©ã¡ã¼ã¿ã
|
---|
466 | ãªã
|
---|
467 |
|
---|
468 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
469 | ER ercd ã¨ã©ã¼ã³ã¼ã
|
---|
470 | IPM ipm ç¾å¨ã® IPM ã®å¤
|
---|
471 |
|
---|
472 | ãã¨ã©ã¼ã³ã¼ãã
|
---|
473 | E_CTX ã³ã³ããã¹ãã¨ã©ã¼
|
---|
474 |
|
---|
475 | ãæ©è½ã
|
---|
476 |
|
---|
477 | ç¾å¨ã® å²è¾¼ã¿ãã¹ã¯ã®å¤ãèªã¿åºããipm ã«è¿ãã
|
---|
478 |
|
---|
479 | ãã®ãµã¼ãã¹ã³ã¼ã«ã¯ãã¿ã¹ã¯ã³ã³ããã¹ãã§ CPUããã¯è§£é¤ç¶æ
|
---|
480 | ã®æã®ã¿å¼
|
---|
481 | ã³åºããã¨ãã§ãããéã¿ã¹ã¯ã³ã³ããã¹ãã CPUããã¯ç¶æ
|
---|
482 | ã§å¼ã³åºããå ´
|
---|
483 | åã«ã¯ãE_CTXã¨ã©ã¼ã¨ãªãã
|
---|
484 |
|
---|
485 | ãªãããã¬ã¼ã¹ãã°æ©è½ã«é¢ãã¦ãchg_ipmã«é¢ããé¨åã¯ã·ã¹ãã ä¾åé¨ã«ã¦
|
---|
486 | å®ç¾©ãè¡ã£ã¦ããã
|
---|
487 | (sys_tool_config.h)
|
---|
488 |
|
---|
489 | 2.5 CPUä¾å¤ç®¡çæ©è½ã¨CPUä¾å¤ãã³ãã©
|
---|
490 |
|
---|
491 | DEF_EXC ã§æå®ããCPUä¾å¤è¦å çªå·(excno)ã¯ãMIPS3 ã§ã®æ¬ä¼¼ãã¯ã¿ãã¼ãã«
|
---|
492 | ã®ãã¯ã¿çªå·ã表ãããã®ãã¼ã¿å(EXCNO)㯠UINTåã«å®ç¾©ããã¦ãããä¾å¤
|
---|
493 | è¦å çªå·ã¯MIPS3ã®ä¾å¤ã³ã¼ãã¨1対1ã«å¯¾å¿ãã¦ããã
|
---|
494 |
|
---|
495 | DEF_EXC ã§ãä¾å¤è¦å çªå·ã¨ãã¦æå¹ã§ãªãå¤ããCPUä¾å¤ã«å¯¾å¿ããªãçªå·ã
|
---|
496 | æå®ããå ´åã®åä½ã¯ä¿è¨¼ãããªãã
|
---|
497 |
|
---|
498 | (1)弿°p_excinf
|
---|
499 | CPUä¾å¤ãã³ãã©ã«æ¸¡ãããp_excinfã¯ãCPUä¾å¤çºçæã®ã³ã³ããã¹ããä¿å
|
---|
500 | ããã¹ã¿ãã¯ã¸ã®ãã¤ã³ã¿ã渡ããããã¹ã¿ãã¯ã®æ§é ã以ä¸ã«ç¤ºãã
|
---|
501 |
|
---|
502 | ----------------------
|
---|
503 | | sp (r29) | <-- p_excinf
|
---|
504 | ----------------------
|
---|
505 | | at (r1) |
|
---|
506 | ----------------------
|
---|
507 | | v0 (r2) |
|
---|
508 | ----------------------
|
---|
509 | | v1 (r3) |
|
---|
510 | ----------------------
|
---|
511 | | a0 (r4) |
|
---|
512 | ----------------------
|
---|
513 | | a1 (r5) |
|
---|
514 | ----------------------
|
---|
515 | | a2 (r6) |
|
---|
516 | ----------------------
|
---|
517 | | a3 (r7) |
|
---|
518 | ----------------------
|
---|
519 | | t0 (r8) |
|
---|
520 | ----------------------
|
---|
521 | | t1 (r9) |
|
---|
522 | ----------------------
|
---|
523 | | t2 (r10) |
|
---|
524 | ----------------------
|
---|
525 | | t3 (r11) |
|
---|
526 | ----------------------
|
---|
527 | | t4 (r12) |
|
---|
528 | ----------------------
|
---|
529 | | t5 (r13) |
|
---|
530 | ----------------------
|
---|
531 | | t6 (r14) |
|
---|
532 | ----------------------
|
---|
533 | | t7 (r15) |
|
---|
534 | ----------------------
|
---|
535 | | t8 (r24) |
|
---|
536 | ----------------------
|
---|
537 | | t9 (r25) |
|
---|
538 | ----------------------
|
---|
539 | | gp (r28) |
|
---|
540 | ----------------------
|
---|
541 | | fp (r30) |
|
---|
542 | ----------------------
|
---|
543 | | ra (r31) |
|
---|
544 | ----------------------
|
---|
545 | | PC (EPC;CP0_r14) |
|
---|
546 | ----------------------
|
---|
547 | | SR (Status;CP0_r12) |
|
---|
548 | ----------------------
|
---|
549 | | HI |
|
---|
550 | ----------------------
|
---|
551 | | LO |
|
---|
552 | ----------------------
|
---|
553 |
|
---|
554 | sp : Stack Pointer
|
---|
555 | gp : Global Pointer
|
---|
556 | fp : Frame Pointer
|
---|
557 | ra : Return Address
|
---|
558 | PC : Program Counter
|
---|
559 | SR : Status Register
|
---|
560 |
|
---|
561 | ã¾ããCPUä¾å¤çºçæã®EPCã®å¤ã¯ãä¾å¤çºçå½ä»¤ãåå²ã¹ãããã«ããå ´åã¯ã
|
---|
562 | ç´åã®åå²ã»ã¸ã£ã³ãå½ä»¤ãããã
|
---|
563 | ï¼ããªãã¡ã対象å½ä»¤ã®ã¢ãã¬ã¹-4ãæ¸ãè¾¼ã¾ãããï¼
|
---|
564 |
|
---|
565 | 2.6 HI, LO ã¬ã¸ã¹ã¿
|
---|
566 |
|
---|
567 | MIPS3ã§ã¯ãä¹é¤ç®ã¬ã¸ã¹ã¿HI, LOããµãã¼ããã¦ãããããã§ãä»åã®å®è£
|
---|
568 | ã«ã
|
---|
569 | ãã¦ã¯ãå²è¾¼ã¿ãã³ãã©ã®åºå
|
---|
570 | ¥å£å¦çã§ãã¹ã¿ãã¯ã¸ä¿åãã¦ããã
|
---|
571 | ã¿ã¹ã¯ã³ã³ããã¹ãå
|
---|
572 | ã§ã®ãèªãã®ãã£ã¹ãããå¼ã³åºãã®å ´åã¯ã颿°å¼ã³åº
|
---|
573 | ãã§ããããã®å¼ã³åºããã¾ããã£ã¦ãã®ã¬ã¸ã¹ã¿ãå©ç¨ãããã¨ã¯ç¡ãã®ã§ã
|
---|
574 | ä¿åãã¦ããªãã
|
---|
575 | (cpu_support.S)
|
---|
576 |
|
---|
577 | 2.7 ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«
|
---|
578 |
|
---|
579 | MIPS3ã¿ã¼ã²ããã§ã¯ãä¾å¤ãã¯ã¿ã®ä¸ã¤ã«ããªã»ãã並ã³ã« NMI(Non Maskable
|
---|
580 | Interrupt)ç¨ã®ãã¯ã¿ã¢ãã¬ã¹ãåãã¦ããããã®ã¢ãã¬ã¹ããã®ã¸ã£ã³ãå
|
---|
581 | ã
|
---|
582 | ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ã¨ãªã£ã¦ããã
|
---|
583 |
|
---|
584 | ãã®ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«(reset.S)ã§ã¯ã次ã®åæåå¦çãè¡ãã
|
---|
585 |
|
---|
586 | (A) ããã»ããµã®åæå
|
---|
587 |
|
---|
588 | ããã»ããµã®åæåã¯ãä¸è¨ã®ãã®ãè¡ãã
|
---|
589 | (a) CPUã¬ã¸ã¹ã¿ã®åæå
|
---|
590 | ä¹é¤ç®ã¬ã¸ã¹ã¿ãã¹ã¿ãã¯ãã¤ã³ã¿spãã°ãã¼ãã«ãã¤ã³ã¿gpãk0ã¬ã¸ã¹ã¿ãåæ
|
---|
591 | åããã
|
---|
592 |
|
---|
593 | ã¹ã¿ãã¯ãã¤ã³ã¿ã«ã¯ãã¢ãã¬ã¹ _stack_top ãè¨å®ããã_stack_top ã¯ããªã³ã«
|
---|
594 | ã¹ã¯ãªããå
|
---|
595 | ã§å®ç¾©ãããã®ã¨ãããããã§è¨å®ãããã¹ã¿ãã¯é åã¯ãéã¿ã¹ã¯
|
---|
596 | ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯é åã¨ãã¦ãå²è¾¼ã¿ãã³ãã©ãªã©ã§å©ç¨ãããã
|
---|
597 | (vrxxxxelf.ld)
|
---|
598 |
|
---|
599 | ã°ãã¼ãã«ãã¤ã³ã¿ã«ã¯ãã¢ãã¬ã¹ _gp ãè¨å®ããã_gp ã¯ããªã³ã«ã¹ã¯ãªããå
|
---|
600 |
|
---|
601 | ã§å®ç¾©ãããã®ã¨ããã
|
---|
602 | (vrxxxxelf.ld)
|
---|
603 |
|
---|
604 | k0ã¬ã¸ã¹ã¿ã«ã¯ãã«ã¼ãã«èµ·åæã¯éã¿ã¹ã¯ã³ã³ããã¹ãã§ã®å®è¡ã¨ããã®ã§ã1ã
|
---|
605 | è¨å®ããã
|
---|
606 |
|
---|
607 | (b) CP0ã¬ã¸ã¹ã¿ã®åæå
|
---|
608 | ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ãã³ã³ãã£ã°ã¬ã¸ã¹ã¿ãã¦ã©ããLoã¬ã¸ã¹ã¿ãæ¯è¼ã¬ã¸ã¹ã¿ã
|
---|
609 | åæåããã
|
---|
610 |
|
---|
611 | ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã INIT_SR ã«åæåãããINIT_SR ã¯ãsys_config.h ã§å®ç¾©
|
---|
612 | ãããã¨ãæ³å®ãã¦ããããã®ã¨ããã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿å
|
---|
613 | ã®å²è¾¼ã¿ãã¹ã¯ãè¨å®
|
---|
614 | ããããã®æãå²ãè¾¼ã¿ãã¹ã¯ã INIT_CORE_IPM (sys_config.h) ã®å¤ã«è¨å®ããã
|
---|
615 |
|
---|
616 | ã³ã³ãã£ã°ã¬ã¸ã¹ã¿ããINIT_CONFIG_MASK ã§åæåãããINIT_CONFIG_MASK ã¯ã
|
---|
617 | sys_config.h ã§å®ç¾©ãããã¨ãæ³å®ãã¦ããããã®ãã¹ã¯å¤ã¨ORæ¼ç®ãè¡ããã¨ã§ã
|
---|
618 | åæåãè¡ã£ã¦ããã
|
---|
619 |
|
---|
620 | (B) hardware_init_hook ã®å¼åºã
|
---|
621 |
|
---|
622 | hardware_init_hook ã 0 ã§ãªãå ´åã«ã¯ãhardware_init_hook ãå¼ã³åºãã
|
---|
623 | hardware_init_hook ã¯ãä¸è¬ã«ã«ã¼ãã«ãèµ·åãããåã«è¡ãå¿
|
---|
624 | è¦ãããã·ã¹ãã
|
---|
625 | ä¾åã®åæåï¼ä¾ï¼RAMã³ã³ããã¼ã©ã®åæåãªã©ï¼ãè¨è¿°ãããã®ã¨ããã
|
---|
626 | è¨è¿°å ´æã¯ãsys_support.S ãæ¨æºã¨ããã
|
---|
627 |
|
---|
628 | hardware_init_hook ãã©ãã§ãå®ç¾©ããã¦ããªãå ´åããªã³ã«ã§ãã®ã·ã³ãã«ã0
|
---|
629 | ã«å®ç¾©ãã(ãªã³ã«ã¹ã¯ãªããå
|
---|
630 | ã«è¨è¿°ãã)ã
|
---|
631 |
|
---|
632 | ãªããMIPS3ã¢ã¼ããã¯ãã£ã§ã¯ãä¸è¬ã«ä¸æ¬¡ãã£ãã·ã¥ã¨TLB (Translation
|
---|
633 | Lookaside Bufferï¼é«éå¤æç·©è¡æ©æ§)ãå
|
---|
634 | èµãã¦ããããããã»ããµãã¨ã«å¤å°ã®
|
---|
635 | éãããããããã§ããããã®åæåã¯ãhardware_init_hook å
|
---|
636 | ã«è¨è¿°ãããã¨ã
|
---|
637 | æ¨æºã¨ããã
|
---|
638 |
|
---|
639 | (C) bssã»ã¯ã·ã§ã³ã¨dataã»ã¯ã·ã§ã³ã®åæå
|
---|
640 |
|
---|
641 | bssã»ã¯ã·ã§ã³ï¼å« sbssã»ã¯ã·ã§ã³ï¼ãã¼ãã¯ãªã¢ããã
|
---|
642 |
|
---|
643 | dataã»ã¯ã·ã§ã³ï¼å« sdataã»ã¯ã·ã§ã³ï¼ãåæåãããROMå対å¿ã®ããã«ãROM
|
---|
644 | ãã RAM ã¸ã¨ãã³ãã¼ãè¡ãã
|
---|
645 |
|
---|
646 | (D) software_init_hook ã®å¼åºã
|
---|
647 |
|
---|
648 | software_init_hook ã 0 ã§ãªãå ´åã«ã¯ãsoftware_init_hook ãå¼ã³åºãã
|
---|
649 | software_init_hook ã¯ãã«ã¼ãã«ãèµ·åãããåã«è¡ãå¿
|
---|
650 | è¦ãããã½ããã¦ã§ã¢
|
---|
651 | ç°å¢(å
|
---|
652 | ·ä½çã«ã¯ãã©ã¤ãã©ãª)ä¾åã®åæåãè¡ãããã«ç¨æãã¦ããã
|
---|
653 |
|
---|
654 | software_init_hook ãã©ãã§ãå®ç¾©ããã¦ããªãå ´åããªã³ã«ã§ãã®ã·ã³ãã«ã
|
---|
655 | 0 ã«å®ç¾©ãã(ãªã³ã«ã¹ã¯ãªããå
|
---|
656 | ã«è¨è¿°ãã)ã
|
---|
657 |
|
---|
658 | (E) ã«ã¼ãã«ã®èµ·å
|
---|
659 |
|
---|
660 | kernel_start ã¸åå²ããã«ã¼ãã«ãèµ·åãããkernel_start ãããªã¿ã¼ã³ãã¦
|
---|
661 | ãããã¨ã¯æ³å®ãã¦ããªãã
|
---|
662 |
|
---|
663 | (reset.S)
|
---|
664 |
|
---|
665 | ï¼ï¼ã·ã¹ãã ä¾åé¨ã®æ©è½
|
---|
666 |
|
---|
667 | 3.1 ã·ã¹ãã ã¯ããã¯ãã©ã¤ã
|
---|
668 |
|
---|
669 | ã·ã¹ãã ã¯ããã¯ãã©ã¤ãã isig_tim ãå¼ã³åºã卿ã¯ãsys_defs.h ä¸ã®
|
---|
670 | TIC_NUME 㨠TIC_DENO ã§å®ç¾©ããã¦ãã(ããã©ã«ãã§ã¯ 1ããªç§å¨æ)ããã®å®
|
---|
671 | 義ã夿´ãããã¨ã§ãisig_tim ãå¼ã³åºã卿ã夿´ãããã¨ãã§ããããã ãã
|
---|
672 | ã¿ã¤ãã®ç²¾åº¦ãä¾çµ¦ã¯ããã¯ã«ä¾åãããããã¿ã¤ãã®ä¾çµ¦ã¯ããã¯åä½ã§ç«¯æ°ã«
|
---|
673 | ãªãå¤ãè¨å®ããå ´åã«ã¯ãisig_tim ã®å¼åºã卿ã«èª¤å·®ãçãããã¨ã«ãªãã
|
---|
674 |
|
---|
675 | ããã©ã«ãã§ã¯ãä¸è¨ã®ã¿ã¤ããå©ç¨ãã¦ããã
|
---|
676 | (a) VR5500
|
---|
677 | ã¿ã¼ã²ãããã¼ãæè¼ã®ã¿ã¤ã(uPD71054)ã®ã¿ã¤ã0 (ä¾çµ¦ã¯ãã㯠2MHz)
|
---|
678 | (b) VR4131
|
---|
679 | VR4131å
|
---|
680 | èµRTCå
|
---|
681 | TClockã«ã¦ã³ã¿ (ä¾çµ¦ã¯ãã㯠33.2MHz)
|
---|
682 |
|
---|
683 | ãªããMIPS3ã³ã¢å
|
---|
684 | é¨ã®ã¿ã¤ãã¯ãã¦ã¼ã¶ã¼ãå©ç¨ãããã¨ãã§ããã
|
---|
685 |
|
---|
686 | 3.2 æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»åç
|
---|
687 | §æ©è½
|
---|
688 |
|
---|
689 | MIPS3ã¿ã¼ã²ããä¾åé¨ã§ã¯ãæ§è½è©ä¾¡ç¨ã·ã¹ãã æå»åç
|
---|
690 | §æ©è½(vxget_tim)ããµ
|
---|
691 | ãã¼ããã¦ãããSYSUTIMåã¯UDå(64ãããã®ç¬¦å·ç¡ãæ´æ°å)ã§å®ç¾©ãã¦ããã
|
---|
692 |
|
---|
693 | æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ã®ç²¾åº¦ã¯ä¾çµ¦ã¯ããã¯åä½ã§ããããã¿ã¤ãã®ç¾å¨å¤ã
|
---|
694 | èªã¿åºãããã«ä¸æçã«ã¿ã¤ãã忢ãããå¿
|
---|
695 | è¦ããããããvxget_tim ãå¼ã¶
|
---|
696 | 度ã«ã·ã¹ãã ã¯ããã¯ãå°ãã¥ã¤é
|
---|
697 | ãããã¨ã«ãªããããã§ãSUPPORT_VXGET_TIM
|
---|
698 | ã¨ãããã¯ãã«ããããããã®ãµã¼ãã¹ã³ã¼ã«ããµãã¼ããããã©ãããåãæ¿
|
---|
699 | ããããããã«ãã¦ããã
|
---|
700 | (SUPPORT_VXGET_TIM ã¯ãsys_config.h ã®ä¸ã§ #define ããã¦ããã)
|
---|
701 |
|
---|
702 | 3.3 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ã
|
---|
703 |
|
---|
704 | (a) VR5500
|
---|
705 | ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã¯ããã¼ã䏿è¼ã®SCCï¼Serial Communication
|
---|
706 | Controlerï¼(TL16PIR552)ã®UART-CH#0ãUART-CH#1ããµãã¼ããã¦ãããã·ãªã¢ã«
|
---|
707 | ã®ãµãã¼ããããã¼ãæ°ã¯ãTNUM_PORTãã¯ãã«ã¦å®ç¾©ãããããã©ã«ãã§ã¯ã
|
---|
708 | ãã¼ãï¼ã¨ãã¼ãï¼ã®ï¼ãã¼ãããµãã¼ããã¦ããããªããã«ã¼ãã«ã®ãã°åºåç¨
|
---|
709 | ã«ã¯ãã¼ãï¼ã«ä½¿ç¨ãã¦ããã
|
---|
710 | (TNUM_PORT ã¯ãsys_config.h ã®ä¸ã§ #define ããã¦ããã)
|
---|
711 | (tl16pir552.h, tl16pir552.c)
|
---|
712 |
|
---|
713 | (b) VR4131
|
---|
714 | ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã¯ãVR4131å
|
---|
715 | èµã®DSIU(ãã£ãã°ã·ãªã¢ã«ã¤ã³ã¿
|
---|
716 | ãã§ã¼ã¹ã¦ããã)ããµãã¼ããã¦ãããããã¯ãã«ã¼ãã«ã®ãã°åºåç¨ã«ä½¿ç¨ã
|
---|
717 | ã¦ããã
|
---|
718 |
|
---|
719 | ãªããSCU(ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ã¦ããã)ã¯ããµãã¼ããã¦ããªãããããã
|
---|
720 | DSIUç¨ã®ã½ã¼ã¹ã³ã¼ãã夿´ãããã¨ã«ããã対å¿ãå¯è½ã§ããã
|
---|
721 |
|
---|
722 | (vr4131_dsiu.h, vr4131_dsiu.c)
|
---|
723 |
|
---|
724 | 3.4 ã¡ã¢ãªããã
|
---|
725 |
|
---|
726 | ã¡ã¢ãªãããã«é¢ããè¨å®ã¯ããªã³ã«ã¹ã¯ãªããã«ã¦è¡ããã³ã³ãã¤ã«æã«å©ç¨
|
---|
727 | ãããªã³ã«ã¹ã¯ãªããã«ã¤ãã¦ã¯ãMakefile.config ã«ã¦è¨å®ãè¡ãã
|
---|
728 | (vrxxxxelf.ld, Makefile.config)
|
---|
729 |
|
---|
730 | ãªããã³ã¼ãé åã 0xbfc00000 ãã¨ã0x9fc00000 ãã®ï¼é¨æ§æã«ãªã£ã¦ããã
|
---|
731 | ããã«ãã¹ã¿ã¼ãã¢ãã¬ã¹ãã0x00000000 ããã§ãªãããã«ãROMã«ç¼ãä»ãã
|
---|
732 | ã¨ããROMã¢ãã¬ã¹ã¨ã®å¯¾å¿ãåããªãããã®ããã«ãå©ç¨ããROMã©ã¤ã¿ã§ã
|
---|
733 | é©åãªãªãã»ããå¤ã®è¨å®ãããã³ãé©åãªãããã¡ã¯ãªã¢ã®è¨å®ãè¡ãå¿
|
---|
734 | è¦ã
|
---|
735 | ããã
|
---|
736 |
|
---|
737 | (a) VR5500
|
---|
738 | ã»æ ªå¼ä¼ç¤¾ãã¤ãã¹ã»ã©ã製ã®RTE-VR5500-CB(64)(CPU: VR5500)
|
---|
739 |
|
---|
740 | ä»åã®å®è£
|
---|
741 | ã«ããã¦ã¯ãã³ã¼ãé åã夿´ããå½¢ã«ãããkseg0 ã¾ã㯠kseg1 ã§
|
---|
742 | ã®åä½ã®ä¸¡æ¹ãå¯è½ã§ããã夿´ã¯ããªã³ã«ã¹ã¯ãªããå
|
---|
743 | ã§è¡ãã
|
---|
744 |
|
---|
745 | åã
|
---|
746 | ã®ã¡ã¢ãªãããã¯ä»¥ä¸éãã§ããã
|
---|
747 |
|
---|
748 | ã»kseg0é åï¼ãã£ãã·ã¥é åï¼ã®å ´å
|
---|
749 | 0x9fc00000 - 0x9fdfffff ã³ã¼ãé å (FLASH ROM 2Mbyte)
|
---|
750 | (0xa0000000 - 0xa00fffff ROMé åã®ãã©ã¼ç¨ã«ç¢ºä¿
|
---|
751 | (SRAM 1Mbyte))
|
---|
752 | 0xa8000000 - 0xabffffff ãã¼ã¿é å (DRAM 64Mbyte)
|
---|
753 | - 0xabffffff éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã¹ã¿ãã¯
|
---|
754 | 0xbfc00000 - 0xbfc007ff ä¾å¤ãã¯ã¿ãã¼ãã«ã»åæåå¦çé å
|
---|
755 | (exce_vec_map, reset ã»ã¯ã·ã§ã³ã§ä½¿ç¨)
|
---|
756 | (vr5500elf.ld)
|
---|
757 |
|
---|
758 | ã»kseg1é åï¼éãã£ãã·ã¥é åï¼ã®å ´å
|
---|
759 | (0xa0000000 - 0xa00fffff ROMé åã®ãã©ã¼ç¨ã«ç¢ºä¿
|
---|
760 | (SRAM 1Mbyte))
|
---|
761 | 0xa8000000 - 0xabffffff ãã¼ã¿é å (DRAM 64Mbyte)
|
---|
762 | - 0xabffffff éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã¹ã¿ãã¯
|
---|
763 | 0xbfc00000 - 0xbfcfffff ã³ã¼ãé å (ROM 1Mbyte)
|
---|
764 | (vr5500elf.ld)
|
---|
765 |
|
---|
766 | (b) VR4131
|
---|
767 | ã»äº¬é½ãã¤ã¯ãã³ã³ãã¥ã¼ã¿æ ªå¼ä¼ç¤¾è£½ KZ-Vr4131PCI-01 (CPU:VR4131)
|
---|
768 |
|
---|
769 | ä»åã®å®è£
|
---|
770 | ã«ããã¦ã¯ãã³ã¼ãé åã夿´ããå½¢ã«ãããkseg0 ã¾ã㯠kseg1 ã§
|
---|
771 | ã®åä½ã®ä¸¡æ¹ãå¯è½ã§ããã夿´ã¯ããªã³ã«ã¹ã¯ãªããå
|
---|
772 | ã§è¡ãã
|
---|
773 |
|
---|
774 | åã
|
---|
775 | ã®ã¡ã¢ãªãããã¯ä»¥ä¸éãã§ããã
|
---|
776 |
|
---|
777 | ã»kseg0é åï¼ãã£ãã·ã¥é åï¼ã®å ´å
|
---|
778 | 0x9c000000 - 0x9c03ffff éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã¹ã¿ãã¯
|
---|
779 | (SRAM 256kbyte)
|
---|
780 | 0x9fc00700 - 0x9fdfffff ã³ã¼ãé å (FLASH ROM 2Mbyteå¼±)
|
---|
781 | (0xa0000000 - 0xa01fffff ROMé åã®ãã©ã¼ç¨ã«ç¢ºä¿
|
---|
782 | (DRAM 2Mbyte))
|
---|
783 | 0xa0200000 - 0xa0ffffff ãã¼ã¿é å (DRAM 14Mbyte)
|
---|
784 | 0xbfc00000 - 0xbfc006ff ä¾å¤ãã¯ã¿ãã¼ãã«ã»åæåå¦çé å
|
---|
785 | (FLASH ROM 0x700byte)
|
---|
786 | (exce_vec_map, reset ã»ã¯ã·ã§ã³ã§ä½¿ç¨)
|
---|
787 | (vr4131elf.ld)
|
---|
788 |
|
---|
789 | ã»kseg1é åï¼éãã£ãã·ã¥é åï¼ã®å ´å
|
---|
790 | (0xa0000000 - 0xa01fffff ROMé åã®ãã©ã¼ç¨ã«ç¢ºä¿
|
---|
791 | (DRAM 2Mbyte))
|
---|
792 | 0xa0200000 - 0xa0ffffff ãã¼ã¿é å (DRAM 14Mbyte)
|
---|
793 | 0xac000000 - 0xac03ffff éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã¹ã¿ãã¯
|
---|
794 | (SRAM 256kbyte)
|
---|
795 | 0xbfc00000 - 0xbfdfffff ã³ã¼ãé å (FLASH ROM 2Mbyte)
|
---|
796 | (vr4131elf.ld ã«å¤æ´ãå ãããã¨ã§å¯¾å¿å¯è½)
|
---|
797 |
|
---|
798 | 3.5 CP0ãã¶ã¼ãã«ã¤ãã¦
|
---|
799 |
|
---|
800 | MIPSã§ã¯ãããã»ããµã«ãã£ã¦ã¯CP0ãã¶ã¼ããåå¨ãããã®ãããããã®ããã®
|
---|
801 | 対å¿ã¨ãã¦ãNOP_FOR_CP0_HAZARDãã¯ããå®ç¾©ãããããã¯ãcpu_support.Så
|
---|
802 | ã§
|
---|
803 | å©ç¨ãã¦ããã
|
---|
804 |
|
---|
805 | å®ç¾©æ¹æ³ã¯ãå¿
|
---|
806 | è¦ãªæ°åã ãnopã並ã¹ããã¨ã«ãªãã
|
---|
807 | (vr4131.h, vr5500.h)
|
---|
808 |
|
---|
809 | ï¼ï¼éçºç°å¢ã®æ§ç¯
|
---|
810 |
|
---|
811 | éçºç°å¢ã®æ§ç¯æ¹æ³ã«ã¤ãã¦ã¯ãGNUéçºç°å¢æ§ç¯ããã¥ã¢ã«ãåç
|
---|
812 | §ãããã¨ã
|
---|
813 | ãªããã¿ã¼ã²ããç°å¢ <TARGET> ã®å¤ã«ã¤ãã¦ã¯ã以ä¸ãåèã®ãã¨ã
|
---|
814 | éçºã«ã¯Windows2000SP4ä¸ã§Cygwinãç¨ããã
|
---|
815 |
|
---|
816 | åä½ç¢ºèªã¯ãä¸è¨ã®ãã¼ã«ã«ã¦ç¢ºèªãã¦ããããã®ãã¼ã«ãããã©ã«ãã¨ããã
|
---|
817 |
|
---|
818 | ã»GNUããé
|
---|
819 | å¸ããã¦ãããªãªã¸ãã«ã®GCCãªã©ãã½ã¼ã¹ããæ§ç¯ãããã¼ã«
|
---|
820 | åä½ç¢ºèªãè¡ã£ãã¨ãã®ãã¼ã¸ã§ã³ã¯ä»¥ä¸ã®éãã§ããã
|
---|
821 | BINUTILS : 2.13.2.1
|
---|
822 | GCC-CORE : 3.3.2
|
---|
823 | NEWLIB : 1.11.0
|
---|
824 | ï¼ãã®å ´åã®ã¿ã¼ã²ããç°å¢ <TARGET> ã«ã¯ãmipsel-nec-elf ãç¨ãããï¼
|
---|
825 |
|
---|
826 | ï¼ï¼å¶éäºé
|
---|
827 |
|
---|
828 |
|
---|
829 | ã»ããã°ã¨ã³ãã£ã¢ã³ã¯ãµãã¼ããã¦ããªãã
|
---|
830 | ï¼ãªãã«ã¨ã³ãã£ã¢ã³ã®ã¿ããµãã¼ããã¦ãããï¼
|
---|
831 | (sys_defs.h)
|
---|
832 |
|
---|
833 | ã»64bitã¢ã¼ãã¯ãµãã¼ããã¦ããªãã
|
---|
834 |
|
---|
835 | ã»VR5500å
|
---|
836 | èµæµ®åå°æ°ç¹ã¦ãããã¯ãµãã¼ããã¦ããªãã
|
---|
837 |
|
---|
838 | ã»ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ããªã³ã¯ã¹ã¯ãªããã¯ãC++ã«å¯¾å¿ãã¦ããªãã
|
---|
839 |
|
---|
840 | ï¼ï¼ãã®ä»
|
---|
841 |
|
---|
842 | 6.1 ãã£ã¬ã¯ããªã»ãã¡ã¤ã«æ§æ
|
---|
843 |
|
---|
844 | MIPS3 ã¿ã¼ã²ããä¾åé¨ã®åãã¡ã¤ã«ã®æ¦è¦ã¯æ¬¡ã®éãã
|
---|
845 |
|
---|
846 | config/mips3/
|
---|
847 | MIPS3å
|
---|
848 | ±éé¨
|
---|
849 |
|
---|
850 | Makefile.config Makefileã®MIPS3ã¿ã¼ã²ããä¾åã®å®ç¾©
|
---|
851 | cpu_defs.h ããã»ããµä¾åé¨ã®ã¢ããªã±ã¼ã·ã§ã³ç¨å®ç¾©
|
---|
852 | cpu_config.h ããã»ããµä¾åé¨ã®æ§æå®ç¾©
|
---|
853 | cpu_config.c ããã»ããµä¾åé¨ã®é¢æ°
|
---|
854 | cpu_support.S ããã»ããµä¾åé¨ã®ãµãã«ã¼ãã³
|
---|
855 | cpu_context.h ã³ã³ããã¹ãæä½
|
---|
856 | cpu_rename.def ã«ã¼ãã«ã®å
|
---|
857 | é¨èå¥åã®ãªãã¼ã å®ç¾©
|
---|
858 | cpu_rename.h ã«ã¼ãã«ã®å
|
---|
859 | é¨èå¥åã®ãªãã¼ã
|
---|
860 | cpu_unrename.h ã«ã¼ãã«ã®å
|
---|
861 | é¨èå¥åã®ãªãã¼ã è§£é¤
|
---|
862 | tool_defs.h éçºç°å¢ä¾åé¨ã®ã¢ããªã±ã¼ã·ã§ã³ç¨å®ç¾©
|
---|
863 | ï¼GNUéçºç°å¢ç¨ï¼
|
---|
864 | tool_config.h éçºç°å¢ä¾åé¨ã®æ§æå®ç¾©ï¼GNUéçºç°å¢ç¨ï¼
|
---|
865 | makeoffset.c offset.h çæãµãã¼ãããã°ã©ã
|
---|
866 | cpu_insn.h ä½ã¬ãã«ã®ããã»ããµæä½ã«ã¼ãã³
|
---|
867 | exception_vector.S ä¾å¤ãã¯ã¿ã¢ãã¬ã¹ã§ã®åå²å¦ç
|
---|
868 | start.S ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«
|
---|
869 | mips3.h MIPS3ã®ã¬ã¸ã¹ã¿åãªã©ã®å®ç¾©
|
---|
870 | util.h ãããçªå·ãªã©ã®å®ç¾©
|
---|
871 |
|
---|
872 | config/mips3/vr5500/
|
---|
873 | VR5500(NEC)対å¿ã·ã¹ãã ä¾åé¨
|
---|
874 | (æ ªå¼ä¼ç¤¾ãã¤ãã¹ã»ã©ã製 RTE-VR5500-CB(64) 対å¿)
|
---|
875 |
|
---|
876 | Makefile.config Makefileã®RTE-VR5500-CB(64)ã·ã¹ãã ä¾åå®ç¾©
|
---|
877 | sys_defs.h ã·ã¹ãã ä¾åé¨ã®ã¢ããªã±ã¼ã·ã§ã³ç¨å®ç¾©
|
---|
878 | sys_config.h ã·ã¹ãã ä¾åé¨ã®æ§æå®ç¾©
|
---|
879 | sys_config.c ã·ã¹ãã ä¾åé¨ã®é¢æ°
|
---|
880 | sys_support.S ã·ã¹ãã ä¾åé¨ã®ãµãã«ã¼ãã³
|
---|
881 | sys_rename.def ã«ã¼ãã«ã®å
|
---|
882 | é¨èå¥åã®ãªãã¼ã å®ç¾©
|
---|
883 | sys_rename.h ã«ã¼ãã«ã®å
|
---|
884 | é¨èå¥åã®ãªãã¼ã
|
---|
885 | sys_unrename.h ã«ã¼ãã«ã®å
|
---|
886 | é¨èå¥åã®ãªãã¼ã è§£é¤
|
---|
887 | sys_tool_config.h éçºç°å¢ä¾åé¨ã®ã·ã¹ãã ä¾å鍿§æå®ç¾©
|
---|
888 | ï¼GNUéçºç°å¢ç¨ï¼
|
---|
889 | hw_timer.h ã¿ã¤ãæä½ã«ã¼ãã³
|
---|
890 | hw_serial.h SIOãã©ã¤ã
|
---|
891 | hw_serial.cfg SIOãã©ã¤ãã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«
|
---|
892 | vr5500.h VR5500ã®ãã¼ãã¦ã§ã¢å®ç¾©
|
---|
893 | pic_icu.h å²è¾¼ã¿ã³ã³ããã¼ã©é¢ä¿ã®å®ç¾©
|
---|
894 | rte_vr5500_cb.h RTE-VR5500-CB(64)ãã¼ãã®ãã¼ãã¦ã§ã¢å®ç¾©
|
---|
895 | upd71054.h NEC社μPD71054ç¨ ã¿ã¤ããã©ã¤ãé¢é£ã®å®ç¾©
|
---|
896 | (ã¿ã¼ã²ãããã¼ãRTE-VR5500-CBæè¼ã®ã¿ã¤ã)
|
---|
897 | vr5500_elf.ld ãªã³ã«ã¹ã¯ãªãã(ROM åç¨)
|
---|
898 | vr5500_elf_ram.ld ãªã³ã«ã¹ã¯ãªãã(RAM 転éç¨)
|
---|
899 |
|
---|
900 | config/mips3/vr4131/
|
---|
901 | VR4131(NEC)対å¿ã·ã¹ãã ä¾åé¨
|
---|
902 | (京é½ãã¤ã¯ãã³ã³ãã¥ã¼ã¿æ ªå¼ä¼ç¤¾è£½ KZ-Vr4131PCI-01 対å¿)
|
---|
903 |
|
---|
904 | Makefile.config Makefileã®KZ-Vr4131PCI-01ã·ã¹ãã ä¾åå®ç¾©
|
---|
905 | sys_defs.h ã·ã¹ãã ä¾åé¨ã®ã¢ããªã±ã¼ã·ã§ã³ç¨å®ç¾©
|
---|
906 | sys_config.h ã·ã¹ãã ä¾åé¨ã®æ§æå®ç¾©
|
---|
907 | sys_config.c ã·ã¹ãã ä¾åé¨ã®é¢æ°
|
---|
908 | sys_support.S ã·ã¹ãã ä¾åé¨ã®ãµãã«ã¼ãã³
|
---|
909 | sys_rename.def ã«ã¼ãã«ã®å
|
---|
910 | é¨èå¥åã®ãªãã¼ã å®ç¾©
|
---|
911 | sys_rename.h ã«ã¼ãã«ã®å
|
---|
912 | é¨èå¥åã®ãªãã¼ã
|
---|
913 | sys_unrename.h ã«ã¼ãã«ã®å
|
---|
914 | é¨èå¥åã®ãªãã¼ã è§£é¤
|
---|
915 | sys_tool_config.h éçºç°å¢ä¾åé¨ã®ã·ã¹ãã ä¾å鍿§æå®ç¾©
|
---|
916 | ï¼GNUéçºç°å¢ç¨ï¼
|
---|
917 | hw_timer.h ã¿ã¤ãæä½ã«ã¼ãã³
|
---|
918 | hw_serial.h SIOãã©ã¤ã
|
---|
919 | hw_serial.cfg SIOãã©ã¤ãã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«
|
---|
920 | vr4131.h VR4131ã®ãã¼ãã¦ã§ã¢å®ç¾©
|
---|
921 | vr4131_sil.h VR4131ã®ãã¼ãã¦ã§ã¢ã¢ã¯ã»ã¹ç¨ã·ã¹ãã
|
---|
922 | ã¤ã³ã¿ãã§ã¼ã¹ã¬ã¤ã¤ã¼å®ç¾©
|
---|
923 | vr4131_icu.h VR4131å
|
---|
924 | èµå²è¾¼ã¿ã³ã³ããã¼ã«ã¦ãããICUç¨
|
---|
925 | å²è¾¼ã¿é¢é£ã®å®ç¾©
|
---|
926 | vr4131_dsiu.h VR4131å
|
---|
927 | èµãã£ãã°ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ã¦ããã
|
---|
928 | DSICç¨ ç°¡æSIOãã©ã¤ãé¢é£ã®å®ç¾©
|
---|
929 | vr4131_dsiu.c VR4131å
|
---|
930 | èµãã£ãã°ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ã¦ããã
|
---|
931 | DSICç¨ ç°¡æSIOãã©ã¤ã
|
---|
932 | vr4131_rtc.h VR4131å
|
---|
933 | èµãªã¢ã«ã¿ã¤ã ã¯ããã¯ã¦ãããRTCç¨
|
---|
934 | ã¿ã¤ããã©ã¤ãé¢é£ã®å®ç¾©
|
---|
935 | kz_vr4131pci_01.h KZ-Vr4131PCI-01ãã¼ãã®ãã¼ãã¦ã§ã¢å®ç¾©
|
---|
936 | vr4131_elf.ld ãªã³ã«ã¹ã¯ãªãã(ROM åç¨)
|
---|
937 | vr4131_elf_gdb.ld ãªã³ã«ã¹ã¯ãªãã(GDB ã¹ã¿ãç¨)
|
---|
938 |
|
---|
939 | ï¼ä»¥ä¸ãVR5500æè¼ã¿ã¼ã²ãããã¼ãRTE-VR5500-CBåãï¼
|
---|
940 | pdic/simple_sio
|
---|
941 | tl16pir552.h TI社TL16PIR552ç¨ ç°¡æSIOãã©ã¤ãé¢é£ã®å®ç¾©
|
---|
942 | tl16pir552.c TI社TL16PIR552ç¨ ç°¡æSIOãã©ã¤ã
|
---|
943 | (ã¿ã¼ã²ãããã¼ãRTE-VR5500-CBæè¼ã®ã·ãªã¢ã«
|
---|
944 | ã³ã³ããã¼ã©)
|
---|
945 |
|
---|
946 | 6.2 ãã®ä»
|
---|
947 |
|
---|
948 | MIPS ã¢ã¼ããã¯ãã£ãæ¡ç¨ããããã»ããµã®ç¨®é¡ã¯ãé常ã«å¤ãã§ãããã®ä¸ã§ã
|
---|
949 | æã
|
---|
950 | éçºè
|
---|
951 | å´ã®ã¿ã¼ã²ããç°å¢ã®åé¡ãããä»åã®å®è£
|
---|
952 | 㯠VR4131ãVR5500 ã¨ãã
|
---|
953 | ç¹å®ã®ããã»ããµã®ã¿ã®ãµãã¼ãã¨ãªã£ã¦ãã¾ãã
|
---|
954 |
|
---|
955 | ããã§ããããã®ãé常ã«å¤å²ã«æ¸¡ã£ã¦ããããã»ããµã®åä½ãã¹ãã«ååãã¦
|
---|
956 | ããã ããæ¹ãåéãã¦ããã¾ãã
|
---|
957 |
|
---|
958 | æ¯éãä¸è¨ã¸ã¨ãé£çµ¡ãã ããããå¾
|
---|
959 | ã¡ãã¦ããã¾ãã
|
---|
960 |
|
---|
961 | âTOPPERSããã¸ã§ã¯ã ã¡ã¼ãªã³ã°ãªã¹ã TOPPERS-USER
|
---|
962 |
|
---|
963 | âå®®åçç£æ¥æè¡ç·åã»ã³ã¿ã¼ æ©æ¢°é»åæ
|
---|
964 | å ±æè¡é¨ æ
|
---|
965 | å ±æè¡éçºç
|
---|
966 | TEL : 022-377-8700ãe-mail : micom@mit.pref.miyagi.jp
|
---|
967 |
|
---|
968 |
|
---|
969 | ï¼ï¼ã«ã¼ãã«ç§»æ¤è
|
---|
970 | ã¸ã®æ
|
---|
971 | å ±
|
---|
972 |
|
---|
973 | ããããã¯ãä»åã®MIPSã¢ã¼ããã¯ãã£ã¸ã®å®è£
|
---|
974 | ããä»åå®è£
|
---|
975 | ãè¡ã£ãã¿ã¼ã²ãã
|
---|
976 | ããã»ããµä»¥å¤ã®MIPSã¢ã¼ããã¯ãã£ããã»ããµã¸ã¨ç§»æ¤ããããã®æ
|
---|
977 | å ±ã«ã¤ãã¦
|
---|
978 | ã¾ã¨ããã
|
---|
979 |
|
---|
980 | 7.1 å²è¾¼ã¿ã³ã³ããã¼ã©ICUã¨CPUã¨ã®ã¤ã³ã¿ãã§ã¼ã¹ã«ã¤ãã¦
|
---|
981 |
|
---|
982 | MIPS3å
|
---|
983 | ±éé¨ã§ã¯ãå²è¾¼ã¿ã¨CPUä¾å¤ã¾ã§ã®åå²ã¯è¡ããã¾ããCPUä¾å¤ã«ãããå¦
|
---|
984 | çã¯è¡ããããããå²è¾¼ã¿è¦å ã«å¯¾ããåå²ã¯è¡ããªããããã¯ãMIPS3ã«æ¥ç¶ã
|
---|
985 | ããå²è¾¼ã¿ã³ã³ããã¼ã©ãç¹å®ã§ããªããã¨ã¨ããã®å¤æ§æ§ãé常ã«å¤§ãããã
|
---|
986 | ã§ããã
|
---|
987 | (cpu_support.S)
|
---|
988 |
|
---|
989 | ããã§ã以ä¸ã«ããã®åå²ã®ããã®ã¤ã³ã¿ãã§ã¼ã¹ãªãã³ã«ããã®ä»ã®ã¨ããã§
|
---|
990 | 使ããªããã°ãªããªããã¯ããªã©ãã¾ã¨ããã
|
---|
991 | (cpu_support.S ; proc_interrupt以ä¸)
|
---|
992 |
|
---|
993 | ã»å²è¾¼ã¿è¦å å¤å¥é¢ä¿
|
---|
994 |
|
---|
995 | (1)å²è¾¼ã¿è¦å çªå·
|
---|
996 | å²è¾¼ã¿è¦å ã夿å¾ã«ãå²è¾¼ã¿ãã³ãã©ãå¼ã³åºãããã®å¼æ°ã¨ãªãçªå·ã
|
---|
997 | 0 ã 7ã¯ãMIPS3å
|
---|
998 | ±éé¨ã«ãã㦠INTNO_IP0 ã INTNO_IP7 ã¨ãã¦å®ç¾©ãã¦ããã
|
---|
999 | (mips3.h)
|
---|
1000 | ããã§ãã·ã¹ãã ä¾åé¨ã§ã¯ã8çªä»¥éãå®ç¾©ããã
|
---|
1001 |
|
---|
1002 | (2)PUSH_ICU_IPM å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ã®å¾
|
---|
1003 | é¿
|
---|
1004 |
|
---|
1005 | ãæ©è½ã
|
---|
1006 | å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ããã¹ã¿ãã¯ã¸ä¿åããã
|
---|
1007 | ã¢ã»ã³ãã©ã§æ¸ãããã¯ãã¨ãã¦å®ç¾©ããcpu_support.Så
|
---|
1008 | ã§ä½¿ç¨ããã
|
---|
1009 | å¤é¨ã«å²è¾¼ã¿ã³ã³ããã¼ã©ãå©ç¨ããªãã·ã¹ãã ã§ã¯ã空ã§å®ç¾©ãããã¨ã
|
---|
1010 |
|
---|
1011 | (3)POP_ICU_IPM å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ã®å¾©å
|
---|
1012 |
|
---|
1013 |
|
---|
1014 | ãæ©è½ã
|
---|
1015 | å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ããã¹ã¿ãã¯ãã復å
|
---|
1016 | ããã
|
---|
1017 | ã¢ã»ã³ãã©ã§æ¸ãããã¯ãã¨ãã¦å®ç¾©ããcpu_support.Så
|
---|
1018 | ã§ä½¿ç¨ããã
|
---|
1019 | å¤é¨ã«å²è¾¼ã¿ã³ã³ããã¼ã©ãå©ç¨ããªãã·ã¹ãã ã§ã¯ã空ã§å®ç¾©ãããã¨ã
|
---|
1020 |
|
---|
1021 | (4)PROC_INTERRUPT_SYS ã¾ã㯠proc_interrupt_sys
|
---|
1022 | å²è¾¼ã¿è¦å ã«å¯¾ããåãã³ãã©ã¸ã®åå²å¦ç
|
---|
1023 |
|
---|
1024 | ãæ©è½ã
|
---|
1025 | å²è¾¼ã¿è¦å ã夿ããé©åãªå²è¾¼ã¿ãã³ãã©ãå¼ã³åºãã
|
---|
1026 | å®è£
|
---|
1027 | æ¹æ³ã¯ããã¯ãï¼PROC_INTERRUPT_SYSï¼ã¾ãã¯ã颿°å¼åºï¼proc_interrupt_sysï¼
|
---|
1028 | ã§è¡ããã¨ã¨ããã
|
---|
1029 | å
|
---|
1030 | ·ä½çã«ã¯ã以ä¸ã®ãããªããã»ã¹ã§å®è£
|
---|
1031 | ãããã¨ã«ãªãã
|
---|
1032 | 1. å²è¾¼ã¿è¦å ã®å¤å¥
|
---|
1033 | 2. å²è¾¼ã¿ãã¹ã¯ï¼ã³ã¢ãå²è¾¼ã¿ã³ã³ããã¼ã©ï¼ã®è¨å®
|
---|
1034 | 3. å²è¾¼ã¿è¨±å¯
|
---|
1035 | 4. ï¼£è¨èªã«ã¼ãã³ã®å¼åº
|
---|
1036 | 5. å²è¾¼ã¿ç¦æ¢
|
---|
1037 | 6. å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿è¦æ±ã®ã¯ãªã¢
|
---|
1038 | (7. join_interrupt_and_exceptionã«æ»ãã; 颿°å¼åºã®å ´å)
|
---|
1039 | å¼åºæã®å¼æ°ã¨ãã¦ã¯ãa1ã¬ã¸ã¹ã¿ã«ã¯å²è¾¼ã¿è¦æ±æã®ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã®å¤
|
---|
1040 | ããã¾ããa2ã¬ã¸ã¹ã¿ã«ã¯åå ã¬ã¸ã¹ã¿ã®å¤ã代å
|
---|
1041 | ¥ããã¦ããã®ã§ãããããå©
|
---|
1042 | ç¨ãããã¨ãã§ããã
|
---|
1043 |
|
---|
1044 | ãåèã
|
---|
1045 | ã»å®è£
|
---|
1046 | ã«ããã¦ã¯ãraã¬ã¸ã¹ã¿ã¯ç ´å£ãã¦ã¯ãªããªãã
|
---|
1047 | ã»å®è¡é度ãªã©ã®è¦³ç¹ããããã¯ãå®ç¾©ãåªå
|
---|
1048 | ããã
|
---|
1049 | ã»è©³ããã¯ãä¸è¨ã7.2 å²è¾¼ã¿ãã³ãã©ã®å¼åºå¦çã®å®è£
|
---|
1050 | ä¾ããåç
|
---|
1051 | §ã
|
---|
1052 |
|
---|
1053 | ã»å²è¾¼ã¿ãã¹ã¯ï¼å²è¾¼ã¿åªå
|
---|
1054 | å¶å¾¡é¢ä¿
|
---|
1055 |
|
---|
1056 | (1)ICU_IPMå
|
---|
1057 | å²è¾¼ã¿ã³ã³ããã¼ã©ã«ã¤ãã¦ã®ãå²è¾¼ã¿ãã¹ã¯ãæ±ãããã®åã§ããã
|
---|
1058 |
|
---|
1059 | (2)CHECK_ICU_IPM ICUã®å²è¾¼ã¿ãã¹ã¯IPMã®ãã§ãã¯ã«ã¼ãã³
|
---|
1060 |
|
---|
1061 | ãCè¨èªAPIã
|
---|
1062 | CHECK_ICU_IPM(ICU_IPM p);
|
---|
1063 |
|
---|
1064 | ããã©ã¡ã¼ã¿ã
|
---|
1065 | ICU_IPM p ãã§ãã¯ãã¹ã ICU_IPM ã®å¤
|
---|
1066 |
|
---|
1067 | ãæ©è½ã
|
---|
1068 | å²è¾¼ã¿ãã¹ã¯ p ããæ³å®ããã¦ããç¯å²ã«ãããã©ããããã§ãã¯ããã
|
---|
1069 | Cè¨èªã§å©ç¨ããããã¯ãã¨ãã¦å®ç¾©ãããCHECK_IPM ããå¼ã³åºãããã
|
---|
1070 | (pic_icu.h, vr4131_icu.h)
|
---|
1071 |
|
---|
1072 | (3)icu_set_ipm å²ãè¾¼ã¿ã³ã³ããã¼ã©ã®ãã¹ã¯è¨å®
|
---|
1073 |
|
---|
1074 | ãCè¨èªAPIã
|
---|
1075 | icu_set_ipm(ICU_IPM *icu_ipm);
|
---|
1076 |
|
---|
1077 | ããã©ã¡ã¼ã¿ã
|
---|
1078 | ICU_IPM icu_ipm è¨å®ãã¹ã ICU_IPM ã®å¤
|
---|
1079 |
|
---|
1080 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
1081 | ãªã
|
---|
1082 |
|
---|
1083 | ãæ©è½ã
|
---|
1084 | å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ããicu_ipmã«è¨å®ããã
|
---|
1085 | (pic_icu.h, vr4131_icu.h)
|
---|
1086 |
|
---|
1087 | (4)icu_get_ipm å²ãè¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯åå¾
|
---|
1088 |
|
---|
1089 | ãCè¨èªAPIã
|
---|
1090 | icu_get_ipm(ICU_IPM *icu_ipm);
|
---|
1091 |
|
---|
1092 | ããã©ã¡ã¼ã¿ã
|
---|
1093 | ãªã
|
---|
1094 |
|
---|
1095 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
1096 | ICU_IPM icu_ipm ç¾å¨ã® ICU_IPM ã®å¤
|
---|
1097 |
|
---|
1098 | ãæ©è½ã
|
---|
1099 | å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ãåå¾ããicu_ipmã¸ä¿åããã
|
---|
1100 | (pic_icu.h, vr4131_icu.h)
|
---|
1101 |
|
---|
1102 | (5)icu_set_ilv å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ãã¼ãã«
|
---|
1103 | ã®è¨å®
|
---|
1104 |
|
---|
1105 | ãCè¨èªAPIã
|
---|
1106 | icu_set_ilv(INTNO intno, ICU_IPM *icu_ipm);
|
---|
1107 |
|
---|
1108 | ããã©ã¡ã¼ã¿ã
|
---|
1109 | INTNO intno å²è¾¼ã¿ãã¹ã¯ãã¼ãã«ã®ã¤ã³ããã¯ã¹
|
---|
1110 | ICU_IPM icu_ipm è¨å®ããå²è¾¼ã¿ãã¹ã¯ã®å¤
|
---|
1111 |
|
---|
1112 | ãæ©è½ã
|
---|
1113 | å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ãã¼ãã«ã®ãintnoçªã«å²è¾¼ã¿ãã¹ã¯icu_ipm
|
---|
1114 | ãè¨å®ãããall_set_ilvããå¼ã³åºãããã
|
---|
1115 | (pic_icu.h, vr4131_icu.h)
|
---|
1116 |
|
---|
1117 | 7.2 å²è¾¼ã¿ãã³ãã©ã®å¼åºå¦çã®å®è£
|
---|
1118 | ä¾
|
---|
1119 |
|
---|
1120 | ä¸è¨ã¤ã³ã¿ãã§ã¼ã¹ã«åºã¥ããPROC_INTERRUPT_SYSã¾ãã¯proc_interrupt_sys
|
---|
1121 | ã®å®è£
|
---|
1122 | ä¾ã«ã¤ãã¦èª¬æãããã
|
---|
1123 |
|
---|
1124 | ãªããä»åã®å®è£
|
---|
1125 | ã«ããã¦ã¯ãå®è£
|
---|
1126 | ä¾ã¨ãã¦VR5500ã§ã¯proc_interrupt_sys颿°
|
---|
1127 | ããVR4131ã§ã¯PROC_INTERRUPT_SYSãã¯ããå®ç¾©ãã¦ããã
|
---|
1128 | (sys_support.S:VR5500, vr4131_icu.h:VR4131)
|
---|
1129 |
|
---|
1130 | ä»åã®å®è£
|
---|
1131 | ã«ããã¦ã¯ãã¿ã¼ã²ãããã¼ãã®å²è¾¼ã¿ã³ã³ããã¼ã©ã®ä»æ§ãè¸ã¾ãã
|
---|
1132 | è¥å¹²ã®æ±ç¨æ§ãæãããå½¢ã§å®è£
|
---|
1133 | ãè¡ã£ã¦ããã
|
---|
1134 |
|
---|
1135 | åã
|
---|
1136 | ã®å¦çã«ã¤ãã¦ã³ã¡ã³ãããã¦ããã
|
---|
1137 |
|
---|
1138 | 1. å²è¾¼ã¿è¦å ã®å¤å¥
|
---|
1139 |
|
---|
1140 | å²è¾¼ã¿è¦å ã®å¤å¥ã¯ã
|
---|
1141 | ï¼ï¼MIPS3ã³ã¢å
|
---|
1142 | é¨ã®Causeã¬ã¸ã¹ã¿ã«åºã¥ãåå²
|
---|
1143 | ï¼ï¼å²è¾¼ã¿ã³ã³ããã¼ã©ã«åºã¥ãåå²
|
---|
1144 | ã®2段éã§ã®åå²å¤æãè¡ã£ã¦ããããã®ãã¡ãå²è¾¼ã¿ã³ã³ããã¼ã©ã«ã¤ãã¦
|
---|
1145 | ã®åå²ã¯è¥å¹²ã®æ±ç¨æ§ãæãããããã«ãé度ã¨ã®ãã¬ã¼ããªããèæ
|
---|
1146 | ®ãã¦ã
|
---|
1147 | PROC_INT(0:4)ãã¯ããå®ç¾©ãããããªå®è£
|
---|
1148 | ãè¡ã£ã¦ããã
|
---|
1149 | ä»åã®å®è£
|
---|
1150 | ã§ã¯ãPROC_INT0ã®ã¿ãå©ç¨ãããã¨ã¨ãã¦ãå²è¾¼ã¿ã³ã³ããã¼ã©
|
---|
1151 | ã«é¢ããããããã¡ã¤ã«ï¼VR5500ã§ã¯ pic_icu.hãVR4131ã§ã¯ vr4131_icu.hï¼
|
---|
1152 | ã«ã¦å®ç¾©ããã¦ããããªãããã®ãã¯ãã«ããã¦ã¯ãå²è¾¼ã¿è¦å çªå·ãt0ã¬ã¸ã¹
|
---|
1153 | ã«ãå²è¾¼ã¿è¦æ±ã®ã¯ãªã¢ã®ããã®å®æ°ãt1ã¬ã¸ã¹ã¿ã«ä»£å
|
---|
1154 | ¥ããã¦æ»ãã
|
---|
1155 |
|
---|
1156 | (ããã«ãMIPS3ã³ã¢ã®å²è¾¼ã¿è¦æ±ãã¯ãªã¢ããããã®å¦çãå®è£
|
---|
1157 | ããã¦ããã
|
---|
1158 | å
|
---|
1159 | ·ä½çã«ã¯ãCauseã¬ã¸ã¹ã¿ã®ã¯ãªã¢ãè¡ã£ã¦ããã)
|
---|
1160 |
|
---|
1161 | 2. å²è¾¼ã¿ãã¹ã¯ï¼ã³ã¢ãå²è¾¼ã¿ã³ã³ããã¼ã©ï¼ã®è¨å®
|
---|
1162 |
|
---|
1163 | å²è¾¼ã¿ãã¹ã¯ã®è¨å®ã«ããã¦ã¯ãSET_ICU_IPMãã¯ããå®ç¾©ããæ±ç¨æ§ãæã
|
---|
1164 | ãã¦ããããã®ãã¯ãã®å®ç¾©ã¯ãå²è¾¼ã¿ã³ã³ããã¼ã©ã«é¢ããããããã¡ã¤ã«
|
---|
1165 | ï¼VR5500ã§ã¯ pic_icu.hãVR4131ã§ã¯ vr4131_icu.hï¼ã«ã¦å®ç¾©ããã¦ããã
|
---|
1166 |
|
---|
1167 | 3. å²è¾¼ã¿è¨±å¯
|
---|
1168 |
|
---|
1169 | int_tableã®intmaskè¦ç´ ãããMIPS3ã³ã¢ã¸ã®å²è¾¼ã¿ãã¹ã¯ãåå¾ãããã®å¤ã
|
---|
1170 | ã»ãããããã¨ã§å²è¾¼ã¿è¨±å¯ããã¦ããã
|
---|
1171 |
|
---|
1172 | 4. ï¼£è¨èªã«ã¼ãã³ã®å¼åº
|
---|
1173 |
|
---|
1174 | t0ã¬ã¸ã¹ã¿ã«ä¿åããã¦ããå²è¾¼ã¿è¦å çªå·ãç¨ãã¦ãint_tableããå²è¾¼ã¿
|
---|
1175 | ãã³ãã©ã®ã¢ãã¬ã¹ãåå¾ãã¦ãå²è¾¼ã¿ãã³ãã©ãå¼ã³åºãã¦ããã
|
---|
1176 |
|
---|
1177 | 5. å²è¾¼ã¿ç¦æ¢
|
---|
1178 |
|
---|
1179 | å²è¾¼ã¿ç¦æ¢ã¯ãStatusã¬ã¸ã¹ã¿ã®IEããããCPUããã¯ç¶æ
|
---|
1180 | ã®å¤æã«å©ç¨ãã¦
|
---|
1181 | ããããã«ãæä½ãããã¨ãã§ããªãã®ã§ãåãStatusã¬ã¸ã¹ã¿ã®EXLããã
|
---|
1182 | ãæä½ãããã¨ã§ãå®ç¾ãã¦ããã
|
---|
1183 |
|
---|
1184 | 6. å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿è¦æ±ã®ã¯ãªã¢
|
---|
1185 |
|
---|
1186 | ãã®å¦çã¯ãå²è¾¼ã¿ãã³ãã©ã§è¡ããã¨ã§å¯¾å¿ããã®ã§ãå®è£
|
---|
1187 | ãã¦ããªãã
|
---|
1188 |
|
---|
1189 | 以ä¸ã®ãããªå®è£
|
---|
1190 | ãè¡ã£ã¦ããããä»åã®proc_interrupt_sysã®å®è£
|
---|
1191 | ãå©ç¨ãã¦
|
---|
1192 | ä»ã®ã¿ã¼ã²ããã¸ã®ãã¼ãã£ã³ã°ãè¡ãå ´åã®ã¤ã³ã¿ãã§ã¼ã¹ã以ä¸ã«ã¾ã¨ããã
|
---|
1193 |
|
---|
1194 | (1) PROC_INT0 å²è¾¼ã¿è¦å ã®å¤æ
|
---|
1195 |
|
---|
1196 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
1197 | t0 å²è¾¼ã¿è¦å çªå·
|
---|
1198 | t1 å²è¾¼ã¿è¦æ±ã¯ãªã¢ã®ããã®å®æ°
|
---|
1199 |
|
---|
1200 | ãæ©è½ã
|
---|
1201 | MIPS3ã³ã¢ã®å²è¾¼ã¿è¦å IP2ã®è¦æ±ã«å¯¾å¿ããå²è¾¼ã¿ã³ã³ããã¼ã©ã®ãå²è¾¼ã¿è¦å ã
|
---|
1202 | 夿ãããå²è¾¼ã¿è¦å ã夿å¾ã«ãt0ã«å²è¾¼ã¿è¦å çªå·ããt1ã«MIPS3ã³ã¢ç¨ã®å²
|
---|
1203 | è¾¼ã¿è¦æ±ã¯ãªã¢ã®ããã®å®æ°å
|
---|
1204 | ¥ãã¦ãproc_ICU_IPMã«é£ã¶ã
|
---|
1205 | ã¢ã»ã³ãã©ã§æ¸ãããã¯ãã¨ãã¦å®ç¾©ããsys_support.S å
|
---|
1206 | ã§ä½¿ç¨ããã
|
---|
1207 |
|
---|
1208 | (2) PROC_INT1 å²è¾¼ã¿è¦å ã®å¤æ
|
---|
1209 |
|
---|
1210 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
1211 | t0 å²è¾¼ã¿è¦å çªå·
|
---|
1212 | t1 å²è¾¼ã¿è¦æ±ã¯ãªã¢ã®ããã®å®æ°
|
---|
1213 |
|
---|
1214 | ãæ©è½ã
|
---|
1215 | å²è¾¼ã¿è¦å IP3ã«å¯¾å¿ããå ´åã以ä¸ãPROC_INT0ã¨åæ§ã
|
---|
1216 | ã¢ã»ã³ãã©ã§æ¸ãããã¯ãã¨ãã¦å®ç¾©ããsys_support.S å
|
---|
1217 | ã§ä½¿ç¨ããã
|
---|
1218 |
|
---|
1219 | (3) PROC_INT2 å²è¾¼ã¿è¦å ã®å¤æ
|
---|
1220 |
|
---|
1221 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
1222 | t0 å²è¾¼ã¿è¦å çªå·
|
---|
1223 | t1 å²è¾¼ã¿è¦æ±ã¯ãªã¢ã®ããã®å®æ°
|
---|
1224 |
|
---|
1225 | ãæ©è½ã
|
---|
1226 | å²è¾¼ã¿è¦å IP4ã«å¯¾å¿ããå ´åã以ä¸ãPROC_INT0ã¨åæ§ã
|
---|
1227 | ã¢ã»ã³ãã©ã§æ¸ãããã¯ãã¨ãã¦å®ç¾©ããsys_support.S å
|
---|
1228 | ã§ä½¿ç¨ããã
|
---|
1229 |
|
---|
1230 | (4) PROC_INT3 å²è¾¼ã¿è¦å ã®å¤æ
|
---|
1231 |
|
---|
1232 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
1233 | t0 å²è¾¼ã¿è¦å çªå·
|
---|
1234 | t1 å²è¾¼ã¿è¦æ±ã¯ãªã¢ã®ããã®å®æ°
|
---|
1235 |
|
---|
1236 | ãæ©è½ã
|
---|
1237 | å²è¾¼ã¿è¦å IP5ã«å¯¾å¿ããå ´åã以ä¸ãPROC_INT0ã¨åæ§ã
|
---|
1238 | ã¢ã»ã³ãã©ã§æ¸ãããã¯ãã¨ãã¦å®ç¾©ããsys_support.S å
|
---|
1239 | ã§ä½¿ç¨ããã
|
---|
1240 |
|
---|
1241 | (5) PROC_INT4 å²è¾¼ã¿è¦å ã®å¤æ
|
---|
1242 |
|
---|
1243 | ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã
|
---|
1244 | t0 å²è¾¼ã¿è¦å çªå·
|
---|
1245 | t1 å²è¾¼ã¿è¦æ±ã¯ãªã¢ã®ããã®å®æ°
|
---|
1246 |
|
---|
1247 | ãæ©è½ã
|
---|
1248 | å²è¾¼ã¿è¦å IP6ã«å¯¾å¿ããå ´åã以ä¸ãPROC_INT0ã¨åæ§ã
|
---|
1249 | ã¢ã»ã³ãã©ã§æ¸ãããã¯ãã¨ãã¦å®ç¾©ããsys_support.S å
|
---|
1250 | ã§ä½¿ç¨ããã
|
---|
1251 |
|
---|
1252 | (6)SET_ICU_IPM å²è¾¼ã¿ã³ã³ããã¼ã©ä¾åã®ãã¹ã¯è¨å®
|
---|
1253 |
|
---|
1254 | ãæ©è½ã
|
---|
1255 | å²è¾¼ã¿ã³ã³ããã¼ã©ã®å²è¾¼ã¿ãã¹ã¯ãè¨å®ããã
|
---|
1256 | ã¢ã»ã³ãã©ã§æ¸ãããã¯ãã¨ãã¦å®ç¾©ããsys_support.S å
|
---|
1257 | ã§ä½¿ç¨ããã
|
---|
1258 |
|
---|
1259 | ãåèã
|
---|
1260 | ãã®ãã¯ããå®ç¾©ããã¨ãã«ã¯ãt0ã¬ã¸ã¹ã¿ã¨t1ã¬ã¸ã¹ã¿ãç ´å£ãã¦ã¯ãªããªãã
|
---|
1261 | t0ã«ã¯ãå²è¾¼ã¿è¦å çªå·ãå
|
---|
1262 | ¥ã£ã¦ãããt1ã«ã¯ãå²è¾¼ã¿è¦æ±ã¯ãªã¢ã®å®æ°ãå
|
---|
1263 | ¥ã£
|
---|
1264 | ã¦ããã
|
---|
1265 |
|
---|
1266 | 7.3 ãã®ä»
|
---|
1267 |
|
---|
1268 | ä¸è¨ã«ãã«ã¼ãã«ç§»æ¤ã«ã¯å¿
|
---|
1269 | è¦ã¯ç¡ãããç§»æ¤æã«åèã¨ãªããããªãã¯ããªã©ã
|
---|
1270 | 説æããã
|
---|
1271 |
|
---|
1272 | (1)CHECK_IPM å²è¾¼ã¿ãã¹ã¯ã®ãã§ãã¯ãã¯ã
|
---|
1273 |
|
---|
1274 | ãCè¨èªAPIã
|
---|
1275 | CHECK_IPM(IPM p);
|
---|
1276 |
|
---|
1277 | ããã©ã¡ã¼ã¿ã
|
---|
1278 | IPM p ãã§ãã¯ãã¹ã IPM ã®å¤
|
---|
1279 |
|
---|
1280 | ãæ©è½ã
|
---|
1281 | å²è¾¼ã¿ãã¹ã¯ p ããæ³å®ããã¦ããç¯å²ã«ãããã©ããããã§ãã¯ããã
|
---|
1282 | Cè¨èªã§å©ç¨ããããã¯ãã¨ãã¦å®ç¾©ãããxxx_ipm å
|
---|
1283 | ã§å¼ã³åºãããã
|
---|
1284 | (cpu_config.h)
|
---|
1285 |
|
---|
1286 |
|
---|
1287 | 夿´å±¥æ´
|
---|
1288 |
|
---|
1289 | 2003å¹´12æ24æ¥ãJSPã«ã¼ãã« Release1.4 å¯¾å¿ (MIPS3çã®ãµãã¼ããéå§)
|
---|
1290 | 2004å¹´ 2æ18æ¥ã誤æ¤ä¿®æ£ã2.3.3ä¿®æ£ã7.3追å
|
---|
1291 | 2004å¹´ 3æ31æ¥ã3.4ä¿®æ£ããï¼ï¼å¶éäºé
|
---|
1292 | ãä¿®æ£
|
---|
1293 | 2004å¹´ 8æ 9æ¥ã誤æ¤ä¿®æ£
|
---|