source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/mips3/mips3.h@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 9.0 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2000-2003 by Industrial Technology Institute,
9 * Miyagi Prefectural Government, JAPAN
10 *
11 * 上記著作権者
12は,以下の (1)〜(4) の条件か,Free Software Foundation
13 * によってå…
14¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
15 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
16 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
17å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
18 * 利用と呼ぶ)することを無償で許諾する.
19 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21 * スコード中に含まれていること.
22 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23 * 用できる形で再é…
24å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
25å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
26 * 者
27マニュアルなど)に,上記の著作権表示,この利用条件および下記
28 * の無保証規定を掲載すること.
29 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30 * 用できない形で再é…
31å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
32 * と.
33 * (a) 再é…
34å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
35マニュアルなど)に,上記の著
36 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
37 * (b) 再é…
38å¸ƒã®å½¢æ…
39‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
40 * 報告すること.
41 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
42 * 害からも,上記著作権者
43およびTOPPERSプロジェクトをå…
44è²¬ã™ã‚‹ã“と.
45 *
46 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
47お
48 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
49 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
50 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
51 */
52
53#ifndef _MIPS3_H_
54#define _MIPS3_H_
55
56#include <util.h>
57
58/*
59 * MIPS3 用定義
60 */
61
62/* CPUコアの内
63部レジスタの名称 */
64#define zero $0 /* 常時ゼロ */
65#define at $1 /* アセンブラのテンポラリ */
66#define v0 $2 /* 関数の戻り値 */
67#define v1 $3
68#define a0 $4 /* 関数の引数 */
69#define a1 $5
70#define a2 $6
71#define a3 $7
72#define t0 $8 /* テンポラリレジスタ tx (x=0-9):関数呼び出しで破壊 */
73#define t1 $9
74#define t2 $10
75#define t3 $11
76#define t4 $12
77#define t5 $13
78#define t6 $14
79#define t7 $15
80#define s0 $16 /* sx (x=0-7) : 関数呼び出しで不変なレジスタ */
81#define s1 $17
82#define s2 $18
83#define s3 $19
84#define s4 $20
85#define s5 $21
86#define s6 $22
87#define s7 $23
88#define t8 $24 /* テンポラリレジスタ tx (x=0-9):関数呼び出しで破壊 */
89#define t9 $25
90#define k0 $26 /* OS用に予約済み */
91#define kt0 $26
92#define k1 $27
93#define kt1 $27
94#define gp $28 /* 大域変数領域のベースアドレス */
95#define sp $29 /* スタックポインタ */
96#define fp $30 /* フレームポインタ */
97/* もしくは */
98#define s8 $30 /* s8 : 関数呼び出しで不変なレジスタ */
99#define ra $31 /* 関数からの戻りアドレス */
100
101/* CP0の内
102部レジスタの名称 */
103#define Index $0
104#define Random $1
105#define EntryLo0 $2
106#define EntryLo1 $3
107#define Context $4
108#define PageMask $5
109#define Wired $6
110#define Error $7
111#define BadVAddr $8
112#define Count $9
113#define EntryHi $10
114#define Compare $11
115#define Status $12
116#define Cause $13
117#define EPC $14
118#define PRId $15
119#define Config $16
120#define LLAddr $17
121#define WatchLo $18
122#define WatchHi $19
123#define XContext $20
124/* $21-$24 - 予約 */
125#define Performance $25
126#define ParityErr $26
127#define CacheErr $27
128#define TagLo $28
129#define TagHi $29
130#define ErrorEPC $30
131/* $31 - 予約 */
132
133/* インラインアセンブラ内
134で使う場合の定義 */
135#define str_k0 "$26"
136#define str_Status "$12"
137
138/* ステータスレジスタ関係 */
139#define SR_IE BIT0 /* IEビット */
140#define SR_EXL BIT1 /* EXLビット */
141#define SR_ERL BIT2 /* ERLビット */
142
143#define SR_EXL_IE (SR_EXL | SR_IE) /* EXL,IEビット */
144#define SR_ERL_EXL (SR_ERL | SR_EXL) /* ERL,EXLビット */
145#define SR_ERL_EXL_IE (SR_ERL_EXL | SR_IE) /* ERL,EXL,IEビット */
146#define SR_IM 0xff00 /* IMビットを取り出すマスク */
147
148#define SR_UX BIT5 /* UXビット */
149#define SR_SX BIT6 /* SXビット */
150#define SR_KX BIT7 /* SXビット */
151#define SR_DE BIT16 /* DEビット */
152#define SR_SR BIT20 /* SRビット */
153#define SR_BEV BIT22 /* BEVビット */
154#define SR_RE BIT25 /* REビット */
155#define SR_CU0 BIT28 /* CU0ビット */
156#define SR_CU1 BIT29 /* CU1ビット */
157#define SR_CU2 BIT30 /* CU2ビット */
158#define SR_XX BIT31 /* XXビット */
159
160/* 原因レジスタ関係 */
161#define Cause_IP0 BIT8 /* IP0ビット */
162#define Cause_IP1 BIT9 /* IP1ビット */
163#define Cause_IP2 BIT10 /* IP2ビット */
164#define Cause_IP3 BIT11 /* IP3ビット */
165#define Cause_IP4 BIT12 /* IP4ビット */
166#define Cause_IP5 BIT13 /* IP5ビット */
167#define Cause_IP6 BIT14 /* IP6ビット */
168#define Cause_IP7 BIT15 /* IP7ビット */
169
170/* 外部割り込みに対するIPビットの別名 */
171#define Cause_Int0 Cause_IP2 /* Int0要求ビット */
172#define Cause_Int1 Cause_IP3 /* Int1要求ビット */
173#define Cause_Int2 Cause_IP4 /* Int2要求ビット */
174#define Cause_Int3 Cause_IP5 /* Int3要求ビット */
175#define Cause_Int4 Cause_IP6 /* Int4要求ビット */
176
177/* 原因レジスタから原因コードを取り出すマスク */
178#define ExcCode_mask 0x7c
179
180/* 例外コード */
181#define Int 0 /* 割り込み例外 */
182#define Mod 1 /* TLB変更例外 */
183#define TLBL 2 /* TLB不一致例外 (ロードまたは命令フェッチ) */
184#define TLBS 3 /* TLB不一致例外 (ストア) */
185#define AdEL 4 /* アドレスエラー例外 (ロードまたは命令フェッチ) */
186#define AdES 5 /* アドレスエラー例外 (ストア) */
187#define IBE 6 /* バスエラー例外 (命令フェッチ) */
188#define DBE 7 /* バスエラー例外 (データのロードまたはストア) */
189#define Sys 8 /* システムコール例外 */
190#define Bp 9 /* ブレイクポイント例外 */
191#define RI 10 /* 予約命令例外 */
192#define CpU 11 /* コプロセッサ使用不可例外 */
193#define Ov 12 /* 演算オーバーフロー例外 */
194#define Tr 13 /* トラップ例外 */
195/* 14 - 予約 */
196#define FPE 15 /* 浮動小数点例外 */
197/* 16-22 - 予約 */
198#define WATCH 23 /* ウォッチ例外 */
199/* 24-31 - 予約 */
200
201/* 割込み要因番号 */
202#define INTNO_IP0 0
203#define INTNO_IP1 1
204#define INTNO_IP2 2
205#define INTNO_IP3 3
206#define INTNO_IP4 4
207#define INTNO_IP5 5
208#define INTNO_IP6 6
209#define INTNO_IP7 7
210
211/* コアの割込みの本数(ソフトウェア割込みを含む) */
212#define TMAX_CORE_INTNO 8
213
214/*
215 * MIPS3コアのステータスレジスタに設定可能な最高割込み許可ビットパターン
216 */
217#define MAX_IPM 0xff
218
219/*
220 * MIPS3コアに設定する割込みマスクのチェック
221 */
222#define CHECK_CORE_IPM(ipm) CHECK_PAR(0 <= (ipm) && (ipm) <= MAX_IPM)
223
224/*
225 * CPU例外の種類数
226 */
227#define TMAX_CORE_EXCNO 32u
228
229/*
230 * ログ出力時のスタック構造の定義
231 * cpu_config.hにおけるcpu_experr関数、cpu_support.Sを参ç…
232§ã®ã“と。
233 */
234#ifndef _MACRO_ONLY
235
236typedef struct exc_stack {
237
238 /* レジスタ群の定義 */
239 UW sp;
240 UW at;
241 UW v0;
242 UW v1;
243 UW a0;
244 UW a1;
245 UW a2;
246 UW a3;
247 UW t0;
248 UW t1;
249 UW t2;
250 UW t3;
251 UW t4;
252 UW t5;
253 UW t6;
254 UW t7;
255 UW t8;
256 UW t9;
257 UW gp;
258 UW fp;
259 UW ra;
260
261 UW CP0_Status;
262 UW CP0_EPC;
263
264 UW hi;
265 UW lo;
266
267} EXCSTACK;
268
269#endif /* _MACRO_ONLY */
270
271#endif /* _MIPS3_H_ */
Note: See TracBrowser for help on using the repository browser.