source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/powerpc32/mpc860t/sys_config.h@ 26

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

initial

File size: 24.5 KB
RevLine 
[26]1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2001-2004 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 * @(#) $Id: sys_config.h,v 1.2 2004/10/07 17:10:56 honda Exp $
53 */
54
55/*
56 * ターゲットシステム依存モジュール(MPC860T TB6102S用)
57 *     カーネル内
58部で使用する定義
59 *      データ型、マクロ、関数のプロトタイプ宣言
60 *
61 * このインクルードファイルは,t_config.h のみからインクルードされる.
62 * 他のファイルから直接インクルードしてはならない.
63 */
64
65#ifndef _SYS_CONFIG_H_
66#define _SYS_CONFIG_H_
67
68/*
69 * ユーザー定義情
70å ±
71 */
72#include <user_config.h>
73
74/*
75 * カーネルの内
76部識別名のリネーム
77 */
78#include <sys_rename.h>
79
80/*
81 * ターゲットシステムのハードウェア資源の定義
82 */
83#include <tb6102s.h>
84#include <mpc860t.h>
85
86
87/*
88 * 起動メッセージのターゲットシステム名
89 */
90#define TARGET_NAME "TANBAC TB6102S CompactPCI CPU Board"
91
92/*
93 * 微少時間待
94ちのための定義
95 */
96#ifdef DOWNLOAD_TO_RAM /* デバッグ用 */
97
98#define SIL_DLY_TIM1 1425
99#define SIL_DLY_TIM2 350
100
101#else /* DOWNLOAD_TO_RAM */ /* ROM化 */
102
103#define SIL_DLY_TIM1 3445
104#define SIL_DLY_TIM2 867
105
106#endif /* DOWNLOAD_TO_RAM */
107
108#ifndef _MACRO_ONLY
109
110/*
111 * ターゲットシステム依存の初期化
112 */
113extern void sys_initialize(void);
114
115/*
116 * ターゲットシステムの終了
117 *
118 * システムを終了する時に使う.
119 *  ROMモニタ/GDB STUB呼出しは未実装
120
121 */
122extern void sys_exit(void);
123
124/*
125 * ターゲットシステムの文字出力
126 *
127 * システムの低レベルの文字出力ルーチン.
128 *  ROMモニタ/GDB STUB呼出しは未実装
129
130 */
131extern void sys_putc(char c) throw();
132
133#endif /* _MACRO_ONLY */
134
135/*
136 *  CPMへの割込み要求のクリア
137 *   CPM割込みインサービスレジスタCISRの該当ビットに1をセットすると
138 *   クリアされる。
139 */
140#define CLEAR_IRQ_TO_ICU(device) \
141 mpc860_wrw_mem(CISR, CISR_BIT(device))
142
143
144/*
145 *  登録されていないSIU割込みにおける引数設定
146 *   初段の割込みと多重割込みで、spの取り出し方が異なる
147 */
148#define SET_NO_REG_SIU_INTERRUPT_ARG_FROM_TASK \
149 lwz r4, 0(sp) /* 割込みスタックからspを復å…
150ƒ */
151
152#define SET_NO_REG_SIU_INTERRUPT_ARG_FROM_INT \
153 addi r4, sp, 8 /* sp+8 */
154
155/*
156 *  登録されていないCPM割込みにおける引数設定
157 *   初段の割込みと多重割込みで、spの取り出し方が異なる
158 */
159#define SET_NO_REG_CPM_INTERRUPT_ARG_FROM_TASK \
160 lwz r4, 8(sp) /* 割込みスタックからspを復å…
161ƒ */
162
163#define SET_NO_REG_CPM_INTERRUPT_ARG_FROM_INT \
164 addi r4, sp, 16 /* sp+16 */
165
166
167#ifndef _MACRO_ONLY
168/*
169 * 登録されていない割込み発生時のログ出力
170 *   マクロPROC_ICUの中で呼び出される。
171 * 関数名や引数の型はプロセッサ毎に決めて良い。
172 *
173 * MPC860では割込みコントローラがカスケード接続されているため、
174 *   各割込みコントローラに専用の関数を用意した。
175 *
176 */
177
178/* SIU割込み(CPM割込み以外) */
179extern void no_reg_SIU_interrupt(INHNO intno, UW *sp);
180
181/* CPM割込み */
182extern void no_reg_CPM_interrupt(INHNO intno, UW *sp);
183
184#endif /* _MACRO_ONLY */
185
186#define EXCEPTION_VECTOR_START_SRC 0x10000100
187#define EXCEPTION_VECTOR_END_SRC 0x10002000
188#define EXCEPTION_VECTOR_START_DST 0x100
189
190
191
192/* -------------------------------------------------------------- */
193/*
194 * PowerPCå…
195±é€šéƒ¨ã¨ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®å®šç¾©
196 */
197
198/*
199 * MSRの初期値
200 */
201#define INIT_MSR 0
202
203/*
204 * 割込み処理のICU依存部分
205 *  処理内
206容
207 *   ・割込み要因の判別
208 *   ・割込みマスクの設定
209 *   ・割込み許可
210 *   ・C言語ルーチン呼び出し
211 *   ・割込み禁止
212 *   ・(必
213要であれば)割り込み要求フラグのクリア
214 *  
215 *  引数
216 *   label:ラベル識別用文字列
217 *       (複数箇所でこのマクロを使用できるようにするため)
218 *  
219 *
220 *  MPC860の割込みアーキテクチャは
221 *   ・システム・インターフェース・ユニットSIU
222 *   ・通信プロセッサモジュールCPM
223 *  の2階層になっている
224 *  
225 *   MPC860ではシステムインターフェースユニットSIUの割込みマスク
226 *   (SIU割込みマスクレジスタSIMASK)のみをカーネルで管理する。
227 *   通信プロセッサモジュールCPMの割込みマスクの管理はすべて
228 *   ハードウェアが行っている。
229 *  
230 *  CPM割込みコントローラ(ハードウェア)の動作
231 *    割込みが発生すると
232 *     ・割込み保留レジスタCIPRの該当ビットの該当ビットをセット
233 *     ・発生した割込みの優å…
234ˆåº¦ã‚’
235 *       ・割込みマスクレジスタCIMR
236 *       ・インサービスレジスタCISR
237 *       と比較してからSIUに通知
238 *    コアがベクタレジスタCIVRのIACKビットをセットすると
239 *     ・SIUへの割込み要求をクリア
240 *     ・ベクタレジスタCIVRにベクタ番号をセット
241 *     ・ベクタレジスタCIVRのIACKビットをクリア
242 *     ・割込み保留レジスタCIPRの該当ビットをクリア
243 *     ・インサービスレジスタCISRの該当ビットをセット
244 *       以後、これより下位の割込みをマスクする
245 *         →CPMについてはソフトウェアによるマスク操作の必
246要なし
247 *     
248 *  CPM割込みに関しては、SIUのIPMに一括して同じ値を設定する
249 *     
250 *  
251 *  レジスタ割り当て:
252 *   SPRG1:擬似ベクタテーブルのå…
253ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹int_table
254 *   SPRG3:IPMテーブルのå…
255ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ipm_table
256 *   r0:値0
257 *   r3:内
258部レジスタ領域のå…
259ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹
260 *   r4:割込みベクタ番号×4
261 *  
262 */
263#define _PROC_ICU(label) \
264 /* SIUの割込み要因判別 */ \
265 lis r3, IMMR_UPPER_2BYTE; /* 内
266部レジスタ領域のå…
267ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ */ \
268 /* ベクタ番号の読み出し */ \
269 /* SIVECレジスタには"ベクタ番号×4"が格納されている */ \
270 lbz r4, TADR_SIU_SIVEC(r3); /* r4←ベクタ番号×4 */ \
271 \
272 /* 割込みマスクの設定 */ \
273 /*  SIU割込み:割込み要因毎の値をIPMに設定する */ \
274 /*  CPM割込み:一括して同じ値をSIUのIPMに設定する */ \
275 mfspr r5, SPRG3; /* r5←ipm_table */ \
276 srwi r6, r4, 1; /* r6←r4>>1(割込み番号×2倍) */ \
277 lhzx r7, r5, r6; /* r7:割込みマスク */ \
278 /* 現在の割込みマスクを確認して、 */ \
279 /* å…
280ƒã€…
281、許可されていない割込みは許可しないようにする */ \
282 lhz r8, TADR_SIU_SIMASK(r3); \
283 and r9, r8, r7; \
284 sth r9, TADR_SIU_SIMASK(r3);/* 割込みマスク設定 */ \
285 \
286 /* CPM割込みならば分岐 */ \
287 cmpwi crf0, r4, INHNO_CPM*4; \
288 beq label##_CPM_INTERRUPT; \
289 \
290 /* SIU割込み(CPM割込み以外)の場合 */ \
291 /* (SIUに直接、接続されているデバイスからの割込みの場合) */ \
292 mfspr r8, SPRG1; /* r8←SPRG1:int_table */ \
293 /* r4:割込み番号×4 */ \
294 lwzx r9, r8, r4; /* r9:C言語ルーチンのå…
295ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ */ \
296 mtctr r9; /* CTR←r9 */ \
297 mfmsr r10; \
298 ori r11, r10, MSR_EE; /* EEビットをセット */ \
299 mtmsr r11; /* 割込み許可 */ \
300 cmpwi crf0, r9, 0; /* 割込みハンドラが登録されているか */ \
301 beq label##_call_no_reg_SIU_interrupt; /* チェック */ \
302 bctrl; /* C言語ルーチン呼び出し */ \
303 mfmsr r10; \
304 xori r11, r10, MSR_EE; /* EEビットをクリア */ \
305 mtmsr r11; /* 割込み禁止 */ \
306 b label##_exit;/* PROC_ICUマクロの出口へジャンプ */ \
307 \
308 /* \
309   *  SIU割込み(CPM割込み以外)で割込みハンドラが \
310   *  登録されていない場合 \
311   */ \
312label##_call_no_reg_SIU_interrupt:; \
313 srwi r3, r4, 2; /* r3←割込み番号 */ \
314 SET_NO_REG_SIU_INTERRUPT_ARG_##label; \
315 LI32(r9, no_reg_SIU_interrupt); \
316 mtctr r9; /* CTR←r9 */ \
317 bctr; \
318 /* ここには戻ってこない */ \
319 \
320 /* \
321   *  CPM割込みで割込みハンドラが \
322   *  登録されていない場合 \
323   */ \
324label##_call_no_reg_CPM_interrupt:; \
325 srwi r3, r4, 2; /* r3←割込み番号 */ \
326 SET_NO_REG_CPM_INTERRUPT_ARG_##label; \
327 LI32(r9, no_reg_CPM_interrupt); \
328 mtctr r9; /* CTR←r9 */ \
329 bctr; \
330 /* ここには戻ってこない */ \
331 \
332 \
333 /* CPM割込みの場合 */ \
334 /*   SIUのIPMは設定済み */ \
335 /*   CPMのIPM設定はハードウェアが行う */ \
336label##_CPM_INTERRUPT:; \
337 /* CIVRレジスタのIACKビットをセット */ \
338 li r5, TA_CPM_CIVR_IACK; \
339 sth r5, TADR_CPM_CIVR(r3); \
340 /* CPM割込みベクタ番号読み出し */ \
341 /* 割込みベクタレジスタCIVRにはベクタ番号が */ \
342 /* 11ビット左シフトされた状æ…
343‹ã§æ ¼ç´ã•ã‚Œã¦ã„ã‚‹ */ \
344 lhz r6, TADR_CPM_CIVR(r3); /* r6←ベクタ番号<<11 */ \
345 srwi r4, r6, 9; /* r4←r6>>9(割込み番号×4倍) */ \
346 stwu r4, -STACK_MARGIN(sp); /* ベクタ番号を保存 */ \
347 /* spを8バイトずらすのは、C言語ルーチンが */ \
348 /* sp+4番地に書き込みを行うため */ \
349 /* CPMローカルのベクタ番号をSIUå…
350¨ä½“のベクタ番号に変換 */ \
351 addi r5, r4, TMAX_SIU_INTNO*4; \
352 mfspr r8, SPRG1; /* r8←SPRG1:int_table */ \
353 /* r4:割込み番号×4 */ \
354 lwzx r9, r8, r5; /* r9:C言語ルーチンのå…
355ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ */ \
356 mtctr r9; /* CTR←r9 */ \
357 mfmsr r10; \
358 ori r11, r10, MSR_EE; /* EEビットをセット */ \
359 mtmsr r11; /* 割込み許可 */ \
360 cmpwi crf0, r9, 0; /* 割込みハンドラが登録されているか */ \
361 beq label##_call_no_reg_CPM_interrupt; /* チェック */ \
362 bctrl; /* C言語ルーチン呼び出し */ \
363 mfmsr r10; \
364 xori r11, r10, MSR_EE; /* EEビットをクリア */ \
365 mtmsr r11; /* 割込み禁止 */ \
366 /* インサービスレジスタCISRの該当ビットをクリア */ \
367 /* (1を書き込むとクリアされる) */ \
368 lwz r4, 0(sp); /* ベクタ番号×4を読み出し */ \
369 addi sp, sp, STACK_MARGIN; \
370 srwi r5, r4, 2; /* r5←r4>>2(割込み番号) */ \
371 li r6, 1; \
372 slw r7, r6, r5; /* r7←1<<(割込み番号) */ \
373 lis r3, IMMR_UPPER_2BYTE; /* 内
374部レジスタ領域のå…
375ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ */ \
376 stw r7, TADR_CPM_CISR(r3); \
377label##_exit: /* PROC_ICUの出口ラベル */
378
379/* マクロ引数labelを確実に展開するため、マクロを2重にしている */
380#define PROC_ICU(label) _PROC_ICU(label)
381
382
383/*
384 * 割り込みコントローラのマスクIPM関連の定義
385 *   MPC860ではシステムインターフェースユニットSIUの割込みマスク
386 *   (SIU割込みマスクレジスタSIMASK)のみカーネルで管理する。
387 *   通信プロセッサモジュールCPMの割込みマスクの管理はすべてハード
388 *   ウェアが行っている。
389 */
390
391/* IPMの待
392避 */
393#define PUSH_ICU_IPM \
394 lis r4, IMMR_UPPER_2BYTE; \
395 lhz r5, TADR_SIU_SIMASK(r4); \
396 sthu r5, -4(sp)
397 /* ストアとspの更新が1命令で実行される */
398 /* 保存するデータは2バイトであるが、 */
399 /* spを4バイト境界に維持するため、オフセットを-4としている */
400
401/* IPMの復å…
402ƒ */
403#define POP_ICU_IPM \
404 lhz r4, 0(sp); \
405 lis r5, IMMR_UPPER_2BYTE; \
406 addi sp, sp, 4; /* 上記参ç…
407§ */ \
408 sth r4, TADR_SIU_SIMASK(r5)
409
410
411#ifdef SUPPORT_CHG_IPM
412/*
413 * ICUに設定するIPMパラメータのチェック
414 *
415 * C言語の
416 *  if (ipmの値が不正) {
417 * ercd = E_PAR;
418 * goto exit;
419 * }
420 * と同等の処理を行うマクロ
421 */
422#define CHECK_IPM(ipm)
423 /* MPC860では何もチェックしない */
424
425/*
426 * 割り込みコントローラのマスク取得
427 */
428#define GET_IPM(p_ipm) *(p_ipm) = sil_reh_mem((VP)SIMASK)
429
430/*
431 * 割り込みコントローラのマスク設定
432 */
433#define CHG_IPM(ipm) sil_wrh_mem((VP)SIMASK, ipm)
434
435#endif /* SUPPORT_CHG_IPM */
436
437
438#ifndef _MACRO_ONLY
439
440/*
441 * 割込みマスク用擬似ベクタテーブル
442 * ipm_table自体は$(CPU)とのインターフェースに含まれない
443 *   (define_ipmにより、隠蔽されている)
444 */
445extern IPM ipm_table[];
446
447/*
448 * 割り込みレベルの設定
449 * 割込み番号inhnoの割込みを受け付けたときに割込みコントローラの
450 * IPMに設定する値を定義する。
451 * デバイスドライバの初期化処理で使用されることを想定している。
452 *
453 *   引数
454 *    inhno:割込みハンドラ番号
455 *    ipm:割込みマスク
456 *
457 */
458Inline void
459define_ipm(INHNO inhno, IPM ipm)
460{
461 ipm_table[inhno] = ipm;
462}
463
464#endif /* _MACRO_ONLY */
465
466/*
467 * 省電力モードへの移行と割込み許可
468 *  実行すべきタスクがなくて割込み待
469ちになるときに
470 *  ディスパッチャの中で使用される。
471 *
472 *  ・割込みから戻ってきた後に割込み禁止も行う
473 *  ・r0〜r4の内
474容を破壊してはならない
475 *  
476 *  MCP860ではドーズ・ロー・モードを用いる
477 *  
478 *  レジスタ割り当て
479 *   r0:値0
480 *   r5:内
481部レジスタのå…
482ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹
483 *   r6:ロック・キーワード0x55ccaa33
484 */
485#define SAVE_POWPER \
486 lis r5, IMMR_UPPER_2BYTE; \
487 LI32(r6, UNLOCK_KEY); \
488 stw r6, TADR_SCCRK(r5); /* SCCRアンロック */ \
489 \
490 /* CRQEN=1:CPが動作するとき、ドーズ・ハイ・モードへ */ \
491 /* PRQEN=1:割込み要求でノーマル・ハイ・モードへ */ \
492 lwz r7, TADR_SCCR(r5); \
493 oris r7, r7, (SCCR_CRQEN | SCCR_PRQEN)>>16; \
494 stw r7, TADR_SCCR(r5); \
495 \
496 stw r0, TADR_SCCRK(r5); /* SCCRロック */ \
497 \
498 stw r6, TADR_PLPRCRK(r5); /* PLPRCアンロック */ \
499 \
500 /* PLPRCR */ \
501 /* TMIST=0:割込みソースをクリアしても */ \
502 /* ドーズ・ロー・モードに戻らない */ \
503 lwz r8, TADR_PLPRCR(r5); \
504 ori r8, r8, PLPRCR_TIMIST; \
505 xori r8, r8, PLPRCR_TIMIST; \
506 stw r8, TADR_PLPRCR(r5); \
507 \
508 /* ドーズ・ロー・モードに遷移するための値設定 */ \
509 /* CSRC=1: */ \
510 /* LPM=01: */ \
511 ori r8, r8, (PLPRCR_CSRC | PLPRCR_LPM); \
512 xori r8, r8, PLPRCR_LPM10; \
513 stw r8, TADR_PLPRCR(r5); \
514 \
515 stw r0, TADR_PLPRCRK(r5); /* PLPRCロック */ \
516 \
517 /* 割込み許可とドーズ・ロー・モードへの移行 */ \
518 mfmsr r9; \
519 ori r9, r9, MSR_EE; /* EEビットセット */ \
520 oris r9, r9, MSR_POW>>16; /* POWビットセット */ \
521 mtmsr r9; \
522 /* ここで割込みがå…
523¥ã‚‹ï¼ˆãƒ‰ãƒ¼ã‚ºãƒ»ãƒ­ãƒ¼ãƒ»ãƒ¢ãƒ¼ãƒ‰ã§å¾…
524つ) */ \
525 /*  割込みから戻ったときはr9もå…
526ƒã®å€¤ã«ãªã£ã¦ã„ã‚‹ */ \
527 \
528 /* 割込み禁止 */ \
529 xori r9, r9, MSR_EE; /* EEビットクリア */ \
530 xoris r9, r9, MSR_POW>>16; /* POWビットクリア */ \
531 mtmsr r9
532
533
534/*
535 * インプリメンテーション固有の例外0x01000の処理内
536容を定義したマクロ
537 *  
538 * マクロIMPLEMENT_EXCEPTION_01000が定義されている場合のみ有効となる。
539 * 処理内
540容はプロセッサのインプリメンテーション固有のものなので、
541 * カーネルによる出å…
542¥å£å‡¦ç†ã¯æŒ¿å…
543¥ã•ã‚Œãšã€ã“のマクロで定義した処理内
544容が
545 * 直接呼び出される。(つまり、カーネルの管理外扱い)
546 * そのため、この処理中でカーネルの機能を呼び出した場合の動作は未定義で
547 * ある。
548 *  
549 * オフセット0x01000以降にé…
550ç½®ã•ã‚Œã‚‹ä¾‹å¤–要因は1つとは限らない。2つ以上
551 * の例外ベクタがé…
552ç½®ã•ã‚Œã‚‹å ´åˆã€ã‚ªãƒ•ã‚»ãƒƒãƒˆã®æŒ‡å®šæ–¹æ³•ã«æ³¨æ„ã™ã‚‹ã“と。
553 *  å…
554·ä½“的には
555 * .org オフセット - EXCEPTION_VECTOR_BASE
556 * のように指定する。詳しくはcpu_support.Sの該当個所を参ç…
557§ã€‚
558 *  
559 */
560#define MAKE_EXCEPTION_VECTOR(offset, name) \
561 .org offset - EXCEPTION_VECTOR_BASE; \
562name:; \
563 MAKE_EXCEPTION_ENTRY(offset)
564
565
566#define IMPLEMENT_EXCEPTION_01000_PROC \
567software_emulation:; \
568 MAKE_EXCEPTION_ENTRY(0x1000); \
569 \
570MAKE_EXCEPTION_VECTOR(0x1100, instruction_TLB_miss); \
571MAKE_EXCEPTION_VECTOR(0x1200, data_TLB_miss); \
572MAKE_EXCEPTION_VECTOR(0x1300, instruction_TLB_error); \
573MAKE_EXCEPTION_VECTOR(0x1400, data_TLB_error); \
574MAKE_EXCEPTION_VECTOR(0x1c00, data_break_point); \
575MAKE_EXCEPTION_VECTOR(0x1d00, instruction_break_point); \
576MAKE_EXCEPTION_VECTOR(0x1e00, peripheral_break_point); \
577MAKE_EXCEPTION_VECTOR(0x1f00, non_maskable_developement_port)
578
579
580#endif /* _SYS_CONFIG_H_ */
581
582/* end of file */
Note: See TracBrowser for help on using the repository browser.